|
|
|
| У меня есть архив сообщений. Мне бы хотелось на главной странице выводить свежие новости, т.е. за СЕГОДНЯ и ВЧЕРА. С сегодняшним числом нет проблем, а вот как сделать выборку по дате "вчера"?
Как из "даты на текущий момент" вычесть 1 день? | |
|
|
|
|
|
|
|
для: Stasycat
(24.06.2008 в 09:11)
| | Уже сделала сама. Вот:
$data_last_y = date("Y");
$data_last_m = date("m");
$data_last_d = date("d")-1;
$data_last = ("$data_last_y-$data_last_m-$data_last_d");
|
| |
|
|
|
|
|
|
|
для: Stasycat
(24.06.2008 в 09:38)
| | В первых числах месяца такой финт не пройдет.
Если Вы готовите дату для MySQL, лучше написать прямо
SELECT ..... WHERE DATE(`dt`) = DATE( NOW() - INTERVAL 1 DAY )
|
| |
|
|
|
|
|
|
|
для: Trianon
(24.06.2008 в 09:55)
| | У меня такой фотмат не прокатывает.
Во-первых date просит, а не DATE. А во-вторых - это что за INTERVAL, где про него почитать можно? | |
|
|
|
|
|
|
|
для: Stasycat
(24.06.2008 в 14:20)
| | [поправлено модератором] | |
|
|
|
|
|
|
|
для: AcidTrash
(24.06.2008 в 14:23)
| | [поправлено модератором] | |
|
|
|
|
|
|
|
для: Stasycat
(24.06.2008 в 15:21)
| | Глаза раскройте
http://dev.mysql.com/doc/
Найдете и на русском, правда архив скачать надо.
А так можно и учебник по MYSQL купить.
Например http://softtime.ru/sql/?id_article=104 | |
|
|
|
|
|
|
|
для: AcidTrash
(24.06.2008 в 15:30)
| | [поправлено модератором] | |
|
|
|
|
|
|
|
|
для: Stasycat
(24.06.2008 в 16:51)
| | [поправлено модератором] | |
|
|
|
|
|
|
|
для: AcidTrash
(24.06.2008 в 17:02)
| | [поправлено модератором] | |
|
|
|
|
|
|
|
для: Stasycat
(24.06.2008 в 17:19)
| | для начала, покажите структуру таблицы...
а заодно и запрос, который выводит данные "за сегодня". Я так понимаю, с ним у Вас проблем нет. | |
|
|
|
|
|
|
|
для: Trianon
(24.06.2008 в 17:29)
| |
<p><br />СЕГОДНЯ:
<?php
print "<form action='vnutr_zayavki_open.php' method='get'>";
$data_now = date("Y-m-d");
$query_t = "select * from vnutr_zayavki";
$result_t = mysql_query($query_t) or die($query_t);
while ($row_t = mysql_fetch_array($result_t))
{
if ($row_t["data_vnutr_zayavki"]==$data_now)
{
$n_vnutr_zayavki = $row_t["n_vnutr_zayavki"];
$password=$row_t["password_vnutr"];
if ($n_vnutr_zayavki!=$n_vnutr_zayavki_vyvod)
{
$n_vnutr_zayavki_vyvod=$n_vnutr_zayavki;
$obekt_id=$row_t["id_obekta"];
$query_o = "select * from obekty";
$result_o = mysql_query($query_o) or die($query_o);
while ($row_o = mysql_fetch_array($result_o))
{
if ($row_o["id_obekta"]==$obekt_id){$nazv_obekta=$row_o["poln_nazv_org"];}
}
print "<a href=http://www.root5.ru/vnutr/vnutr_zayavki_open.php?n_zayavki=$n_vnutr_zayavki&password=$password>
заявка № $n_vnutr_zayavki_vyvod ($nazv_obekta)</a><br />";
}
}
}
print "<a href=http://www.root5.ru/vnutr/vnutr_zayavki_new.php?data=$data_now> добавить </a><br />";
print "</form>";
?>
</p>
|
| |
|
|
|
|
|
|
|
для: Stasycat
(24.06.2008 в 17:31)
| | Если Вам абсолютно всё равно, как будет достигнут результат ( а автору этого скрипта именно так и было), то проще всего добавить зависимость от дня - так:
Вот эту строку $data_now = date("Y-m-d"); поменять на
$days = -2;
$data_now = date("Y-m-d", time() + $days * 24 * 3600);
|
в данном случае -2 будет означать запрос заявок двухсуточной давности.
[поправлено модератором] | |
|
|
|
|
|
|
|
для: Trianon
(24.06.2008 в 17:57)
| | 2-ухдневная давность мне не нужна. Мне ВЧЕРАШНИЕ нужны, а не за вчера и сегодня.
[поправлено модератором] | |
|
|
|
|
|
|
|
для: Stasycat
(25.06.2008 в 09:12)
| | скрипт выдает данные за позавчера.
Поменяете -2 на -1 - станет выдавать за вчера.
поменяете на 0 - станет выдавать за сегодня.
Вывод сделан в результате анализа скрипта.
Скрипт этот сапрашивает у SQL-сервера все записи из таблицы vnutr_zayavki, в то время как нужны ему лишь записи за определенный день. И потом на уровне php пропускает большую часть запрошенного.
Для каждой из оставшихся записей, он формирует отдельные запросы к SQL, причем запросы совершенно одинаковые - на всю таблицу, а не на конкретный id_obekta . И получая (на каждом цикле!) полную таблицу данных, опять таки пропускает большую их часть.
Вместо всего этого безобразия почти наверняка достаточно одного запроса, что-то вроде
SELECT vz.*, o.*
FROM vnutr_zayavki AS vz
JOIN obekty AS o
ON vz.id_obekta = o.id_obekta
WHERE DATE(`data_vnutr_zayavki`) = DATE(NOW() - INTERVAL 1 DAY)
AND vz.n_vnutr_zayavki <> $n_vnutr_zayavki_vyvod
|
| |
|
|
|
|
|
|
|
для: Trianon
(25.06.2008 в 10:23)
| | Я же написала КРОМЕ ВЫБОРКИ SELECT ... WHERE ...
дело в том, что у меня не работает выборка с where, также как и UPDATE ... SET ...
Я перепробовала уже все варианты. Я не знаю, что за версия у меня такая странная. Не работает. Пишу
$query = "UPDATE zayavki SET tsena='$cost' WHERE id_zayavki='$id'";
$result = mysql_query($query) or die("Запрос ошибочный");
$query_t = "select * from zayavki WHERE id_zayavki='$id'";
$result_t = mysql_query($query_t) or die("Запрос ошибочный");
|
Не отбирает по where, как только я не меняла кавычки и скобки. Поэтому я не могу сделать короче. Ведь сама не глупая, понимаю, что так легче и проще. Но не пашет так (аж слёзы наворачиваются). Приходится выкручиваться циклами всякими.
Может, Вы сталкивались с такой же проблемой? | |
|
|
|
|
|
|
|
для: Stasycat
(25.06.2008 в 10:50)
| | И в phpMyAdmin тоже не проходят такие запросы?
Если бы Вы прикрепили архив с дампом таблицы (в phpMyAdmin его можно получить из вкладки Экспорт) , можно было бы попытаться выяснить, что за беда настигла Вашу базу. | |
|
|
|
|
 321.7 Кб |
