За последние 24 часа нас посетили 19178 программистов и 1642 робота. Сейчас ищет 881 программист ...

выборка!

Тема в разделе "PHP и базы данных", создана пользователем rodion4657, 2 июл 2012.

  1. rodion4657

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

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    Здравствуйте!! думаю не сложный вопрос для здешних мастеров...
    хочу сделать выборку за определенный промежуток времени..пишу такой код
    Код (Text):
    1. $query = "SELECT * FROM t WHERE date BETWEEN  '2012.02.23' AND '2012.04.11'";
    все прекрасно работает, но если даты вводить через форму выборка не происходит
    форма.........................
    Код (Text):
    1. echo '<form action="excel2.php" method="post">';
    2. echo 'Критерий ( ГГГГ.ММ.ДД )<br>';
    3. echo '<input type="text"  name="date1" size="10" value="">';
    4. echo '<input type="text"  name="date2" size="10" value="">';
    5. echo '<input type="submit" name="submit" value="Отчет">';
    6. echo '<input type="reset" name="reset" value="Очистить">';
    7. echo '</form>';
    excel2.php.............................
    Код (Text):
    1. $db = mysql_connect("localhost", "rau2", ""); mysql_select_db("baza2", $db);
    2. mysql_query("SET NAMES UTF8");
    3.  
    4. $query = "SELECT * FROM t WHERE date BETWEEN '".$_POST['date1']."' AND '".$_POST['date2']."'";
    5.  
    6. //$query = "SELECT * FROM t WHERE date BETWEEN  '2012.02.23' AND '2012.04.11'";
    7.   $res = mysql_query( $query,$db ) or die("Запрос ошибочный");
    8.  
    9.  
    10.  $row = mysql_fetch_array($res);
    11.  echo ($row);
    Подскажите, что не так?
     
  2. rodion4657

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

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    Люди, почему вы все молчите?
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Дык echo $query; перед запросом сделай и увидишь.
     
  4. rodion4657

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

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    А почему нужно перед запросом?когда
    Код (Text):
    1. $query = "SELECT * FROM t WHERE date BETWEEN  '2012.02.23' AND '2012.04.11'";
    такой запрос все же выводит результат, я думал проблема в форме или
    Код (Text):
    1. '".$_POST['date1']."' AND '".$_POST['date2']."'";
    в этом.там все правильно?
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    дык ты сделай и увидишь какой там по факту запрос. может там чушь вставилась.
     
  6. rodion4657

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

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    вот, что получается по факту((((((почему не видны данные, которые я записывал в форму?
     
  7. html-программист

    html-программист Активный пользователь

    С нами с:
    10 фев 2012
    Сообщения:
    831
    Симпатии:
    4
    Адрес:
    Kiev
    Видать, у вас на сервере встроенная защита от SQL-инъекций стоит.

    Добавлено спустя 1 минуту 39 секунд:
    Код (PHP):
    1. echo "<pre>";
    2. var_dump($_POST);
    3. echo "</pre>"; 
     
  8. rodion4657

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

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    и как мне это должно помочь?объясните...
     
  9. uorypm

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

    С нами с:
    3 мар 2012
    Сообщения:
    98
    Симпатии:
    0
    Здравствуйте, rodion4657.
    К первому посту темы. Покажите что Вы вводите в поля формы и напишите какой тип данных поля `date` Вашей таблицы
     
  10. rodion4657

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

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    в поля формы ввожу две даты
    мне нужно сделать выборку за данный промежуток времени.тип данных date

    Добавлено спустя 5 минут 6 секунд:
    Код (Text):
    1. echo '<input type="text"  name="date1" size="10" value="">';
    2. echo '<input type="text"  name="date2" size="10" value="">';
    заметил такую особенность, что если сделать одинаковый
    в форме, то по крайней мере в запросе хоть появляются данные из формы вот
    Добавлено спустя 46 секунд:
    что это может быть?
     
  11. uorypm

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

    С нами с:
    3 мар 2012
    Сообщения:
    98
    Симпатии:
    0
    rodion4657, напишите, пожалуйста в скрипте excel2.php в любом месте следующие строчки:
    Код (PHP):
    1. echo "<pre>";
    2. print_r($_REQUEST);
    3. print_r($_POST);
    4. echo "</pre>";
    5.  
    Повторите Ваш запрос и покажите нам, что в находится в данных массивах.
    Так же попробуйте переименовать атрибуты name, например, на date_one и date_two.
     
  12. rodion4657

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

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    вот, что получается...почему-то одинаковые даты...хотя вводил разные и в массиве 2 дата..
     
  13. uorypm

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

    С нами с:
    3 мар 2012
    Сообщения:
    98
    Симпатии:
    0
    rodion4657
    Так же попробуйте переименовать атрибуты name, например, на date_one и date_two.
    Покажите html-код страницы с формой
     
  14. rodion4657

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

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    переименовывать порбывал, такая же картина((((
     
  15. uorypm

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

    С нами с:
    3 мар 2012
    Сообщения:
    98
    Симпатии:
    0
    Переименуйте атрибуты name на date_one и date_two соотвественно. Сохраните скрипт. Откройте страницу в другом браузере, в котором скрипт еще не открывали. Если там все работать будет, значит проблема в кэше
     
  16. rodion4657

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

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    открыл))
    вот данные теперь отображаютя....но почему в результате выполнения запроса нет никакой выборки...
     
  17. uorypm

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

    С нами с:
    3 мар 2012
    Сообщения:
    98
    Симпатии:
    0
    rodion4657, возможно Вы забыли переименовать во втором скрипте переменные
    Код (Text):
    1.  
    2. $db = mysql_connect("localhost", "rau2", ""); mysql_select_db("baza2", $db);
    3. mysql_query("SET NAMES UTF8");
    4. $query = "SELECT * FROM t WHERE date BETWEEN '".$_POST['date_one']']."' AND '".$_POST['date_two']."'";
    5. //$query = "SELECT * FROM t WHERE date BETWEEN  '2012.02.23' AND '2012.04.11'";
    6.   $res = mysql_query( $query,$db ) or die("Запрос ошибочный");
    7.  $row = mysql_fetch_array($res);
    8.  echo ($row);
    P.S. И спасибо за задачку - посижу, подумаю, что не так у Вас с цифрами в имени переменных и что творит кэш...
    Спокойной Вам ночи.
     
  18. rodion4657

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

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    все получилось)))с последним сообщением, это уже я сам тупанул(засиделся с этим) спасибо Вам, вы очень помогли мне...будет время отпишитесь мне на счет кэша...еще раз спасибо!