从数据库中删除特定图像[simple php/mySql]
我有一个图像上传表单,它的工作很好 但是在同一个表单下面,我想要一些图片列表,在那里我可以通过点击它的X按钮来删除特定的图片。 我写的代码,它的工作,但它总是删除列表上的第一个图像,无论我点击哪个X从数据库中删除特定图像[simple php/mySql],php,mysql,Php,Mysql,我有一个图像上传表单,它的工作很好 但是在同一个表单下面,我想要一些图片列表,在那里我可以通过点击它的X按钮来删除特定的图片。 我写的代码,它的工作,但它总是删除列表上的第一个图像,无论我点击哪个X <form method="post"> <ul> <?php $host = "127.0.0.1"; //database location
<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>
-
/wp内容/上传/“高度=50宽度=60/>
问题是您将所有内容都放在同一个表单中。当表单有多个同名字段时,它只发送其中一个字段
为每个删除按钮制作单独的表单:
<?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; ?>
-
/wp内容/上传/“高度=50宽度=60/>
如果你想要一个非javascript的解决方案,你可以做Juhana建议的多表单的事情。或者,如果您想要一个表单,那么您可以在每个图像下添加一个单选按钮(甚至多个选择的复选框),然后使用一个提交按钮删除您的选择
-
/wp内容/上传/“高度=50宽度=60/>
尝试在删除的SQL查询之前检查$imagename
是什么,并确保它对于每个图片都是正确的。在OP的情况下,它将删除最后一张图片而不是第一张图片是否有意义,因为PHP不会只保留具有相同名称的多个输入的最后一个值?谢谢,这正是我所需要的。我同意这是可怕的安全明智的,但这只是简单的测试,我被困在这个有一段时间。
<?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();
}
}
?>