2017-03-13 7 views
-2

PHP 데이터 객체의 'BETWEEN'문을 사용하여 특정 날짜 2 개 사이의 게시물을 표시하지만 'date from'이 작동하지만 'date from'이 작동하지 않습니다. 올바르게 'date from'만 설정하면 아무 것도 표시되지 않지만 'date to'만 설정하면 올바른 날짜와 'date'를 설정하더라도 올바른 게시물이 표시됩니다. 난 단지 '에서 날짜'를 선택하면 문제가 아니라, 이건 내 코드입니다between 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로 설정되므로 datefrom 만 설정된 경우를 확인하기 위해 별도의 if else 블록을 만든 다음 dateto를 매우 높은 값으로 설정합니다. 누구든지 짧은 코드를 생각할 수 있다면 게시 해주세요