2014-11-24 1 views
0

У меня есть html форма, где дата и дата выходят в поле. Итак, если выбрать дату, например: 06/09/2014 Показывает результат отлично. Но если я вручную поставлю дату, например: 6/9/2014, то это не покажет никакого результата. Странный ! Почему он показывает результаты?Php-Search не работает, если я установил дату без нуля?

if(!empty($ad_datefrom) && empty($ad_dateto)){  
    $getSearch .= "AND cd.created_date2 BETWEEN '$ad_datefrom' AND '$date'";  
} 

Примечание: тип столбца символ (10), который хранить дату (м/д/г)

, что я бегу, чтобы сместить CREATED_DATE значение столбца в другой колонке created_date2:

<?php 
$q=mysqli_query($link, "SELECT cdid, created_date FROM contact_details ORDER BY cdid DESC"); 
while($r=mysqli_fetch_array($q)){ 
    $c=$r['created_date']; 
    $cdid=$r['cdid']; 
    $c = substr($c, 0, 10); 

    $e=explode("/", $c); 
    $e[0]; //date 
    $e[1]; //month 
    $e[2]; //year 

    $c= $e[1]."-".$e[0]."-".$e[2]."<br/>"; 

    $u=mysqli_query($link, "UPDATE contact_details SET created_date2 = '$c' WHERE cdid = '$cdid'"); 
} 

?> 
+0

Если это ** строки **, как это должно работать? Mysql не является ИИ, который знает, что именно вы хотите, когда вы храните свои данные в ** неподходящих ** типах данных. Btw, ваши текущие данные полностью сломаны, вы не можете хранить 'm/d/Y' в' char (10) 'и сравнивать по диапазонам. – zerkms

+0

@zerkms Таким образом, это должен быть тип 'date', правильно? Но значение хранит что-то вроде этого: 11/02/2014, 1/03/2014, 4/04/2014, – Babu

+0

это должно быть «дата», право. Затем, когда вы хотите форматировать - вы выполняете форматирование. Не путайте, как хранятся данные и как они представлены. «Но значение хранит что-то вроде этого» --- nope – zerkms

ответ

0

попробовать это:

$q=mysqli_query($link, "SELECT cdid, created_date FROM contact_details ORDER BY cdid DESC"); 
while($r=mysqli_fetch_array($q)){ 
    $cdid=$r['cdid']; 
    $c =explode(" ",$r['created_date']); 

    $e=explode("/", $c[0]); 
    $e[0]= str_pad($e[0],2,0,STR_PAD_LEFT); //date 
    $e[1]=str_pad($e[1],2,0,STR_PAD_LEFT); //month 
    $e[2]; //year 

    $c= $e[2]."-".$e[1]."-".$e[0]; 
    //or use this 
    // $c=date("Y-m-d",strtotime($r['created_date'])); 

    $u=mysqli_query($link, "UPDATE contact_details SET created_date2 = '$c' WHERE cdid = '$cdid'"); 
} 
+0

Теперь тип данных столбца' created_date2' - формат 'date', и значение выглядит так:' 2014-02-05' НО В моей форме, когда Я беру дату, это формат m/d/y. Итак, согласно моему текущему запросу 'sql', как мне искать данные, используя этот формат 2 даты? – Babu

+0

u может использовать '$ c = date (" Ymd ", strtotime ($ r ['created_date'])); этот код может конвертировать из любого формата строки даты в этот формат' 2014-02-05' –

+1

для поиска запрос u может использовать '' AND STR_TO_DATE (cd.created_date2, '% Y-% m-% d') BETWEEN STR_TO_DATE ('$ ad_datefrom', '% Y-% m-% d') И STR_TO_DATE ('$ date' ", '% Y-% m-% d'); –

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