0

我想编辑单行而不是全部,但现在我添加了 ID,现在他什么都不做,没有任何改变:(,在我给他 ID 之前,他们编辑所有行。

变量

$titletxt = ($_POST['title_txt']);
$value1 = ($_POST['value1_txt']);
$value2 = ($_POST['value2_txt']);
$ID = ($_POST['id']);

<?php
if( isset($_POST['edit']) ){
    $con=mysqli_connect("localhost","root","","hanza");
    if (mysqli_connect_errno()){
        echo "Neizdevas savienoties ar MySQL: " . mysqli_connect_error();
    }
    $sql="UPDATE dati SET title='$titletxt', value1='$value1', value2='$value2' WHERE ID = '$ID'";
    if (!mysqli_query($con,$sql)){
        die('Error: ' . mysqli_error($con));
    }
    echo '<script>
    alert(" Ieraksts ir veiksmigi labots! ");

    window.location.href = "index.php";
    </script>';
    mysqli_close($con);
}
?>

该代码来自表单,我显示来自数据库的结果。

<form action="insert.php" method="post">
    <table>
        <tr>
            <td class="td_opt">Title</td>
            <td class="td_opt">Value 1</td>
            <td class="td_opt">Value 2</td>
            <td class="td_opt">&nbsp;</td>
        </tr>
        <tr>
            <input type="hidden" name="id" value="">
            <td class="td_title"><input type="text" name="title_txt" value=""></td>
            <td class="td_value"><input type="text" name="value1_txt" value=""></td>
            <td class="td_value"><input type="text" name="value2_txt" value=""></td>
            <td class="td_value"></td>
        </tr>
        <?php
            $con=mysqli_connect("localhost","root","","hanza");
            if (mysqli_connect_errno()) {
                echo "Neizdevas savienoties ar MySQL: " . mysqli_connect_error();
            }
            $result = mysqli_query($con,"SELECT * FROM dati");
            while($row = mysqli_fetch_array($result)) {
                echo "<tr>";
                echo "<input type='hidden' value='" . $row['ID'] . "'>";
                echo "<td><input type='text' value='" . $row['title'] . "'></td>";
                echo "<td><input type='text' value='" . $row['value1'] . "'></td>";
                echo "<td><input type='text' value='" . $row['value2'] . "'></td>";
                echo "<td><button name='edit' class='frm_btns'>Edit</button></td>";
                echo "</tr>";
            }
            mysqli_close($con);
        ?>
    </table>
    <div class="atp"></div>
    <button class="frm_btns" name="pievienot">New</button> // add new row
</form>

也许某些变量不能只编辑一行?

4

3 回答 3

1

我能看到什么。你没有给任何名字

   // echo "<input type='hidden' value='" . $row['ID'] . "'>"; 

所以你不会在 $_POST['id'] 中获得价值

这个元素应该命名为 id。

在更新之前,您应该检查 id 是否不为空。

于 2013-09-07T10:34:14.417 回答
1

问题是在您使用的 html 中 button 类型 button 的值不会发送到服务器,而是您需要使用type="submit"

echo "<td><button name='edit' class='frm_btns'>Edit</button></td>";// is wrong

因此它没有通过你的 if 检查,因为$_POST['edit']没有设置

if(isset($_POST['edit'])){.... }

更改按钮以提交

echo "<td><input name='edit' class='frm_btns' type='submit' value='Edit'/></td>";

此外,您还错过了将名称添加到input您刚刚分配了值的元素中,也将它们命名为

echo "<input name='id' type='hidden' value='" . $row['ID'] . "'>"; ...for remaining elements also
于 2013-09-07T10:34:42.183 回答
0
<input type="hidden" name="id" value="">

在这一行中,没有为参数 id 设置任何值。

请确保在提交表单之前为“id”设置了正确的值。(使用 javascript)

我还注意到您正在使用按钮进行编辑。因此,请确保您正在调用点击事件来设置 id 并提交表单。

作为建议,您必须为每个行按钮指定一个值属性。因此,使用 getAttribute() 属性可以轻松检索当前单击的“行 id”。

<button name='edit' class='frm_btns' value='" . $row['ID'] . "'>Edit</button>
于 2013-09-07T10:48:37.363 回答