Есть база со статистикой за год. Нужно выводить статистику по месяцам
Январь
Февраль
Март
.....
выборку за январь делаю таким запросом
$res = mysql_query("SELECT *, DATE_FORMAT(`data`, '%d.%m.%y ') as `formatdata` FROM stata WHERE data BETWEEN '2012-01-01' AND '2012-01-31' ORDER BY data " , $db);
за февраль соответственно меняю даты и т.д.
подскажите как сделать ссылки
<a href="stat.php?=..........">Март</a>
что бы при нажатии на Март загружалась выборка за март на этой же странице
или хотя бы ткните где почитать можно.
Спустя 18 минут (23.01.2012 - 13:58) neadekvat написал(а):
Можно проще:
Хотя синтаксис надо уточнить, давно я что-то запросы не писал.
Соответственно, в ссылке передаешь номер месяца, в скрипте проверяешь его на принадлежность промежутку 1..12, и подставляешь в запрос.
Ах да, называть поле даты "data" - моветон. Назови date. data - это "данные".
SELECT *, DATE_FORMAT(`data`, '%d.%m.%y ') as `formatdata` FROM stata WHERE MONTH(`data`) = 1 ORDER BY data
Хотя синтаксис надо уточнить, давно я что-то запросы не писал.
Соответственно, в ссылке передаешь номер месяца, в скрипте проверяешь его на принадлежность промежутку 1..12, и подставляешь в запрос.
Ах да, называть поле даты "data" - моветон. Назови date. data - это "данные".
Спустя 7 минут, 21 секунда (23.01.2012 - 14:05) GET написал(а):
<a href="stat.php?y1=2012-03-01&y1=2012-03-31">Март</a>
$res = mysql_query("SELECT *, DATE_FORMAT(`data`, '%d.%m.%y ') as `formatdata` FROM stata WHERE data BETWEEN '".$_GET['y1']."' AND '".$_GET['y2']."' ORDER BY data " , $db);
хотя это не безопасно
Спустя 2 минуты, 6 секунд (23.01.2012 - 14:08) neadekvat написал(а):
Цитата (A.B.C. @ 23.01.2012 - 15:05) |
хотя это не безопасно |
Постыдился бы такое советовать.
Спустя 5 минут, 46 секунд (23.01.2012 - 14:13) GET написал(а):
$res = mysql_query("SELECT *, DATE_FORMAT(`data`, '%d.%m.%y ') as `formatdata` FROM stata WHERE data BETWEEN '".mysql_real_escape_string($_GET['y1'])."' AND '".mysql_real_escape_string($_GET['y2'])."' ORDER BY data " , $db);
он же спросил как сделать ссылки на странице, так просто понятнее, но с mysql_real_escape_string() конечно
Спустя 5 минут, 2 секунды (23.01.2012 - 14:18) neadekvat написал(а):
Нахрена?
Тут нужна проверка на соответствие формату ГГГГ-ММ-ДД. А приведенная тобой функция для другого используется.
Тут нужна проверка на соответствие формату ГГГГ-ММ-ДД. А приведенная тобой функция для другого используется.
Спустя 14 минут, 28 секунд (23.01.2012 - 14:33) GET написал(а):
neadekvat
Цитата |
Тут нужна проверка на соответствие формату ГГГГ-ММ-ДД. А приведенная тобой функция для другого используется. |
Да, действительно

