Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Упростить код

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
singmen
Отправлено: 28 Января, 2018 - 21:19:59
Post Id


Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




Здравствуйте, есть говнокод, как мне можно его упростить, чтобы не было 3 запросов...

PHP:
скопировать код в буфер обмена
  1. $ktoo2 = $MyPass['login'];
  2.  
  3. $res1 = mysql_query("SELECT summ FROM money WHERE cat = 'ub' and user = '$ktoo2'");
  4. $arr1 = array();
  5. while($row1 = mysql_fetch_assoc($res1)){
  6. $arr1[] = $row1['summ'];
  7. }
  8. $sum1 = array_sum($arr1);
  9.  
  10. $res2 = mysql_query("SELECT summ FROM money WHERE cat = 'dox' and user = '$ktoo2'");
  11. $arr2 = array();
  12. while($row2 = mysql_fetch_assoc($res2)){
  13. $arr2[] = $row2['summ'];
  14. }
  15. $sum2 = array_sum($arr2);
  16.  
  17. $res3 = mysql_query("SELECT summ FROM money WHERE cat = 'nak' and user = '$ktoo2'");
  18. $arr3 = array();
  19. while($row3 = mysql_fetch_assoc($res3)){
  20. $arr3[] = $row3['summ'];
  21. }
  22. $sum3 = array_sum($arr3);
  23.  
  24. $sum4 = $sum2-$sum3-$sum1;
  25.  
  26. echo "<h2 class=\"h2\">Всего доход за весь период ".$sum2." из них потрачено ".$sum1." и отложено ".$sum3.", остаток ".$sum4."</h2>";
 
 Top
kuller
Отправлено: 29 Января, 2018 - 00:12:31
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 561
Дата рег-ции: Нояб. 2009  


Помог: 2 раз(а)




singmen пишет:
Здравствуйте, есть говнокод, как мне можно его упростить, чтобы не было 3 запросов...

PHP:
скопировать код в буфер обмена
  1. $ktoo2 = $MyPass['login'];
  2.  
  3. $res1 = mysql_query("SELECT summ FROM money WHERE cat = 'ub' and user = '$ktoo2'");
  4. $arr1 = array();
  5. while($row1 = mysql_fetch_assoc($res1)){
  6. $arr1[] = $row1['summ'];
  7. }
  8. $sum1 = array_sum($arr1);
  9.  
  10. $res2 = mysql_query("SELECT summ FROM money WHERE cat = 'dox' and user = '$ktoo2'");
  11. $arr2 = array();
  12. while($row2 = mysql_fetch_assoc($res2)){
  13. $arr2[] = $row2['summ'];
  14. }
  15. $sum2 = array_sum($arr2);
  16.  
  17. $res3 = mysql_query("SELECT summ FROM money WHERE cat = 'nak' and user = '$ktoo2'");
  18. $arr3 = array();
  19. while($row3 = mysql_fetch_assoc($res3)){
  20. $arr3[] = $row3['summ'];
  21. }
  22. $sum3 = array_sum($arr3);
  23.  
  24. $sum4 = $sum2-$sum3-$sum1;
  25.  
  26. echo "<h2 class=\"h2\">Всего доход за весь период ".$sum2." из них потрачено ".$sum1." и отложено ".$sum3.", остаток ".$sum4."</h2>";


судя по всему передать cat. Типа этого cat=".$cat." and user = '$ktoo2'
 
 Top
singmen
Отправлено: 30 Января, 2018 - 21:37:55
Post Id


Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




kuller пишет:
singmen пишет:
Здравствуйте, есть говнокод, как мне можно его упростить, чтобы не было 3 запросов...

PHP:
скопировать код в буфер обмена
  1. $ktoo2 = $MyPass['login'];
  2.  
  3. $res1 = mysql_query("SELECT summ FROM money WHERE cat = 'ub' and user = '$ktoo2'");
  4. $arr1 = array();
  5. while($row1 = mysql_fetch_assoc($res1)){
  6. $arr1[] = $row1['summ'];
  7. }
  8. $sum1 = array_sum($arr1);
  9.  
  10. $res2 = mysql_query("SELECT summ FROM money WHERE cat = 'dox' and user = '$ktoo2'");
  11. $arr2 = array();
  12. while($row2 = mysql_fetch_assoc($res2)){
  13. $arr2[] = $row2['summ'];
  14. }
  15. $sum2 = array_sum($arr2);
  16.  
  17. $res3 = mysql_query("SELECT summ FROM money WHERE cat = 'nak' and user = '$ktoo2'");
  18. $arr3 = array();
  19. while($row3 = mysql_fetch_assoc($res3)){
  20. $arr3[] = $row3['summ'];
  21. }
  22. $sum3 = array_sum($arr3);
  23.  
  24. $sum4 = $sum2-$sum3-$sum1;
  25.  
  26. echo "<h2 class=\"h2\">Всего доход за весь период ".$sum2." из них потрачено ".$sum1." и отложено ".$sum3.", остаток ".$sum4."</h2>";


судя по всему передать cat. Типа этого cat=".$cat." and user = '$ktoo2'


а можно увидеть как оно будет выглядеть?
 
 Top
jonston
Отправлено: 31 Января, 2018 - 08:11:06
Post Id



Посетитель


Покинул форум
Сообщений всего: 455
Дата рег-ции: Март 2011  


Помог: 3 раз(а)




singmen пишет:
а можно увидеть как оно будет выглядеть?


PHP:
скопировать код в буфер обмена
  1.  
  2. function fetchSum($name, $user){
  3.     return (mysql_fetch_assoc(mysql_query("SELECT SUM(summ) as summ FROM money WHERE cat = '$name' AND user = '$user'")))['summ'];
  4. }
  5.  
  6. $user = $MyPass['login'];
  7. $sum1 = fetchSum('ub', $user);
  8. $sum2 = fetchSum('dox', $user);
  9. $sum3 = fetchSum('nak', $user);
  10.  
  11. echo "<h2 class=\"h2\">Всего доход за весь период ".$sum2." из них потрачено ".$sum1." и отложено ".$sum3.", остаток ".$sum4."</h2>";
  12.  


Делаешь обертку для получения суммы и передаешь туда переменные.Функции mysql которые используются в коде устарели.Используй PDO.


-----
$i = 0;
$i = $i++ + ++$i; ?
 
 Top
Мелкий Супермодератор
Отправлено: 31 Января, 2018 - 09:17:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT cat, SUM(summ) AS summ FROM money WHERE cat IN ('ub', 'dox','nak') AND user = ? GROUP BY cat


SELECT SUM(summ) filter(where
а, не та субд. Тогда по старинке
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT SUM(IF(cat = 'ub', summ, 0)) AS summub,
  2. SUM(IF(cat = 'dox', summ, 0)) AS summdox ,
  3. SUM(IF(cat = 'nak', summ, 0)) AS summnak  
  4. FROM money WHERE cat IN ('ub', 'dox','nak') AND user = ?


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB