问:我希望能够更新数据库,以便更改网站上包含电影评论的某些动态内容。
第一步,我需要能够从数据库动态填充的下拉菜单中选择要更新的电影评论。
第二步是填充与从下拉框中选择的电影相关的一组表单,以便可以编辑信息。
第三步是运行更新查询以更改数据库。
这是我编写的代码,用于使用存储在正在运行的数据库中的电影标题填充下拉菜单。
<form action="" method="POST">
<select name="title">
<option value="">Select Movie Title</option>
<?php
$sql="SELECT * FROM review ORDER BY title ASC";
$result=mysql_query($sql);
while ($row=mysql_fetch_assoc($result)) {
echo "<option value=" . $row['title'] . ">" . $row['title'] . "</option>";
}
echo"</select>";
?>
<input type="submit" name="select" value="Select">
我在弄清楚如何填充将显示与下拉选择相关的信息的表格时遇到了麻烦。
<?php
if(isset($_POST['select'])){
$query = mysql_query("SELECT * FROM REVIEW WHERE title = '$title'");
while ($fetch=mysql_fetch_assoc($query)){
?>
<p>Title:<input type="text" size="35" name="title" value="<?php echo $_POST['title']; ?>"></p>
<p>Source:<input type="text" size="35" name="source" value="<?php echo $_POST['source']; ?>"></p>
<p>Rating:<input type="text" size="5" name="rating" value="<?php echo $_POST['rating']; ?>"></p>
Review:<br>
<textarea name="review" cols="40" rows="7">
<?php echo $_POST['review']; ?>
答:在while循环中从表中获取哪些数据?您不要从'$ fetch'使用。
并且您只需要具有审阅字段(每个电影标题只有一次)。因此,虽然不需要循环。
您没有说明来源和评级。但是我认为这会帮助你:
<?php
if(isset($_POST['select'])){
$title = $_POST['title'];
$query = mysql_query("SELECT * FROM REVIEW WHERE title = '$title'");
$review = @mysql_result($query,0);
?>
<p>Title:<input type="text" size="35" name="title" value="<?php echo $title; ?>"></p>
<p>Source:<input type="text" size="35" name="source" value="<?php echo $_POST['source']; ?>"></p>
<p>Rating:<input type="text" size="5" name="rating" value="<?php echo $_POST['rating']; ?>"></p>
Review:<br>
<textarea name="review" cols="40" rows="7">
<?php echo $review; ?>
答:你好
您是否尝试在<option>中添加名称属性?像这样..
echo '<option name= "title" value=" '. $row['title'] .' ">" '. $row['title'] .' "</option>';
您的查询可以修改为这样的内容。
$query = mysql_query("SELECT * FROM REVIEW WHERE title = '". $_POST['title'] ."'");
!警告!在数据库中添加表单输入的数据时请务必小心,请确保清理这些数据。否则,您的站点将极易受到攻击。
不要将fetch用作您的变量名。此变量名以后可能会出现命名大肠杆菌的问题。我们应该避免许多PHP保留字。使用$ row代替。我知道$ fetch并不是实际的保留字,但FETCH确实..最好远离它们,而不是近距离接触它们。.我希望您理解我想说的...
喜欢 ..
while ($row=mysql_fetch_assoc($query)){
不要用这个
<p>Title:<input type="text" size="35" name="title" value="<?php echo $_POST['title']; ?>"></p>
并改用它。
<p>Title:<input type="text" size="35" name="title" value="<?php echo $row['title']; ?>"></p>
对其余的代码进行更改。如果要基于表单中输入的值更新数据库,则必须在查询上方添加另一个表单。
像这样的东西
if(isset($_POST['select'])){
echo '<form name="updateFor" action="post" method="update.php">';
## put the rest of your codes here..
} // this must be the end of your while loop
## add the submit form input
echo '<input type="submit" name="update" value="update">';
echo '</form>';
现在在update.php上,您可以执行以下操作...
if(isset($_POST['update'])){
## prepare your update query..
## !IMPORTANT! make sure to santize everything before adding it to your database.
$update_query = ("UPDATE REVIEW SET title = '". $_POST['title'] ."', source = '". $_POST['source'] ."', rating='". $_POST['rating'] ."', review = '". $_POST['review'] ."' WHERE title = ". $_POST['title']) ;
再次确保在将表单中的所有数据发布到数据库之前,请对其进行清理...