簡體   English   中英

PHP 形式與 while 循環

[英]PHP form with while loop

我在生成可以打印基於 SQL 查詢的表單的頁面時遇到了一些麻煩。 在這種情況下,我需要執行查詢以列出名稱為 Porcac1x 的表的所有行。 內容需要是顯示當前變量值並且可以更新的輸入字段。 這正是我卡住的地方。 如何創建基於 php while 循環的可變表單? 使用附加的代碼,我可以列出內容並顯示所有變量,但是在創建表單操作以更新值時遇到了麻煩。 我想明確一點,我不關心安全性,因為代碼將在本地環境中運行,我是唯一可以訪問的人。

這是當前 output 在此處輸入圖像描述 但是保存按鈕當然不起作用

 <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="description" content="$1"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" type="text/css" href="style.css"> <title>test page</title> </head> <body><form action="" method="post"> <?php $servername = "localhost"; $username = "root"; $password = "root"; $dbname = "root"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: ". $conn->connect_error); } $sql = "SELECT `id`, `title`, `amount` FROM `expenses` WHERE name='Porcac1x';"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "ID: <input type='text' name='".$row["id"]."' value='".$row["id"]."'> Title: <input type='text' name='".$row["title"]."' value='".$row["title"]."'> Amount: <input type='text' name='".$row["amount"]."' value='".$row["amount"]."'> <button type='submit' name='save'>Save</button><br>"; } } else { echo "0 results"; } if(isset($_POST['save'])){ $myID = $_POST["id"];//??? < Issue $myTitle = $_POST["title"];//??? < Issue $myAmount = $_POST["amount"]; //??? < Issue echo $myID; echo $myTitle; echo $myAmount; $sqlUpdate = "UPDATE expenses SET title='$myTitle', amount ='$myAmount' WHERE id='$myID';"; echo $sqlUpdate; if ($conn->multi_query($sqlUpdate) === TRUE) { echo "Record updated successfully"; $risposta= "Record updated successfully"; } else { echo "Error updating record: ". $conn->error; $risposta= "Error updating record: ". $conn->error; } $conn->close(); }?> </form> </body> </html>

就像我在評論中所說的那樣,你需要數組表示法。 (或每行 1 個表格)

這是每行 1 個表單元素的解決方案:

<html>
 <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="description" content="$1">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <link rel="stylesheet" type="text/css" href="style.css">

    <title>test page</title>
</head>

 <body>                 
     <?php

        $servername = "localhost";
        $username = "root";
        $password = "root";
        $dbname = "root";

        // Create connection
        $conn = new mysqli($servername, $username, $password, $dbname);
        // Check connection
        if ($conn->connect_error) {
            die("Connection failed: " . $conn->connect_error);
        }

        $sql = "SELECT `id`, `title`, `amount` FROM `expenses` WHERE name='Porcac1x';";
        $result = $conn->query($sql);

        if ($result->num_rows > 0) {
            // output data of each row

            while($row = $result->fetch_assoc()) {
                echo '<form method="post">';
                echo "ID: <input type='text' name='id' value='".$row["id"]."'> Title: <input type='text' name='title' value='".$row["title"]."'> Amount: <input type='text' name='amount' value='".$row["amount"]."'> <button type='submit' name='save'>Save</button><br>";
                echo '</form>';
            }
        } else {
            echo "0 results";
        }

        if(isset($_POST['save'])){

            $myID = $_POST["id"];//??? < Issue
            $myTitle = $_POST["title"];//??? < Issue
            $myAmount = $_POST["amount"]; //??? < Issue

            echo $myID;
            echo $myTitle;
            echo $myAmount;

            $sqlUpdate = "UPDATE expenses SET title='$myTitle', amount ='$myAmount' WHERE id='$myID';";

            echo $sqlUpdate;

            if ($conn->multi_query($sqlUpdate) === TRUE) {
                echo "Record updated successfully";
                $risposta= "Record updated successfully";
            } else {
                echo "Error updating record: " . $conn->error;
                $risposta= "Error updating record: " . $conn->error;
            }

            $conn->close();
        }



        ?>
    </body>
</html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM