Здравствуйте! Есть таблица с полем date (datetime). По этому полю необходимо сделать выборку строк соотвествующему дате С - По. Пока настроил только вывод строк с таблицы. Как прикрутить календарь? Код (PHP): $qr_result = mysql_query("select * from " . $db_table_to_show) or die(mysql_error()); echo '<table border="1">'; echo '<thead>'; echo '<tr>'; echo '<th>date</th>'; echo '<th>name</th>'; echo '<th>lastname</th>'; echo '</tr>'; echo '</thead>'; echo '<tbody>'; while($data = mysql_fetch_array($qr_result)){ echo '<tr>'; echo '<td>' . $data['date'] . '</td>'; echo '<td>' . $data['name'] . '</td>'; echo '<td>' . $data['lastname'] . '</td>'; echo '</tr>'; } Заранее спасибо рекомендую использовать не [code] … [/code], а [code=php] … [/code] — так будет подсвечен синтаксис — модераторъ
0. нафиг тебе имя таблицы хранить в переменной? ненужную сложность чую я 1. добавить в запрос условие с-по: … WHERE `date` BETWEEN ? AND ? вместо вопросов должны быть твои значения даты. литералы даты в MySQL имеют формат 'YYYY-MM-DD', не забывай одинарные кавычки! важно: between это включающее условие, т.е. она включает в результат обе даты, как если бы использовались операции >= и <=. если в твоём поле хранится дата без времени, то для поиска за вчера+сегодня условие выглядит так: Код (PHP): SELECT * FROM `mytable` WHERE `date` BETWEEN '2016-03-22' AND '2016-03-23' если в поле date хранится дата + время, то всё несколько сложнее, сегодняшние события не попадут в такую выборку, потому что '2016-03-23 10:00:00' > '2016-03-23'. в таком случае хотябы последний аргумент (а лучше оба) должен быть тоже со временем: Код (PHP): SELECT * FROM `mytable` WHERE `date` BETWEEN '2016-03-22 00:00:00' AND '2016-03-23 23:59:59' 2. что за календарь? заранее не за что.
Так найди в интернетах подходящий календарь и попытайся что-то сделать. Потом приходи с конкретными вопросами.
Код (PHP): <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>jQuery UI Datepicker - Default functionality</title> <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css"> <script src="//code.jquery.com/jquery-1.10.2.js"></script> <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script> <link rel="stylesheet" href="/resources/demos/style.css"> <script> $(function() { $( "#datepicker_from, #datepicker_to" ).datepicker( { dateFormat: "yy-mm-dd" } ); }); </script> </head> <form method="post"> <p>Дата от : <input type="text" id="datepicker_from" name="data_from"> Дата до : <input type="text" id="datepicker_to" name="data_to"> </p> <input type='submit'> </form> <?php $result = mysql_query("SELECT * FROM $vesy WHERE prefix_client=' " . $user_pref . " ' and `date`>=' " . $datefrom . " ' and `date`<= ' " . $dateto . " ' ORDER by `date` DESC", $db) or die('mysql_query '.mysql_error()); if(isset($_POST['data_from']) || isset($_POST['data_to'])){ try { $host = 'localhost'; $dbname = 'tanletest'; $user = 'root'; $pass = ''; $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user); $query = "SELECT * FROM testTable"; if(isset($_POST['data_from']) && $_POST['data_from'] !== '') $query .= " WHERE date >= '".$_POST['data_from']."'"; if(isset($_POST['data_to']) && $_POST['data_to'] !== '') $query .= " AND date <= '".$_POST['date_to']."'"; $STH = $DBH->query($query); $STH->setFetchMode(PDO::FETCH_ASSOC); while($row = $STH->fetch()) { echo $row['name'] . "\n"; echo $row['lastname'] . "\n"; echo $row['date'] . "\n"; } } catch(PDOException $e) { echo $e->getMessage(); } } ?> Попытка не рабочая. Тут где-то косяк...
здесь не видно откуда берутся переменные $vesy, $datefrom и другие — первый mysql_query их использует. мусор не оставляй! Добавлено спустя 4 минуты 36 секунд: далее ты вроде бы что-то проверяешь про POST, не написал срабатывают условия или нет. если в чём-то неуверен, ставь там отладочный вывод переменных типа var_dump($_POST) чтобы точно знать. после того, как составишь текст запроса из кусочков, выведи его тоже, чтобы проверить запрос без php в phpmyadmin или что там у тебя есть. уровень вывода ошибок должен быть максимальным, чтобы ни одна неинициализированная переменная не проскочила! http://phpfaq.ru/debug
Сори это я напутал. лишняя строчка была. Вот вариант с косяком. Код (PHP): <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>jQuery UI Datepicker - Default functionality</title> <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css"> <script src="//code.jquery.com/jquery-1.10.2.js"></script> <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script> <link rel="stylesheet" href="/resources/demos/style.css"> <script> $(function() { $( "#datepicker_from, #datepicker_to" ).datepicker( { dateFormat: "yy-mm-dd" } ); }); </script> </head> <body> <form method="post"> <p>Дата от : <input type="text" id="datepicker_from" name="data_from"> Дата до : <input type="text" id="datepicker_to" name="data_to"> </p> <input type='submit'> </form> <?php if(isset($_POST['data_from']) || isset($_POST['data_to'])){ try { $host = 'localhost'; $dbname = 'tanletest'; $user = 'root'; $pass = ''; $DBH = new PDO("mysql:host=$host;dbname=$dbname", $user); $query = "SELECT * FROM testTable"; if(isset($_POST['data_from']) && $_POST['data_from'] !== '') $query .= " WHERE date >= '".$_POST['data_from']."'"; if(isset($_POST['data_to']) && $_POST['data_to'] !== '') $query .= " AND date <= '".$_POST['date_to']."'"; $STH = $DBH->query($query); $STH->setFetchMode(PDO::FETCH_ASSOC); while($row = $STH->fetch()) { echo $row['name'] . "\n"; echo $row['lastname'] . "\n"; echo $row['date'] . "\n"; } } catch(PDOException $e) { echo $e->getMessage(); } } ?> </body>
Fatal error: Call to a member function setFetchMode() on a non-object in Z:\home\b.local\www\modules\php\php.module(80) : eval()'d code on line 44 Добавлено спустя 48 минут 12 секунд: object(PDOStatement)#32 (1) { ["queryString"]=> string(75) "SELECT * FROM testTable WHERE burn_date >= '2014-07-01' AND burn_date <= ''Сюда не приходит дата" } из-за ...ошбики в этой строчке... if(isset($_POST['data_to']) && $_POST['data_to'] !== '') $query .= " AND date <= '".$_POST['date_to']."'"; верная строчка if(isset($_POST['data_to']) && $_POST['data_to'] !== '') $query .= " AND date <= '".$_POST['data_to']."'"; Спасибо! тема закрыта.