2014-11-05 32 views
0

這次我試圖讓一些php代碼與mysqli一起工作,以便檢查今天的日期是否在Mysql表中的日期範圍之間,如果條件是真的,我需要從表中打印價格,否則它會從另一個表中打印不同的價格。所以我已經在另一個php文件中設置了所有sql連接,問題是,當我嘗試代碼時,它只顯示任何內容,只是一個空白頁。這是使用代碼IM:有條件的mysqli日期範圍檢查在sql中打印價格

<?php 
$currentdate = date("Y/m/d");        
//basic include files 
require_once('/home/user/public_html/folder/db.php'); 

$seasonalpricedate = mysqli_query($conn, "SELECT `seasonal_price` FROM `hotel_seasonal_price` WHERE room_type_id = '1' AND $currentdate >= 'seasonal_from' AND $currentdate <= 'seasonal_to';"); 
$result = ($seasonalpricedate) or die(mysqli_error()); 

if (mysqli_num_rows($result) != 0) { 
    $standardprice = mysqli_query($conn, "SELECT `room_price` FROM `hotel_room_price` WHERE price_id = '1'"); 
    if(! $standardprice){ 
     die('Could not get data: ' . mysqli_error()); 
    } 

    while($standard = mysqli_fetch_array($standardprice, MYSQL_ASSOC)){ 
     echo "$ {$standard['room_price']} "; 
    } 
} else { 
    if(! $seasonalpricedate){ 
     die('Could not get data: ' . mysqli_error()); 

     while($standard2 = mysqli_fetch_array($seasonalpricedate, MYSQL_ASSOC)){ 
      echo "$ {$standard2['seasonal_price']} "; 
     } 
    } 
} 
?> 

我已經嘗試過用standardprice和seasonalprice工作都沒有的代碼有條件的,但是當我嘗試去做這樣的,它不會顯示任何東西。

PostData:我還在努力學習英語,所以如果我失敗了一些單詞,請提前向我道歉。

UPDATE:好了,所以在這種方式工作,如果沒有價值真正它的確定,它顯示了standardprice,但如果匹配的日期,不顯示任何東西,這裏是代碼改變:

<?php 
error_reporting(E_ALL); 
ini_set('error_reporting', E_ALL); 
$currentdate = date("Y-m-d");        
//basic include files 
require_once('/home/trankilo/public_html/book/db.php'); 

$seasonalpricedate = mysqli_query($conn, "SELECT `seasonal_price` FROM `hotel_seasonal_price` WHERE room_type_id = '1' AND '$currentdate' >= seasonal_from AND '$currentdate' <= seasonal_to"); 
$result = ($seasonalpricedate) or die(mysqli_error()); 
if (mysqli_num_rows($result) != 0) { 
$seasonalprice = mysqli_query($conn, "SELECT `seasonal_price` FROM `hotel_seasonal_price` WHERE room_type_id = '1'"); 
if(! $seasonalprice) 
{ 
    die('Could not get data: ' . mysqli_error()); 
while($standard2 = mysqli_fetch_array($seasonalprice, MYSQL_ASSOC)) 
{ 
    echo "$ {$standard2['seasonal_price']} "; 
} 
} 

} else { 
$standardprice = mysqli_query($conn, "SELECT `room_price` FROM `hotel_room_price` WHERE price_id = '1'"); 
if(! $standardprice) 
{ 
    die('Could not get data: ' . mysqli_error()); 
} 
while($standard = mysqli_fetch_array($standardprice, MYSQL_ASSOC)) 
{ 
    echo "$ {$standard['room_price']} "; 
} 
} 
mysqli_close($conn); 
?> 

如此接近,使其工作,由於

回答

1

更新:因爲你也更新你的OP,現在我發現是什麼原因造成的問題。有問題的時候你說:die('Could not get data: ' . mysqli_error());然後,你想嘗試一個while循環。而不會執行,因爲您用die();終止了腳本,將while移動到您的if條件的else大小寫。看到我的評論。

使用此:

error_reporting(E_ALL); 
ini_set('error_reporting', E_ALL); 

//Also display your errors. 
display_errors(true); 

$currentdate = date("Y-m-d"); 
//basic include files 
require_once('/home/trankilo/public_html/book/db.php'); 

//Put your query into a variable, so you can dump/print it. 
$sql = "SELECT `seasonal_price`" 
    . " FROM `hotel_seasonal_price`" 
    . " WHERE room_type_id = '1'" 
    . " AND '" . $currentdate . "' >= seasonal_from" 
    . " AND '" . $currentdate . "' <= 'seasonal_to'"; 
echo $sql; 
//Try to run it in the sql directly. Is it gives back you any result? 
//Do not need to 
$result = mysqli_query($conn, $sql) or die(mysqli_error()); 

if (mysqli_num_rows($result) != 0) { 
    //Check if we have result by echoing some dummy text 
    echo "Yes, we have result!"; 

    $sql = "SELECT `seasonal_price` FROM `hotel_seasonal_price` WHERE room_type_id = '1'"; 
    //Do the same as the previous query. Does it gives you back anything? 
    $seasonalprice = mysqli_query($conn, $sql); 
    if (!$seasonalprice) { 
     //I do not really get what happens here. If you have no seasonalprice, 
     //then you can not fetch_array on that! 
     //Move this whole section.... You've say die, and after that do a while? 
     die('Could not get data: ' . mysqli_error()); 
    } else { 
     while ($standard2 = mysqli_fetch_assoc($seasonalprice)) { 
      echo "$ " . $standard2['seasonal_price'] . " "; 
     } 
    } 
} else { 
    //Same as previous 
    $sql = "SELECT `room_price` FROM `hotel_room_price` WHERE price_id = '1'"; 
    $standardprice = mysqli_query($conn, $sql); 
    if (!$standardprice) { 
     die('Could not get data: ' . mysqli_error()); 
     //same here, move the while to the else... 
    } else { 
     while ($standard = mysqli_fetch_array($standardprice, MYSQL_ASSOC)) { 
      echo "$ {$standard['room_price']} "; 
     } 
    } 
} 
mysqli_close($conn); 
+0

檢查更新我張貼,感謝 – GTCR 2014-11-05 13:23:12

+0

非常感謝,這有助於和工作就像一個魅力,我編輯你的答案有第二次更新,只有少數的變化,做到這一點,真的很感激你的幫助!我仍然需要學習很多東西。 – GTCR 2014-11-05 14:02:40

+0

我刪除了你的編輯,因爲有語法錯誤。無論如何,不​​客氣! – vaso123 2014-11-05 14:09:05