За последние 24 часа нас посетили 17756 программистов и 1676 роботов. Сейчас ищут 872 программиста ...

перезапись значения в базе данных

Тема в разделе "PHP для новичков", создана пользователем Panich, 15 ноя 2011.

  1. Panich

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

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    PHP:
    1. <?php
    2.             $toodey = date ("Ymd");
    3.             include ("bd_competition.php");
    4.             $sql13 = "SELECT 'time_comp' FROM `competition`";
    5.             $result13 = mysql_query($sql13, $db_comp) or die ("Ошибка в запросе: " . mysql_error());
    6.             if (!$result13)
    7.             {
    8.             echo "ошибка - ".mysql_error()."";
    9.             echo $sql13;
    10.             exit();
    11.             }
    12.             else
    13.             {
    14.                while($myrow13 = mysql_fetch_array($result13))
    15.                {
    16.                   if ($toodey > $myrow13['time_comp'])
    17.                   {
    18.                   $old = "old";
    19.                   $sql14 = "UPDATE `competition` SET `when` = '$old'";
    20.                   $result14 = mysql_query($sql14, $db_comp) or die ("Ошибка в запросе: " . mysql_error());
    21.                      if (!$result14)
    22.                      {
    23.                      echo "ошибка - ".mysql_error()."";
    24.                      echo $sql14;
    25.                      exit();
    26.                      }
    27.                   }
    28.                   else
    29.                   {
    30.                   $new = "new";
    31.                   $sql15 = "UPDATE `competition` SET `when` = '$new'";
    32.                   $result15 = mysql_query($sql15, $db_comp) or die ("Ошибка в запросе: " . mysql_error());
    33.                      if (!$result15)
    34.                      {
    35.                      echo "ошибка - ".mysql_error()."";
    36.                      echo $sql15;
    37.                      exit();
    38.                      }
    39.                   }
    40.                }
    41.             }
    42.             ?>
    У меня переменная time_comp имеет несколько значений: 20111231,20111231,20111101
    Согласно кода,как мне кажется,при выборке этой переменной из базы и сравнении с сегодняшней датой первые два значения должны быть new, а последний old...но все они new!
    Прошу указать на ошибку!Заранее благодарен!
     
  2. Panich

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

    С нами с:
    10 май 2011
    Сообщения:
    548
    Симпатии:
    0
    Адрес:
    Ростов-Москва
    Может,что неправильно или непонятно пояснил?
     
  3. vladislav19923

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

    С нами с:
    20 сен 2011
    Сообщения:
    13
    Симпатии:
    0
    То есть вы хотите чтобы в базе автоматически появлялось более новое значение?
     
  4. vladislav19923

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

    С нами с:
    20 сен 2011
    Сообщения:
    13
    Симпатии:
    0
    А зачем вам и if и die сразу? Это практически тоже самое.
    PHP:
    1.  
    2. $result13 = mysql_query($sql13, $db_comp) or die ("Ошибка в запросе: " . mysql_error());
    3.              if (!$result13)
    4.              {
    5.              echo "ошибка - ".mysql_error()."";
    6.              echo $sql13;
    7.              exit();
    8.              }
    9.              else
    10.              {
     
  5. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Бред какой-то. UPDATE-запрос без WHERE, естественно, обновит все данные, а не только некоторые.
    Нафига перебирать в цикле и для каждой строки апдейтить всю таблицу?

    Напиши так

    [sql]UPDATE `competition` SET `when` = 'old' WHERE DATE_FORMAT(NOW(), "%Y%m%d") > `time_comp`;
    UPDATE `competition` SET `when` = 'new' WHERE DATE_FORMAT(NOW(), "%Y%m%d") < `time_comp`;[/sql]

    И всё, никаких циклов там не надо.