删除预订已存在的单选按钮

时间:2014-02-18 21:26:49

标签: php html sql

我正在尝试使用php,sql和html制作我自己的预订日记。

我希望能够通过检查我的数据库来阻止在我的预订表单上预订,以便在允许我的插入语句执行之前查看记录是否已存在。

我希望能够做一个select语句来检查预订是否已经存在。 如果时间和日期不存在,我想要RADIO BUTTON PRESENT 其他 如果时间和日期我想要单选按钮不存在。

我一直在思考,但却想不出办法。

我可以就如何克服我的问题提出一些建议吗?

由于

我的SQL表如下 TABLE预订( b日期, bTime时间, bName CHAR(30), bNumber CHAR(30), bReg CHAR(30), bMakeModel CHAR(30) )

这是我到目前为止所做的,但我想不出怎么做,我想我可能会以错误的方式解决这个问题,也许增加的for循环会更适合:

<?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>

2 个答案:

答案 0 :(得分:1)

直到你发布一些代码以获得更好的帮助,数据库结构以及最终一个或两行的例子。以下是步骤。

检查部分(表格): 如果您尚未提交表单,请使用AJAX签入您的数据库。 如果您已提交表单,只需在数据库上执行查询。

对于SQL部分: 一个简单的计数可以做到这一点(如果没有找到行则返回0,如果找到n行则返回n),但检索ID更好(如果没有找到行,则为NULL)。如果您需要有关查询的帮助,请描述表结构以及要检查的字段。

最后一部分(显示或不显示标签: 在PHP中,只需要测试您的SQL返回并对计数值(>或不是0)或ID(如果找到行,则为NOT NULL,否则为NULL)执行条件测试。 您可以根据测试结果添加单选按钮(或不是)

提示: 使用ID更好,因为如果找到了行,可以将其添加到隐藏的INPUT标记中。如果您稍后决定更新它,则可以使用此ID。

编辑(现在使用您的代码): 在您的PHP代码中,您有许多错误: - &GT;你的if条件没有括号括起来 - &GT; PHP语句中的逻辑运算符与SQL不同:AND (SQL) = && (PHP) - &GT;在if中,输入标记不在echo中。输入标记是HTML而不是PHP

小贴士: - 你确定你有一个很好的连接($con)资源到数据库吗? - 在sql字符串中无需添加最后的分号“;” - 始终关于SQL使用查询中的星号别名运行比枚举每个字段慢。如果有一天你需要得到一个巨大的结果集,那将是一个优化

答案 1 :(得分: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变量的检查。也不再需要使用免费的一次结果集。希望这能帮助你。