【问题标题】:UPDATE record DB from form PHP从 PHP 表单更新记录数据库
【发布时间】:2018-12-10 08:21:20
【问题描述】:

我有一个页面“elenco.php”,在其中我在一个表中显示所有数据库记录,并且在最后的每一行中,我有一个按钮“编辑”,它提交到页面“edit.php”的“ID”用户想要编辑的行。

elenco.php

  <?php 
    include '/var/www/phpMyEdit/open_dati.php';


    $query = "SELECT * FROM scadenziario"; 
    $result= mysql_query($query);


    echo "<h2>Elenco Scadenziario</h2>";

        echo "<table border>";
            echo "<tr><td>ID</td><td>Aspetto Generale</td><td>Descrizione</td><td>Ragione Sociale</td><td>Numero Civico</td><td>Validita</td><td>Data</td><td>Preavviso</td><td>Scadenza</td><td>Prescrizioni</td><td>Frequenza</td><td>Data Controllo</td><td>Prossimo Controllo</td><td>Note</td>";
                while($row = mysql_fetch_array($result)){
                    echo "<tr><td>" . $row[ID] . 
                    "</td><td>". $row[Aspetto_Generale]. 
                    "</td><td>". $row[Descrizione].
                    "</td><td>". $row[Ragione_Sociale].
                    "</td><td>". $row[Num_Civico].
                    "</td><td>". $row[Validita].
                    "</td><td>". $row[Data].
                    "</td><td>". $row[Preavviso].
                    "</td><td>". $row[Scadenza].
                    "</td><td>". $row[Prescrizioni].
                    "</td><td>". $row[Frequenza].
                    "</td><td>". $row[Data_Controllo].
                    "</td><td>". $row[Prox_Controllo].
                    "</td><td>". $row[Note].
                    "</td><td><form action='edit.php' method='POST'><input type='hidden' name='tempID' value='".$row['ID']."'/><input type='submit' name='submit-btn' value='Edit' /><form></td></tr>";
                }
        echo "</table>";

    mysql_close();
    ?> 

edit.php

 <?echo'
        <html>
        <head>
        <link rel="stylesheet" type="text/css" href="form.css">
        </head>';

        include '/var/www/phpMyEdit/open_dati.php';

        $temp = $_POST['tempID'];

        $query = "SELECT * FROM scadenziario WHERE ID = '$temp' "; 
        $result= mysql_query($query);

            while($row = mysql_fetch_array($result)){
                    $aspettogen = $row['Aspetto_Generale'];
                    $desc = $row['Descrizione'];
                    $ragsoc = $row['Ragione_Sociale'];
                    $numcivico = $row['Num_Civico'];
                    $validita = $row['Valdita'];
                    $odierna = $row['Data'];
                    $preavviso = $row['Preavviso'];
                    $scadenza = $row['Scadenza'];
                    $presc = $row['Prescrizioni'];
                    $freq = $row['Frequenza'];
                    $datacontr = $row['Data_Controllo'];
                    $proxcontr = $row['Prox_Controllo'];
                    $note = $row['Note'];
            }?>



    <? echo'
        <body>
            <div class="container">  
                <form id="contact" method="POST">'?>



                <? echo'
                                <img src="logo.jpg"> 
                                <fieldset>
                                <input name="aspettogen2" type="text" value="'.$aspettogen.'">
                                </fieldset>
                                <fieldset>
                                    <input name="desc" type="text" maxlength="255" value="'.$desc.'">
                                </fieldset>
                                <fieldset>
                                    <input name="ragsoc" type="text" maxlength="100">
                                </fieldset>
                                <fieldset>
                                    <input name="numcivico"  type="text" maxlength="20">
                                </fieldset>
                                <fieldset>
                                    <input name="validita" type="text">
                                </fieldset>
                                <fieldset>
                                    <input name="odierna" type="data">
                                </fieldset>
                                <fieldset>
                                    <input name="preavviso" type="text">
                                </fieldset>
                                <fieldset>
                                    <input name="scadenza" type="text">
                                </fieldset>
                                <fieldset>
                                    <input name="presc" type="text" maxlength="255">
                                </fieldset>
                                <fieldset>
                                    <input name="freq" type="number">
                                </fieldset>
                                <fieldset>
                                    <input name="datacontr" type="text">
                                </fieldset>
                                <fieldset>
                                    <input name="proxcontr" type="text">
                                </fieldset>
                                <fieldset>
                                    <input name="note" type="text">
                                </fieldset>             
                            </form>
                        </div>
                    </body>
                </html>';

    mysql_close(); 
    ?>

但我不明白为什么在页面edit.php中,id值总是表DB的最后一条记录。

例如,我的表有 35 条记录,如果我单击页面“elenco.php”中第 10 行的编辑按钮,在页面 edit.php 中我总是收到 ID = 35(数据库的最后一条记录) .

你们能帮帮我吗?

【问题讨论】:

  • 你检查源代码了吗?
  • 您是否在浏览器控制台的所有隐藏输入中看到 35?
  • 在页面的控制台中我看到每个按钮编辑的正确值,但在页面edit.php中我总是收到最后一条记录
  • echo "&lt;tr&gt;&lt;td&gt;ID&lt;/td&gt;&lt;td&gt; //table; 缺少右引号
  • elenco.php 文件中很少有引用('")错误。更正它并再次检查。

标签: php html mysql database


【解决方案1】:

将您的 mysql* 函数替换为 elenco.php 和 edit.php 中的 mysqli* 函数。

然后检查 post 数组中的所有内容,并确保您正在获取所有数据

var_dump($_POST);

还有这段代码:

$query = "SELECT * FROM scadenziario WHERE ID = '$temp' "; 

我假设你的 id 是整数类型,所以你不必使用'',试试:

 $query = "SELECT * FROM scadenziario WHERE ID = $temp "; 

希望这能有所帮助。

【讨论】:

  • array(2) { ["tempID"]=> string(2) "35" ["submit-btn"]=> string(4) "Edit" } 我收到 35 我不明白为什么
  • 好的,你试过用 mysqli 函数替换 mysql 吗? mysql 已被弃用,因此它可能会给您带来一些问题(您需要将连接链接作为 mysqli_query($connection, $query) 的第一个参数传递)
  • 我刚刚注意到,在您的 elenco.php 中,在带有 id 值的表单中,您没有关闭表单,您有
    ,应该是
猜你喜欢
  • 1970-01-01
  • 2014-11-13
  • 2012-04-18
  • 2012-03-31
  • 2013-07-13
  • 2013-06-08
  • 2016-01-15
  • 2013-03-06
  • 1970-01-01
相关资源
最近更新 更多