|
|
для: Trianon
(25.06.2008 в 11:11)
| | Вот арив экспортированный из моего phpMyAdmin - 2.9.0-rc1
Если чем-то можете помочь, буду рада :-)
А то я прошлый сайт делала с выборкой всё работало, а здесь не хочет.
Но делала на другом сервере. Может в этом дело? | |
|
|
|
|
|
|
|
для: Stasycat
(26.06.2008 в 11:05)
| | Насколько я понимаю, у Вас кодировка, декларированная в БД и в таблицах, не соответствует фактической кодировке, в которой хранится в полях текст.
phpMyAdmin в них показывает форменную галиматью.
Конечно же WHERE, сравнивающие текстовые поля со строками, пропускать записи не будут.
Что вовсе не означает что WHERE не работают вообще.
Сравнение id с числом выполняется замечательно.
Вероятно, ранее Вы работали с серверами версии ниже 4.1 - там кодировки вообще никак не специфицируются. | |
|
|
|
|
 294.9 Кб |
|
|
для: Trianon
(26.06.2008 в 18:49)
| | Дамп в кодировке cp1251 с соответствующим содержимым я на всякий случай прикрепил к сообщению. | |
|
|
|
|
|
|
|
для: Stasycat
(25.06.2008 в 10:50)
| |
<?
$query = "UPDATE `zayavki` SET `tsena`='$cost' WHERE `id_zayavki`=$id";
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(24.06.2008 в 17:29)
| | Выводятся заявки, которые составили сегодня, вернее ссылки на эти заявки. | |
|
|
|