PHP форма с циклом while - PullRequest
0 голосов
/ 21 июня 2020

У меня проблемы с созданием страницы, которая может печатать форму на основе запроса SQL. В этом случае мне нужно выполнить запрос, чтобы перечислить все строки таблицы, имя которой - Porcac1x. Содержимое должно быть полями ввода, которые показывают текущее значение переменной и могут быть обновлены. Именно здесь я застреваю. Как я могу создать форму, которая является переменной на основе php, а l oop? С помощью прилагаемого кода я могу перечислить содержимое и показать все переменные, но у меня возникли проблемы с созданием действия формы для обновления значений. Я хотел бы прояснить, что меня не волнует безопасность, поскольку код будет работать в локальной среде, к которой я единственный, у кого есть доступ.

Это текущий результат image

<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 голос
/ 21 июня 2020

Как я уже сказал в комментариях, чтобы это работало, вам понадобится нотация массива. (Или 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...