За последние 24 часа нас посетили 16334 программиста и 1608 роботов. Сейчас ищут 1246 программистов ...

UPDATE не правильно работает

Тема в разделе "PHP и базы данных", создана пользователем moroz, 20 сен 2012.

  1. moroz

    moroz Активный пользователь

    С нами с:
    13 дек 2010
    Сообщения:
    33
    Симпатии:
    0
    Есть запрос
    Код (Text):
    1.  
    2.  
    3. $s1 ="SELECT nakop,date FROM tab WHERE date>$enddate  ORDER BY s_id,date ";
    4.  $s = mysql_query($s1) or die ('Нет связи с сервером. ' .mysql_error());while($val = mysql_fetch_array($sbt));
    5. while($val = mysql_fetch_array($s))
    6.   {
    7.     .........
    8.      $n=$n=+$val['nakop'];
    9.      $s = mysql_query(" UPDATE tab SET  nakop='$n' WHERE date>$enddate  ");
    10.     ........
    11.  }
    Мне надо в цикле заменить в запросе поле nakop на накопительные данные ,сформированные в переменной $n для всех строк,у которых дата больше выбранной даты $enddate (из первого запроса)

    спасибо.
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Ну вынеси
    из цикла и потом апдейть.
    А что ты пытаешься сделать этим?
    Тут нет ничего лишнего? :)
     
  3. moroz

    moroz Активный пользователь

    С нами с:
    13 дек 2010
    Сообщения:
    33
    Симпатии:
    0
    1) лишнее есть по оплошности-упрощала запрос,вот и осталось
    Код (Text):
    1.  
    2. $n=0;
    3. $s1 ="SELECT ar,nakop,date FROM tab WHERE date>$enddate ORDER BY s_id,date ";
    4.  $s = mysql_query($s1) or die ('Нет связи с сервером. ' .mysql_error());
    5.         while($val = mysql_fetch_array($s));
    6.  {
    7.  .........
    8.  $n=$n+$val['ar''];
    9.  $s = mysql_query(" UPDATE tab SET nakop='$n' WHERE date>$enddate ");
    10.  ........
    11.  }
    Из цикла ЗАМЕНУ не могу вынести,т.к. я формирую за каждый день больший выбранной даты переменную $n,а потом меняю в этой же таблице поле nakop на эту переменную $n
     
  4. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Что-то не вижу логики :)

    Этим ты выбираешь поля со странным названием nakop для всех строк у которых дата больше выбранной даты $enddate.
    Затем ты в цикле суммируешь значения nakop

    Затем ты говоришь что надо
    И почему ты считаешь что если вынести $s = mysql_query(" UPDATE tab SET nakop='$n' WHERE date>$enddate ");
    будет не то что ты хочешь?