我想编辑单行不是全部,但现在我添加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"> </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>
也许某些变量不是仅编辑一行的核心?
答案 0 :(得分:1)
我能看到的。你还没有给出任何名字
// echo "<input type='hidden' value='" . $row['ID'] . "'>";
所以你不会在$ _POST ['id']
中获得价值这个元素应该是名称为id。
在更新之前,您应该检查ID是否为空白。
答案 1 :(得分:1)
问题出在您使用的html按钮中,按钮的值不会发送到服务器,而是需要使用type="submit"
echo "<td><button name='edit' class='frm_btns'>Edit</button></td>";// is wrong
因此,由于$_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
答案 2 :(得分:0)
<input type="hidden" name="id" value="">
在这一行中没有为参数id设置值。
请确保在表单提交前为“id”设置正确的值。 (使用javascript)
此外,我注意到您正在使用按钮进行编辑。因此,请确保您正在调用click事件来设置ID并提交表单。
作为建议,您必须为每个行按钮指定值属性。因此,使用getAttribute()属性检索当前单击的“行ID”将很容易。
<button name='edit' class='frm_btns' value='" . $row['ID'] . "'>Edit</button>