2014-02-18 53 views
0

我想用php,sql和html製作我自己的預訂日記。刪除預訂已存在的單選按鈕

我希望能夠通過檢查我的數據庫來查看在允許執行插入語句之前是否存在記錄,從而防止在我的預訂表單上找到預訂。

我希望能夠做一個選擇語句來檢查預訂是否已經存在。 如果時間和日期不存在我希望無線電按鈕存在 否則 如果時間和日期我想單選按鈕不存在。

我一直在思考這個問題,但想不出一種辦法。

請問我能否就如何克服我的問題提出一些建議?

感謝

我的SQL表如下 表登記( bDate日期, BTIME時間, BNAME CHAR(30), B-號碼CHAR(30), BREG CHAR(30), bMakeModel CHAR(30) )

這就是我到目前爲止,但我想不出如何去做,我想我可能會這樣做錯誤的方式,也許增加循環會更合適:

<?php 
$result = mysqli_query($con,"SELECT * FROM Bookings WHERE bDate = '$_POST[bDate]' ORDER  
BY bTime;"); 
while($row = mysqli_fetch_array($result)){ 
if $_POST["bDate"] = $row['bDate'] AND $_POST["bTime"] = !$row['bTime']{ 
<input type="radio" name="bTime" value="08:00:00"> 8:00 

} 
?> 
    <input type="radio" name="bTime" value="08:00:00"> 8:00 
    <input type="radio" name="bTime" value="09:00:00"> 9:00 
    <input type="radio" name="bTime" value="10:00:00"> 10:00 
    <input type="radio" name="bTime" value="11:00:00"> 11:00<br> 
    <input type="radio" name="bTime" value="13:00:00"> 13:00 
    <input type="radio" name="bTime" value="14:00:00"> 14:00 
    <input type="radio" name="bTime" value="15:00:00"> 15:00 
    <input type="radio" name="bTime" value="16:00:00"> 16:00<br> 
+0

它看起來像你在正確的軌道上。究竟是什麼問題?你的數據庫模式是什麼樣的? –

+0

你能告訴我們你有什麼嘗試到現在..任何代碼? – Jatin

回答

1

直到您發佈一些代碼以獲得更好的幫助,數據庫結構並最終成爲一行或兩行的示例。以下是步驟。

對於檢查部分(表格): 如果您尚未提交表單,請使用AJAX檢入數據庫。 如果您提交了表單,只需在您的數據庫上執行查詢。

對於SQL部分: 一個簡單的計數可以做到這一點(如果找不到行,返回0,如果找到n行,返回n),但檢索一個ID更好(如果沒有找到行,則返回NULL)。如果您在查詢時需要幫助,請描述表格結構以及您正在檢查的字段。在PHP中,只需要測試你的SQL返回值,並對計數值(> 0或不是)或者ID(如果找到的話不是NULL) ,否則爲空) 根據測試結果,您可以添加單選按鈕(或不是)

提示: 使用ID更好,因爲如果您找到了一行,可以將其添加到隱藏的INPUT標記中。如果稍後您決定更新它,則可以使用此ID。

編輯(帶您的代碼): 在您的PHP代碼中,您有很多錯誤: - >你的if條件沒有被圓括號包圍 - > PHP語句中的邏輯運算符與SQL中不一樣:AND (SQL) = && (PHP) - >在if內部,輸入標記不在回顯中。輸入標籤是HTML不是PHP

溫馨提示: - 你確定你有一個很好的連接($con)資源數據庫? - 在sql字符串中不需要添加最後的分號「;」 - 總是關於使用查詢中的星型別名運行SQL比列舉每個字段慢。如果有一天你需要得到一個巨大的結果集,這將是一個優化

1

似乎沒有人回答你的問題。這是你的一個小小的起始代碼。不要忘了你的數據庫服務器,用戶名,密碼和數據庫,以取代連接到MySQL:

<?php 
$mysqli = new mysqli("host", "user", "password", "database"); 

/* check connection */ 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 

<head> 
    <title>sans titre</title> 
    <meta http-equiv="content-type" content="text/html;charset=utf-8" /> 
    <meta name="generator" content="Geany 1.23.1" /> 
</head> 

<body> 
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> 
     <p>Date : <input type="text" id="bDate" name="bDate" value="" /></p> 
     <p>Time : <input type="text" id="bTime" name="bTime" value="" /></p> 
     <input type="submit" value="Send" /> 
    </form> 
    <hr /> 
    <?php 
    /* Check if form is submitted */ 
    if (isset($_POST["bDate"])) { 
     // Need a bDate format = 'YYYY-MM-DD' 
     if (!preg_match("/^\d{4}\-[0-1][0-9]\-[0-3][0-9]$/", $_POST["bDate"])) { 
      printf("dDate pattern error for SQL. Waiting YYYY-MM-DD"); 
      exit(); 
     } 

     /* Execute query */ 
     $query = "SELECT `bDate` , `bTime` , `bName` , `bNumber` , `bReg` , `bMakeModel` FROM `Bookings` WHERE `bDate` = '". $_POST["bDate"] . "' ORDER BY 2"; 
     $result = $mysqli->query($query); 

     /* Parsing result set */ 
     while ($row = $result->fetch_array(MYSQLI_ASSOC)) { 
      printf ("%s (%s)<br />", $row["bDate"], $row["bTime"]); 

      if ($_POST["bDate"] == $row["bDate"] && $_POST["bTime"] != $row["bTime"]) { 
       printf ("<input type=\"radio\" id=\"bTime\" value=\"%s\" /> %s<br />", $row["bTime"], $row["bTime"]); 
      } 

     } 

     /* free result set */ 
     $result->free(); 
    } 

    /* close connection */ 
    $mysqli->close(); 
    ?> 
</body> 

</html> 

您對MySQL連接,POST dDate變量一些檢查。同樣使用免費的一次結果集不再是必要的。希望這對你有所幫助。