Спустя 13 минут, 59 секунд (23.01.2012 - 14:47) neadekvat написал(а):
Цитата (A.B.C. @ 23.01.2012 - 15:33) |
Да, действительноно работать будет |
А если я поменяю в адресной строке параметр y1 на "ываыва", то вроде все корректно, а работать будет неправильно.
В принипе, оно и так будет работать неверно - $_GET['y2'] не определено. Говорю по факту, перечитай тот свой пост.
Спустя 6 минут, 12 секунд (23.01.2012 - 14:53) GET написал(а):
neadekvat
Да я же согласился...что та надо проверять на корректность даты.
Но, переменные y1 и y2 в ссылках на странице прописаны намертво.
Ну изменил ты в GET их на билибирду
BETWEEN 'ваваыав' AND 'sdfdfddsf'
и не получил правильной даты...и что...ошибки критической не будет ..скрипт не остановиться, то что ты сам меняешь эти параметры это же как бы проблемы твои....все остальные будут видеть правильный результат.
Да я же согласился...что та надо проверять на корректность даты.
Но, переменные y1 и y2 в ссылках на странице прописаны намертво.
Ну изменил ты в GET их на билибирду
BETWEEN 'ваваыав' AND 'sdfdfddsf'
и не получил правильной даты...и что...ошибки критической не будет ..скрипт не остановиться, то что ты сам меняешь эти параметры это же как бы проблемы твои....все остальные будут видеть правильный результат.
Спустя 14 минут, 23 секунды (23.01.2012 - 15:07) kksw написал(а):
Цитата (neadekvat @ 23.01.2012 - 15:58) |
Можно проще:SELECT *, DATE_FORMAT(`data`, '%d.%m.%y ') as `formatdata` FROM stata WHERE MONTH(`data`) = 1 ORDER BY data Хотя синтаксис надо уточнить, давно я что-то запросы не писал. Соответственно, в ссылке передаешь номер месяца, в скрипте проверяешь его на принадлежность промежутку 1..12, и подставляешь в запрос. Ах да, называть поле даты "data" - моветон. Назови date. data - это "данные". |
Спасибо за направление ! буду разбираться
так то же работает (синтаксис правильный

поле date тип date, а так разве можно ?
Спустя 3 минуты, 31 секунда (23.01.2012 - 15:11) neadekvat написал(а):
Цитата (kksw @ 23.01.2012 - 16:07) |
поле date тип date, а так разве можно ? |
Конечно. Придется, правда, постоянно брать название поля в обратные кавычки - но это даже к лучшему. Но data оставлять точно нельзя.
Спустя 31 минута, 6 секунд (23.01.2012 - 15:42) kksw написал(а):
ну вот получилось как то так
теперь я так понимаю надо заняться всякими проверками (безопасностью)
??
<a href="stat.php?sid=1">Январь</a><br />
<a href="stat.php?sid=2">Февраль</a><br />
<a href="stat.php?sid=3">Март</a></p>
if (isset($_GET['sid']))
$sid = ($_GET['sid']);
$res = mysql_query("SELECT *, DATE_FORMAT(`data`, '%d.%m.%y ') as `formatdata` FROM stata WHERE MONTH(`data`) = $sid ORDER BY data " , $db);
теперь я так понимаю надо заняться всякими проверками (безопасностью)
??
Спустя 2 минуты, 19 секунд (23.01.2012 - 15:44) neadekvat написал(а):
Этим надо сразу заниматься.
if ((int)$sid >= 1 AND $sid <= 12)
if ((int)$sid >= 1 AND $sid <= 12)
Спустя 9 минут, 34 секунды (23.01.2012 - 15:54) kksw написал(а):
Цитата (neadekvat @ 23.01.2012 - 17:44) |
Этим надо сразу заниматься. if ((int)$sid >= 1 AND $sid <= 12) |
Спасибо, понял, как и понял то, что пройдет год и мне придется делать выборку не только по месяцу но и по году...этим надо сразу заниматься
В любом случае Спасибо за помощь
Спустя 44 минуты, 43 секунды (23.01.2012 - 16:39) neadekvat написал(а):
kksw, у SQL есть не только MONTH, но и YAER, и DAY, и еще много всяких функций. Так что не вижу ничего сложного.
Спустя 2 часа, 17 минут, 30 секунд (23.01.2012 - 18:56) inpost написал(а):
kksw
Массив. ключ = значение
март = "BETWEEN '2012.03.01 00:00:00' AND '2012.04.01 00:00:00'"
Если нужна динамика годов, то вместо 2012 пишешь [$year]
и str_replace, где [$year] заменяешь на то, что тебе надо.
Массив. ключ = значение
март = "BETWEEN '2012.03.01 00:00:00' AND '2012.04.01 00:00:00'"
Если нужна динамика годов, то вместо 2012 пишешь [$year]
и str_replace, где [$year] заменяешь на то, что тебе надо.
Спустя 3 часа, 59 минут, 19 секунд (23.01.2012 - 22:55) kksw написал(а):
Ну что ж, будем читать
тем более занимаюсь этим пока в свое удовольствие, да и в 40 лет начать изучать PHP... жена говорит у тебя крыша что ли поехала
ну а пока что атомную бомбу сделать легче.
есть конечно еще пару вопросов, но сначала попытаюсь сам решить.
Спасибо всем откликнувшимся, хороший форум !

тем более занимаюсь этим пока в свое удовольствие, да и в 40 лет начать изучать PHP... жена говорит у тебя крыша что ли поехала

ну а пока что атомную бомбу сделать легче.
есть конечно еще пару вопросов, но сначала попытаюсь сам решить.
Спасибо всем откликнувшимся, хороший форум !
Спустя 52 секунды (23.01.2012 - 22:56) Winston написал(а):
Цитата (kksw @ 23.01.2012 - 21:55) |
да и в 40 лет начать изучать PHP. |
Да ни чё


Спустя 18 минут (23.01.2012 - 23:14) neadekvat написал(а):
Цитата (Winston @ 23.01.2012 - 23:56) |
Здесь есть и такие которые в 50 начали |
И те, кто (по душевному состоянию) в 12, что много хуже.