PHP输入框到数据库

时间:2017-12-02 22:26:26

标签: php

我正在尝试自学PHP。我想知道如何与数据库交互并从网站插入数据,并将数据显示回网页上的表格。

我试图让用户编辑结果或将它们显示在输入框中。这样,用户可以编辑数据并将其发送回数据库。但是,我被困住了。我尝试过不同的方法,似乎没有一种方法可行。我接受了建议。

bookingid是用户选择的内容。

我知道所有的表名都不是那么好,但我正在学习。

     $query = "SELECT * FROM Trip_Booked Where bookingId = $bookingid";

        //executes the query
        $result = mysqli_query($db,$query);

        // create table and display top row

        echo "<td>".$row['email']."</td>";

        echo "<div align='center'>";
        echo "<table cellpadding=2 border=1>";
        echo "<tr>";           
         echo "<td><strong>booking ID</strong></td>";           
        echo "<td><strong>boatdate</strong></td>";
        echo "<td><strong>fromdate</strong></td>";
        echo "<td><strong>saleto</strong></td>";
        echo "<td><strong>salefrom</strong></td>";
        echo "<td><strong>NoOfAdults</strong></td>";
        echo "<td><strong>NoOfWheelchair</strong></td>";
        echo "<td><strong>NoUnder2</strong></td>";
        echo "<td><strong>NoChild3–10</strong></td>";
        echo "<td><strong>NoChild11–16</strong></td>";
        echo "<td><strong>TotalPassgers</strong></td>";
        echo "</tr>";
        // print each record one after another
        while($row = mysqli_fetch_assoc($result)) 
        {
            echo "<tr>";                   
            echo "<td>".$row['bookingId']."</td>";
            echo "<td>".$row['boatDate']."</td>";
            echo "<td>".$row['fromDate']."</td>";
            echo "<td>".$row['saleto']."</td>";
            echo "<td>".$row['salefrom']."</td>";
            echo "<td>".$row['NoOfAdults']."</td>";
            echo "<td>".$row['NoOfWheelchair']."</td>";
            echo "<td>".$row['NoUnder2']."</td>";
            echo "<td>".$row['NoChild3–10']."</td>";
            echo "<td>".$row['NoChild11–16']."</td>";
            echo "<td>".$row['TotalPassgers']."</td>";
            echo "</tr>";
        }
        echo "</table>";
        echo "</div>";


?>

我希望结果显示在一个输入框中供用户编辑,因为它将进入表格并检查它是否从数据库中提取正确的信息。

2 个答案:

答案 0 :(得分:0)

您需要将数据输出到所需的输入字段中。小例子:

<input type="hidden" name="bookingId" value="<?php echo $row["bookingId"];?>" /> <input type="text" name="NoOfAdults" value="<?php echo $row["NoOfAdults"];?>" />

使用POST的表单操作,然后您可以使用$_POST['NoOfAdults']运行UPDATE查询并使用$_POST['bookingId']作为WHERE

答案 1 :(得分:0)

一个非常简单的例子;仔细查看mysqli的用法,因为我不使用mysqli ...

