我正在尝试制作一个允许用户编辑数据库中记录的表单。
我的main.php
是一个表,用户可以点击记录进行编辑/删除:
echo "<td>".$row["fname"].", ".$row["first_name"]."</center></td>";
echo "<td><center>".$row["gender"]."</center></td>";
echo "<td><center>".$row["city"]."</center></td>";
echo "<td><center>".$row["extra"]."</center></td>";
echo '<td><center><a href="form.php?id='.$row["p_ID"].'"><img src="edit_icon.png"/></a><center></td>';
echo '<td><center><a href="delete.php?id='.$row["p_ID"].'"><img src="delete.gif"/></a><center></td>';
echo "</tr>";
}
?>
<input type="hidden" name="p_ID" value="<?php echo $row["p_ID"]?>"></input>
<input type="hidden" name="lname" value="<?php echo $row["lname"]?>"></input>
etc..
当用户点击修改图标时,它会重定向到我需要在各自字段中显示的值($row['fname']
)的表单页面。我已尝试过建议的解决方案,但我仍然不知道如何正确地完成此操作。我一直在收到错误。这是我用form.php
@$submit=$_POST['submit'];
@$lname=$_GET['lname'];
@$gender=$_GET['gender'];
@$city=$_GET['city'];
@$extra=$_GET['extra'];
?>
Last name <input type="text" name="lname" value= <?php echo $lname ?>><br><br>
Gender <input type="radio" name="gender" value="M" <?php if($gender=="M") {echo "checked";} else {echo " ";} ?>/>M
<input type="radio" name="gender" value="F" <?php if($gender=="F") {echo "checked";} else {echo " ";} ?>/>F<br><br>
City <select name="city">
<option value="x">Select</option>
<?php
$db=mysql_connect("localhost","root") or die('Not connected : ' . mysql_error());
mysql_select_db("my_db",$db) or die (mysql_error());
$SQL="SELECT * FROM cities";
$result=mysql_query($SQL) or die(mysql_error());
$num_results=mysql_num_rows($result);
mysql_close($db);
for ($i=0;$i<$num_results;$i++)
{
$row=mysql_fetch_array($result);
echo"<option value='".$row['city_id']."'", $row['city_id']==$row['city_ID']? " selected='selected'" : '',">".$row['city']."</option>";
}
?>
</select><br><br>
Extra <input type="checkbox" name="extra" value="yes" <?php if($extra=="yes") {echo "checked";} else {echo " ";} ?>/><br><br>
而且我现在并不关心任何SQL注入或任何事情,我只需要这个工作。我会感激任何帮助!
错误:所有内容的未定义索引
答案 0 :(得分:1)
您在mysql_query
使用mysql_fetch_array
之前关闭了连接。
您正在尝试错误地获取行。
除非您在查询后进行大量处理,否则不需要 mysql_close
,因为在脚本完成运行后连接已关闭。
另外,声明这样的变量以删除未定义的索引错误:
$submit = isset($_POST['submit']) ? mysql_real_escape_string($_POST['submit']) : "";
注意:这也可以防止sql注入,但mysql_real_escape_string()
仅在连接后才能工作。
<?php
$db=mysql_connect("localhost","root") or die('Not connected : ' . mysql_error());
mysql_select_db("my_db",$db) or die (mysql_error());
$submit = isset($_POST['submit']) ? mysql_real_escape_string($_POST['submit']) : "";
//other vars here
$SQL="SELECT * FROM cities";
$result=mysql_query($SQL) or die(mysql_error());
while($row = mysql_fetch_array($result)){
echo "<option value='".$row['city_id']."'>".$row['city']."</option>";
}
mysql_close(); // now you can close the connection
?>
答案 1 :(得分:0)
您需要的是表单提交检查。以下是单页更新脚本的一般形式:
<?php
if(isset($_POST['submit'])) {
// Form was submitted, process it and display message
exit(); // Prevent form from being displayed again
}
?>
<!doctype html>
<html>
<body>
<form method="POST" action="form.php">
<!-- fields -->
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>