2016-11-21 2 views
0

Я пытаюсь под кодом, чтобы отфильтровать значения на основе From & по дате, но когда я нажимаю кнопку поиска, его просто освежающую страницу и отображающую ту же страницу. Но не отображающие отфильтрованные результаты ....Результаты фильтрации, основанные на From & To Date

enter image description here

PHP

$reg_user=''; 

$post_at = ""; 
$post_at_to_date = ""; 

    $queryCondition = ""; 
    if(!empty($_POST["search"]["post_at"])) 
{   
    $post_at = date('Y-m-d 0:0:0',strtotime($_POST["search"]["post_at"])); 
    $post_at_todate = date('Y-m-d:59:59:59'); 
    if(!empty($_POST["search"]["post_at_to_date"])) { 
     $post_at_to_date = date('Y-m-d 59:59:59',strtotime($_POST["search"]["post_at_to_date"])); 
     $post_at_todate = $post_at_to_date; 
    } 

$queryCondition .= "WHERE post_at >= '" . $post_at . "' AND post_at <= '" . $post_at_todate . "'"; 

$reg_user = new USER(); 
$stmt = $reg_user->runQuery("SELECT * FROM order_details ".$queryCondition); 
$row = $stmt->fetch(PDO::FETCH_ASSOC); 
$stmt->execute(); 

HTML

<form name="frmSearch" method="post" action=""> 

<input type="text" placeholder="From Date" id="post_at" 
value="<?php echo $post_at; ?>" name="search[post_at]" />  
<input type="text" placeholder="To Date" id="post_at_to_date" value="<?php echo $post_at_to_date; ?>" 
name="search[post_at_to_date]" onkeyup="doFilter()" /> 
<input type="submit" name="search" value="search" > 

сценарий

<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> 
<script src= "http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.js"></script> 
<script> 
$.datepicker.setDefaults({ 
showOn: "button", 
buttonImage: "datepicker.png", 
buttonText: "Date Picker", 
buttonImageOnly: true, 
dateFormat: 'yy-mm-dd' 
}); 
$(function() { 
$("#post_at").datepicker(); 
$("#post_at_to_date").datepicker(); 
}); 
</script> 

имя столбца даты: created_at, имя таблицы - order_details. Я совершенно не знаком с php, пожалуйста, помогите мне.

Редактировать

, когда я попытался var_dump($post_at); var_dump($post_at_to_date);, это дало результат: string(0) "" string(0) ""

Edit 2 я пытаюсь ниже кода, теперь var_dump отображает результаты, но значения не фильтрации на основе выбранного От & Для Дата

echo "<pre>";print_r($_POST); 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$reg_user=''; 

$post_at = ""; 
$post_at_to_date = ""; 
$queryCondition = ""; 
    if(!empty($_POST["post_at"])) 
    {   
     $post_at = date('Y-m-d 0:0:0',strtotime($_POST["post_at"])); 
     $post_at_todate = date('Y-m-d:59:59:59'); 
     if(!empty($_POST["post_at_to_date"])) { 
      $post_at_to_date = date('Y-m-d 59:59:59',strtotime($_POST["post_at_to_date"])); 
      $post_at_todate = $post_at_to_date; 
     } 
     $queryCondition .= "WHERE post_at >= '" . $post_at . "' AND post_at <= '" . $post_at_todate . "'"; 
    } 

    $sqlquery = "SELECT * FROM order_details $queryCondition"; 
    $result = $conn->query($sqlquery); 

    if ($result->num_rows > 0) { 
     echo $result->num_rows.'result found'."<br>"; 
     while($row = $result->fetch_assoc()) { 
      echo "id: " . $row["id"]. " - date: " . $row["post_at"]; 
      echo "<br>"; 
     } 
    } else { 
     echo "0 results found <br>"; 
    } 
$conn->close(); 

форма

<form name="frmSearch" method="post" action=""> 
<input type="text" placeholder="From Date" id="post_at" value="" name="post_at" />  
<input type="text" placeholder="To Date" id="post_at_to_date" value="" name="post_at_to_date" /> 
<input type="submit" name="search" value="search" /> 
</form> 

сценарий

jQuery.datepicker.setDefaults({ 
showOn: "button", 
buttonImage: "datepicker.png", 
buttonText: "Date Picker", 
buttonImageOnly: true, 
dateFormat: 'yy-mm-dd' 
}); 
$(function() { 
$("#post_at").datepicker(); 
$("#post_at_to_date").datepicker(); 
}); 

результат:

Array 
(
    [post_at] => 
    [post_at_to_date] => 2016-11-17 
    [search] => search 
) 

24result найдено

Примечание: Undefined индекс: идентификатор в echo "id: " . $row["id"]. " - date: " . $row["post_at"]; & отображение одной и той же страницы.

ID: - Дата: 0000-00-00 00:00:00

+0

Диапазон времени не может быть от '0: 0: 0' до' 59: 59: 59' – Blinkydamo

+0

@Blinkydamo спасибо, тогда какой код мне нужно заменить тем, что .... он был в [это tutorial] (http://phppot.com/php/php-mysql-date-range-search-with-jquery-datepicker/) –

+0

Нет, где в этом фрагменте кода есть время. Я использую поле даты, я полагаю, вы пытаетесь изменить его на datetime. Если вы хотите разместить там время, используйте «00: 00: 00» и «23: 59: 59», иначе измените формат базы данных только на дату. – Blinkydamo

ответ

0

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

if(!empty($_POST[ 'post_at' ])) 
{   
    $post_at  = date('Y-m-d', strtotime($_POST[ 'post_at' ])); 
    $post_at_todate = date('Y-m-d'); 
    if(!empty($_POST[ 'post_at_to_date' ])) 
    { 
     $post_at_to_date = date('Y-m-d', strtotime($_POST[ 'post_at_to_date' ])); 
     $post_at_todate = $post_at_to_date; 
    } 
    $queryCondition .= "WHERE DATE(created_at) >= '" . $post_at . "' AND DATE(created_at) <= '" . $post_at_todate . "'"; 
} 

$sqlquery = "SELECT * FROM order_details $queryCondition"; 

Некоторые ошибки форматирования даты, посмотрите на var_dump($sqlquery); и убедитесь, что форматирование правильно. Затем убедитесь, что результат проходит.

+0

Я получаю это: 'string (85)" SELECT * FROM order_d etails WHERE post_at> = '2016-11-01' AND post_at <= '2016-11-01' " Найдены 0 результатов, но значения не фильтруются, все значения отображаются после нажатия кнопки' search' ... ... –

+0

В вашей базе данных у вас есть записи, которые начинаются и заканчиваются в эту дату? – Blinkydamo

+0

вы можете здесь проверить: http://prnt.sc/dabxxd –

0

Try CAST:

$ queryCondition = "WHERE CAST (post_at в DATE)> = CAST (" $ post_at.. . "как DATE) и CAST (post_at как DATE) < = CAST (". $ post_at_todate. "как DATE)"

+0

Я получил 'Parse error: синтаксическая ошибка , неожиданный '", как DATE) И CAST (post_at a' (T_CONSTANT_ENCAPSED_STRING)' –

+0

любые другие варианты? –

+0

@abcd это только синтаксическая ошибка, которую вы должны решить '$ queryCondition. =" WHERE CAST (post_at as DATE)> = CAST (". $ Post_at." Как DATE) И CAST (post_at as DATE) <= CAST (". $ Post_at_todate." Как DATE) "' –

Смежные вопросы