从数据库中删除特定图像[simple php/mySql]

从数据库中删除特定图像[simple php/mySql],php,mysql,Php,Mysql,我有一个图像上传表单,它的工作很好 但是在同一个表单下面,我想要一些图片列表,在那里我可以通过点击它的X按钮来删除特定的图片。 我写的代码,它的工作,但它总是删除列表上的第一个图像,无论我点击哪个X <form method="post"> <ul> <?php $host = "127.0.0.1"; //database location

我有一个图像上传表单,它的工作很好

但是在同一个表单下面,我想要一些图片列表,在那里我可以通过点击它的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>

  • /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();
                        }
                    }
                ?>