[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: вывод из БД по месяцам
kksw
Здравствуйте !
Есть база со статистикой за год. Нужно выводить статистику по месяцам
Январь
Февраль
Март
.....

выборку за январь делаю таким запросом
$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 написал(а):
Можно проще:
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
Цитата
Тут нужна проверка на соответствие формату ГГГГ-ММ-ДД. А приведенная тобой функция для другого используется.


Да, действительно smile.gif но работать будет

Спустя 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'

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

Спустя 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 - это "данные".

Спасибо за направление ! буду разбираться
так то же работает (синтаксис правильный smile.gif
поле 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)

Спустя 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] заменяешь на то, что тебе надо.

Спустя 3 часа, 59 минут, 19 секунд (23.01.2012 - 22:55) kksw написал(а):
Ну что ж, будем читать user posted image
тем более занимаюсь этим пока в свое удовольствие, да и в 40 лет начать изучать PHP... жена говорит у тебя крыша что ли поехала user posted image
ну а пока что атомную бомбу сделать легче.
есть конечно еще пару вопросов, но сначала попытаюсь сам решить.
Спасибо всем откликнувшимся, хороший форум !

Спустя 52 секунды (23.01.2012 - 22:56) Winston написал(а):
Цитата (kksw @ 23.01.2012 - 21:55)
да и в 40 лет начать изучать PHP.

Да ни чё smile.gif Здесь есть и такие которые в 50 начали smile.gif

Спустя 18 минут (23.01.2012 - 23:14) neadekvat написал(а):
Цитата (Winston @ 23.01.2012 - 23:56)
Здесь есть и такие которые в 50 начали

И те, кто (по душевному состоянию) в 12, что много хуже.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.