我有一张图片上传表单,工作正常。
但是在同一个表单下面我想要某种图像列表,我可以通过单击其X按钮来删除特定图像。 我写了代码并且它可以工作,但它总是删除列表中的第一个图像,无论我点击哪个X.
<form method="post">
<ul>
<?php
$host = "127.0.0.1"; //database location
$user = ""; //database username
$pass = ""; //database password
$db_name = ""; //database name
if(!$link = mysql_connect($host, $user, $pass)) {
echo "<p>error: ".mysql_error()."</p>";
} else {
mysql_select_db($db_name);
}
$selectAll = "SELECT image_name FROM home_images";
$doIt = mysql_query($selectAll);
// if(isset($_POST['delete'])) {
// mysql_query("DELETE FROM home_images WHERE image_name = ");
// }
?>
<?php while($result = mysql_fetch_array($doIt)) : ?>
<li style="display:inline; margin-right:10px">
<img src="<?php bloginfo('url') ?>/wp-content/uploads/<?php echo $result[0]; ?>" height=50 width=60 />
<input type="hidden" value="<?php echo $result[0]; ?>" name="imagename" />
<input type="submit" value="X" name="delete" />
</li>
<?php endwhile; ?>
<?php
if(isset($_POST['delete'])) {
$imagename = $_POST['imagename'];
$deleter = "DELETE FROM home_images WHERE image_name = '$imagename'";
if(mysql_query($deleter)) {
echo "Successful!";
echo $imagename;
} else {
echo mysql_error();
}
}
?>
</ul>
</form>
我在这里做错了什么?
答案 0 :(得分:1)
问题是你把所有东西放在同一个表格里面。当表单有多个具有相同名称的字段时,它只发送其中一个。
为每个删除按钮创建一个单独的表单:
<?php while($result = mysql_fetch_array($doIt)) : ?>
<li style="display:inline; margin-right:10px">
<form method="post">
<img src="<?php bloginfo('url') ?>/wp-content/uploads/<?php echo $result[0]; ?>" height=50 width=60 />
<input type="hidden" value="<?php echo $result[0]; ?>" name="imagename" />
<input type="submit" value="X" name="delete" />
</form>
</li>
<?php endwhile; ?>
顺便提一下,SQL查询存在巨大的安全问题。始终清理传入的数据。
答案 1 :(得分:1)
如果你想要一个非JavaScript的解决方案,你可以做Juhana建议的多形式的事情。或者,如果您想要一个表单,那么您可以在每个图像下添加一个单选按钮(甚至是多个选项的复选框),然后只需一个提交按钮即可删除您的选择。
<?php while($result = mysql_fetch_array($doIt)) : ?>
<li style="display:inline; margin-right:10px">
<img src="<?php bloginfo('url') ?>/wp-content/uploads/<?php echo $result[0]; ?>" height=50 width=60 />
<div <!--some kind of formatting here i suppose-->>
<input type="radio" value="<?php echo $result[0]; ?>" name="imagename" />
</div>
</li>
<?php endwhile; ?>
<?php
if(isset($_POST['delete'])) {
$imagename = $_POST['imagename'];
$deleter = "DELETE FROM home_images WHERE image_name = '$imagename'";
if(mysql_query($deleter)) {
echo "Successful!";
echo $imagename;
} else {
echo mysql_error();
}
}
?>