За последние 24 часа нас посетили 22769 программистов и 1268 роботов. Сейчас ищут 817 программистов ...

Как вывести из базы данных записи, по определенной дате

Тема в разделе "PHP для новичков", создана пользователем KevinSmash, 13 май 2019.

Метки:
  1. KevinSmash

    KevinSmash Новичок

    С нами с:
    13 май 2019
    Сообщения:
    17
    Симпатии:
    0
    В файле есть вот такой код, где я с помощью Datepicker выбираю дату:
    Код (Text):
    1. Ежедневный отчет за:  <input type="text" class="from_date select_date" value="<? echo $date = date('Y-m-d'); ?>">
    , Здесь вывожу таблицу из бд:
    Код (Text):
    1. <?php
    2.  
    3.                                         $result=mysql_query("SELECT * FROM income_expense_history ");
    4.  
    5.                                         //$result - ассоциированный массив, т.е. таблички, у которой есть названия столбцов
    6.  
    7.                                         //узнаем, сколько в массиве $result строчек
    8.                                         $n=mysql_num_rows($result);
    9.  
    10.                                         //вывод на страничку в виде таблицы
    11.                                         echo "<table border=1 cellspacing=0 cellpadding=2 style=width: 75% align=center>
    12.                        
    13.                                 <tr>
    14.                                     <th>Время</th>
    15.                                     <th>Приход</th>
    16.                                     <th>Расход</th>
    17.                                     <th>Комментарий</th>
    18.                                     <th>Автор</th>
    19.                                 </tr>";
    20.  
    21.  
    22.                                         //вывод построчно
    23.                                         for($i=0;$i<$n;$i++)
    24.                                             echo
    25.                                             "</td><td>",mysql_result($result,$i,time),
    26.                                             "</td><td>",mysql_result($result,$i,income),
    27.                                             "</td><td>",mysql_result($result,$i,expense),
    28.                                             "</td><td>",mysql_result($result,$i,comment),
    29.                                             "</td><td>",mysql_result($result,$i, author),
    30.                                             "</td></tr>";
    31.                                         echo "</table>";
    32.  
    33.                                         ?></code>
    Как связать их вместе? Чтобы когда я выбирал определенную дату, из базы брались данные за выбранный день? В базе хранятся в timestamp, по умолчанию current_timestamp. Спасибо
     
  2. Artur_hopf

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

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @KevinSmash отправляете post запрос, в sql запросе добавляете where. Примерно вот так:
    PHP:
    1. <form action="sql.php">
    2.    <label>Ежедневный отчет за:</label>
    3.    <input type="text" name="date" class="from_date select_date" value="<? echo $date = date('Y-m-d'); ?>">
    4.    <input type="submit">
    5. </form>
    PHP:
    1. <?php
    2. if(isset($_POST["date"]){
    3.    $result = mysql_query("SELECT * FROM income_expense_history WHERE date = '$_POST["date"]'");
    4. }else{
    5.     $result = mysql_query("SELECT * FROM income_expense_history");
    6. }
    7. //$result - ассоциированный массив, т.е. таблички, у которой есть названия столбцов
    8. //узнаем, сколько в массиве $result строчек
    9. // и т.д.
    это просто пример, за правильность не берусь.
     
  3. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Это простая выборка, т.е. можно сразу GET.
     
  4. KevinSmash

    KevinSmash Новичок

    С нами с:
    13 май 2019
    Сообщения:
    17
    Симпатии:
    0
    Спасибо вам, но не подскажите, на этой строке, а конкретно на передаче в базу даты, все ломается и страница не может загрузится.Выдает на том моменте сразу три ошибки: Cannot use [] for reading, Underfinded constant date more, Expected semicolon. Я просто не знаю вот такие запросы, и поэтому не понимаю где ошибка
     
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    P.S. Входные данные, естественно, нужно проверять, экранировать и т.п.
    --- Добавлено ---
    Вам же прямым текстом написали, что отсутствует тчк с зпт. WHERE `date`, если так называется поле с датой.
     
  6. KevinSmash

    KevinSmash Новичок

    С нами с:
    13 май 2019
    Сообщения:
    17
    Симпатии:
    0
    Точка с запятой присутствует, а поле называется time, но ругается он на переданное значение date, которые определяли выше
     
  7. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Я вам показал, как исправить ошибку ;)
     
  8. KevinSmash

    KevinSmash Новичок

    С нами с:
    13 май 2019
    Сообщения:
    17
    Симпатии:
    0
    Спасибо за помощь:)
     
  9. KevinSmash

    KevinSmash Новичок

    С нами с:
    13 май 2019
    Сообщения:
    17
    Симпатии:
    0
    Здравствуйте ещё раз. Получилась странная ситуация, что по итогу, когда я отправляю значение, из базы ничего не возвращается. То есть по умолчанию у меня выводятся все записи, а когда я отправляю дату, то все записи пропадают и получается пустая таблица.
     
  10. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Может, мускул формат переданного значения не понимает?
     
  11. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    И timestamp – это же метка времени, а не дата.
    --- Добавлено ---
    WHERE date(`time`)=
    --- Добавлено ---
    Или используйте BETWEEN с указанием двух временных меток, ограничивающих суточный промежуток.