2017-03-13 9 views
-2

phpデータオブジェクトの 'BETWEEN'文を使って2つの特定の日付間に投稿を表示していますが、 'date to'は動作していません。正しく「date from」を設定しても何も表示されませんが、「date to」だけを設定すると、「date from」と「date to」の両方を設定しても正しい投稿が表示されます私は唯一の「から日付」を選択すると、問題があるだけで、これは私のコードですphp pdoで文が正しく動作しない

$dateFrom = $_POST['dateFrom']; 
$dateTo = $_POST['dateTo']; 
$sql = "SELECT * FROM Main_Posts_table WHERE DATE(time) BETWEEN '$dateFrom' AND '$dateTo' "; 
$data = $connect->query($sql); 
echo "<center><table class = 'main_table'>"; 
foreach($data as $row){ 
echo "<tr><td><span id = 'time_of_post'>".$row['time']."</span><br/><br/>".$row['posts']."<br/><br/><span id = 'comment_button'>comments &#8609;</span></td></tr>"; 

} 
echo "</table></center>"; 
+0

'time'カラムのデータ型は? – hassan

+0

タイプはdatetime @hassan – user7324674

+0

サンプルデータと出力を表示してください – Jens

答えて

0

次のコードは動作します:

if(empty($_POST['dateTo']) && !empty($_POST['dateFrom'])){ 
    $sql = "SELECT * FROM Main_Posts_table WHERE DATE(time) BETWEEN '$dateFrom' AND '2080-12-31' "; 
} 
else{ 
    $sql = "SELECT * FROM Main_Posts_table WHERE DATE(time) BETWEEN '$dateFrom' AND '$dateTo' "; 
} 

datetoが設定されていない場合は、datefromより小さい値であるnullに設定されています。したがって、elsefromブロックを別に作成してdatefromのみが設定されているかどうかを確認し、datetoを非常に高い値に設定します。誰かが短いコードを考えることができる場合は、投稿してください

関連する問題