Код: PHP: <?php $toodey = date ("Ymd"); include ("bd_competition.php"); $sql13 = "SELECT UNIX_TIMESTAMP('date') AS 'time_comp' FROM `competition`"; $result13 = mysql_query($sql13, $db_comp) or die ("Ошибка в запросе: " . mysql_error()); if (!$result13) { echo "ошибка - ".mysql_error()."<br>"; echo $sql13; exit(); } $myrow13 = mysql_fetch_array($result13); $time_comp = $myrow13['time_comp']; echo $time_comp; ?> В поле time_comp забиты значения (2011-12-31, 2011-11-01 и т.д.(сам ручками вбивал в базу данных)),но когда пытаюсь вывести согласно вышеуказанного кода,то выводит "зироу"!Что не так,алерт,хеп!?
во-первых проверь запрос твой работает вообще или нет. в каком либо мускульном клиенте или через майадмин. а то фик знает есть у тебя поле date в таблице competition или нет. да и название поле лучше не в апострофы возьми а вот в такие кавычки ` а то у тебя получается какое то строчное значение а не название поля. во-вторых PHP: var_dump($myrow13); и посмотри как у тебя массив устроен
Когда вывожу myrow: array(2){[0]=>string(9)"time_comp"["time_comp"]=>string(9)"time_comp"} Когда в Денвере вставляю,то пред вставлением выдаёт ошибкуata truncated for column 'when' at row 1,которая переводится как:"Данные, усеченные для колонки, 'когда' в ряду 1" Что делать,как быть!?!!!
[sql]TABLE `competition` ( `id_comp` int(255) NOT NULL AUTO_INCREMENT, `for_com` varchar(30) NOT NULL, `when` varchar(5) NOT NULL, `title_comp` varchar(30) NOT NULL, `text_comp` varchar(400) NOT NULL, `time_comp` date NOT NULL, `text_winer` varchar(400) NOT NULL, `winer` varchar(30) NOT NULL, `id_winer` int(255) NOT NULL, PRIMARY KEY (`id_comp`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=22 ; -- -- Dumping data for table `competition` -- INSERT INTO `competition` (`id_comp`, `for_com`, `when`, `title_comp`, `text_comp`, `time_comp`, `text_winer`, `winer`, `id_winer`) VALUES (1, 'man', 'new', 'Самый-самый', 'Конкурс на самого симпатичного парня сайта', '2011-12-31', 'Подведём итоги прошедшего конкурса. Победителем стал самый активный и самый популярный!', 'Игорь', 0), (2, 'oll', 'new', 'История любви', 'Конкурс,на самую романтическую историю о любви', '2011-12-31', 'Не остаётся сомнений,что самая романтическая история оказалась именно эта. ', 'Ольга', 0), (7, 'woman', 'new', 'Самая-Самая', 'Размещаете свои фотографии, посетители голосуют и по результатам самая популярная будет победительницей!', '2011-12-31', 'Бесспорной победительницей оказалась:', 'Ирина', 0), (9, 'man', 'new', 'Человек-скала', 'Размещаем фотографии своих"мускулистых" особенностей и выигрываем по результатам голосования!', '2011-12-31', 'Самая большая груда мышц у:', 'Дмитрий', 0), (16, 'oll', 'new', 'Лучший отдых', 'В данном конкурсе размещаем свои фотографии с места отдыха в 2011 году и выигрываем по результатам голосования', '2011-11-01', 'Победа досталась самому весёлому и активному отдыхающему планеты!', 'Алёна', 0);[/sql]
тогда уж запрос должен быть как минимум таким PHP: $sql13 = "SELECT UNIX_TIMESTAMP(`time_comp`) AS 'time_comp' FROM `competition`";
Вытащил из базы данные как задумал:2011-12-31 Но теперь я вывожу time('Ymd') и пытаюсь сравнить вытащенную из базы переменную time_comp и сегодняшнюю дату...что прискорбно не происходит сравнение!
PHP: <?php $toodey = date ("Ymd"); include ("bd_competition.php"); $sql13 = "SELECT `time_comp` FROM competition"; $result13 = mysql_query($sql13, $db_comp) or die ("Ошибка в запросе: " . mysql_error()); if (!$result13) { echo "ошибка - ".mysql_error()."<br>"; echo $sql13; exit(); } else { while($myrow13 = mysql_fetch_array($result13)) { $time_comp = $myrow13['time_comp']; if ($toodey > $time_comp) { $old = "old"; $sql14 = "UPDATE `competition` SET `when` = '$old'"; $result14 = mysql_query($sql14, $db_comp) or die ("Ошибка в запросе: " . mysql_error()); if (!$result14) { echo "ошибка - ".mysql_error()."<br>"; echo $sql14; exit(); } } else { $new = "new"; $sql15 = "UPDATE `competition` SET `when` = '$new'"; $result15 = mysql_query($sql15, $db_comp) or die ("Ошибка в запросе: " . mysql_error()); if (!$result15) { echo "ошибка - ".mysql_error()."<br>"; echo $sql15; exit(); } } } } ?> Замысел такой:вытаскиваю дату,что в базе данных,потом беру сегодняшнюю дату и сравниваю! Если сегодняшняя дата больше чем та,что в базе,то записываем в поле when значение old,а если меньше,то new! Но везде new...
Ну во-первых PHP: $toodey = date ("Ymd"); так ты получишь строчку типа 20111117 а в базе у тебя строки типа 2011-11-17 во-вторых вот так PHP: $toodey > $time_comp ты сравниваешь строки а не даты и в-третьих насколько я понял твою задачу все можно сделать запросом в мускуль PHP: $sql_txt = "update competition set `when`= 'old' where time_comp < '".date("Y-m-d")."';"; $sql_txt = "update competition set `when`= 'new' where time_comp >= '".date("Y-m-d")."';";
Спасибо большое,разобрался: PHP: <?php include ("bd_competition.php"); $sql_comp="UPDATE competition SET `when` = 'old' where time_comp < '".date("Y-m-d")."';"; $sql_comp="UPDATE competition SET `when` = 'new' where time_comp >= '".date("Y-m-d")."';"; ?> но везде присвоило old,хотя вывожу значения time_comp в цикле и там: 1970-01-011970-01-011970-01-011970-01-011970-01-01[/u]
)))Блин!!!!!!!!!!!! Вытащил все значения и там все даты больше чем сегодняшняя,но всем присваивает old и как так может быть!?
Вставил в свой,ранее указанный пример: echo $sql14 и echo $sql15 Выводит,что всё как и должно быть вносит в базу-где должен new, вносит new, а где old,вносит old...но когда в браузере открываю phpAdmin,то в базе везде old.Как же так-на странице пишет,что всё внёс,а на самом деле нет!?
Масло-масляное, а не код. Зачем дублирование делать? Хотя бы как-то так написал: PHP: <?php $toodey = date ("Ymd"); include ("bd_competition.php"); $sql13 = "SELECT `time_comp` FROM competition"; $result13 = mysql_query($sql13, $db_comp) or die ("Ошибка в запросе: " . mysql_error()); while( $myrow13 = mysql_fetch_array($result13) ){ $time_comp = $myrow13['time_comp']; if( $toodey > $time_comp ){ $stat = "old"; } else { $stat = "new"; } $sql15 = "UPDATE `competition` SET `when` = '$stat'"; $result15 = mysql_query($sql15, $db_comp) or die ("Ошибка в запросе: " . mysql_error()); } Какой цикл? он тут не нужен. Всё делается таким кодом: PHP: <?php include ("bd_competition.php"); date_default_timezone_set('Europe/Moscow'); $today = date ("Y-m-d"); mysql_query("UPDATE `competition` SET `when`= IF(`time_comp`<'$today','old','new')") or die( mysql_error() ); Всё отлично работает, проверено на предоставленном дампе.
Mamont Как Вы писали в первом случае везде записывается old,по второму способу везде new-сам не знаю почему! Вы будете смеяться,но с этой задачей борюсь уже два дня и этой ночью(на основе вчерашнего общения)мне приснилось решения(во как заморочился!) Вот рабочий код: PHP: <?php include ("bd_competition.php"); date_default_timezone_set('Europe/Moscow'); $toodey = date ("Y-m-d"); $sql13="UPDATE `competition` SET `when` = 'old' WHERE time_comp < '".date("Y-m-d")."';"; $sql13="UPDATE `competition` SET `when` = 'new' WHERE time_comp >= '".date("Y-m-d")."';"; $result13 = mysql_query($sql13, $db_comp) or die ("Ошибка в запросе: " . mysql_error()); if (!$result13) { echo "ошибка - ".mysql_error()."<br>"; echo $sql13; exit(); } ?> Сам не знаю почему именно он заработал,но факт остается фактом!))) Спасибо всем,кто со мной мучился!Приятно,что Вы есть!