需要注意的事项:

  1. 使用准备好的陈述。期。
  2. 通常的做法是完成所有脚本内容,然后输出HTML。不要将逻辑与演示混合在一起。
  3. 注意变量是GET还是POST。我同时使用GETPOST的原因是因为我使用GET来显示特定记录;但POST用于更改记录的任何内容。
  4. 我使用camelCase作为变量,但使用小写作为#id。请注意,如果你不知道,这可能会令人困惑。
  5. 我首先检查这是否是更新记录的请求。如果是,请执行更新,然后重定向回同一页面以防止重新提交。 (只有在没有发送输出的情况下才可以使用。见第2点)
  6. 使用<?= ?>格式是个人偏好;我喜欢它,因为它使HTML代码更清晰,并使PHP尽可能不引人注目。
  7. 使用<form method='{GET | POST}'>而不使用action只需发送回相同的网址即可。
  8. // Create connection
    $db = new mysqli($servername, $username, $password, $dbname);
    
    // Check connection
    if ($db->connect_error) {
        die("Connection failed: " . $db->connect_error);
    } 
    
    
    // first, take action on POST results if this is an update
    if($_POST['action']=='update') {
    
        // use prepared query to avoid SQL injection
        $query = "UPDATE Trip_Booked SET boatDate=?, fromDate=?, saleto=?, salefrom=?, NoOfAdults=?, NoOfWheelchair=?, NoUnder2=?, NoChild3_10=?, NoChild11_16=?, TotalPassgers=? WHERE bookingId=?";
        $result = $db->prepare($query);
        $result->bind_param("ssssiiiiiii", $_POST['boatDate'],$_POST_['fromDate'],$_POST_['saleto'],$_POST_['salefrom'],$_POST_['NoOfAdults'],$_POST_['NoOfWheelchair'],$_POST_['NoUnder2'],$_POST_['NoChild3_10'],$_POST_['NoChild11_16'],$_POST_['TotalPassgers'],$_POST['bookingId']);
        $result->execute();
    
        // since we don't want post data resent on back button press, redirect back to this page (change url to match)
        header("Location: http://www.example.com/?bookingId=" . $POST['bookingId']); 
        exit;
    }
    
    // if not an update, but we do have the booking ID, find the row using BookingId
    // use prepared query to avoid SQL injection
    
    if($_GET['bookingId']) {
    
        $query = "SELECT * FROM Trip_Booked Where bookingId = ?";
        $result = $db->prepare($query);
        $result->bind_param("s", $_GET['bookingId']);
        $result->execute();
    
    }
    

    现在,我们拥有输出HTML所需的一切。请记住,PHP是一种模板化语言,所以不要害怕使用它。

    <!-- language: lang-html -->
    // continuing from above
    ?><html>
        <head>
            <title>Edit a Booking</title>
        </head>
        <body>
            <h1>Choose a Page</h1>
            <form method="get">
            <label for="bookingid">Page</label><input type="text" id="bookingid" name="bookingId" />
            <input type="submit" value="Go to page" />
            </form>
    
            <?php if($_GET['bookingId']): ?>
            <!-- better way to enter values: -->
            <!-- <div><label for="fieldname">Label</label><input type="text" id="fieldname" name="fieldname" value="{value}" /></div> -->
    
            <h1>Edit Fields</h1>
            <form method="post">
            <input type="hidden" name="action" value="update" />
            <input type="hidden" name="bookingId" value="<?= htmlentities($_GET['bookingId']) ?>" />
            <table>
                <thead>
                    <tr>
                        <th>bookingId</th>
                        <th>boatDate</th>
                        <th>fromDate</th>
                        <th>saleto</th>
                        <th>salefrom</th>
                        <th>NoOfAdults</th>
                        <th>NoOfWheelchair</th>
                        <th>NoUnder2</th>
                        <th>NoChild3_10</th>
                        <th>NoChild11_16</th>
                        <th>TotalPassgers</th>
                    </tr>
                </thead>
                <tbody>
                    <!-- since this is an edit of only one record, you could use 'if' instead of 'while' -->
                    <?php while($row = $result->fetch_object())): ?>
                    <tr>
                        <th><input type="text" name="bookingId" value="<?= $row->bookingId ?>" /></th>
                        <th><input type="text" name="boatDate" value="<?= $row->boatDate ?>" /></th>
                        <th><input type="text" name="fromDate" value="<?= $row->fromDate ?>" /></th>
                        <th><input type="text" name="saleto" value="<?= $row->saleto ?>" /></th>
                        <th><input type="text" name="salefrom" value="<?= $row->salefrom ?>" /></th>
                        <th><input type="text" name="NoOfAdults" value="<?= $row->NoOfAdults ?>" /></th>
                        <th><input type="text" name="NoOfWheelchair" value="<?= $row->NoOfWheelchair ?>" /></th>
                        <th><input type="text" name="NoUnder2" value="<?= $row->NoUnder2 ?>" /></th>
                        <th><input type="text" name="NoChild3_10" value="<?= $row->NoChild3_10 ?>" /></th>
                        <th><input type="text" name="NoChild11_16" value="<?= $row->NoChild11_16 ?>" /></th>
                        <th><input type="text" name="TotalPassgers" value="<?= $row->TotalPassgers ?>" /></th>
                    </tr>
                    <?php endwhile; ?>
                </tbody>
            </table>
    
            <input type="submit" value="Edit" />
            </form>
    
            <?php endif; ?>
        </body>
    </html>