循环时从PHP中删除MySQL行

时间:2015-12-03 04:01:09

标签: php mysql

我有一个while循环,在表格中显示我的数据库列和行。

我想制作一个可以删除特定MySQL行的按钮,但不幸的是我无法选择删除所有行中的哪一行只是因为我使用" while loop"以HTML格式显示我的数据库内容。

提供图片以便更好地了解我想要做的事情: enter image description here
所以是的,我希望在单击绿色按钮时 - 发送MySQL查询以删除此行(存在于我的数据库中)。

提供代码:

<?php
//CONECT TO MYSQL
include 'database.php';

//GET VALUES
        $sql = "SELECT * FROM amountcontainer";
        $result = $conn->query($sql);


        if ($result->num_rows > 0) 
        {
            //Table headlines - NOT A PHP
            echo "<table class='moneytable'>
                    <tr>
                        <th style='background-color: #2d323a; color: white;'>Date</th>
                        <th style='background-color: #2d323a; color: white;'>Amount</th>
                        <th style='background-color: #2d323a; color: white;'>Reason</th>
                    </tr>";

            // output data of each row
            while($row = $result->fetch_assoc()) 
            {

                //RED //Make statement of amount red if it has a " - "
                if(strpos($row['amount'],'-') !== false)
                {

                    echo 
                    "
                        <tr>
                            <th style='font-weight: normal;background-color: #ff9999;' class='row-time'>" . $row['time'] . "</th>
                            <th style='font-weight: normal;background-color: #ff9999;' class='row-amount'>" . $row['amount'] . "</th>
                            <th style='font-weight: normal;background-color: #ff9999;' class='row-reason'>" . $row['reason'] . "</th>
                        </tr>

                    ";

                }

                //NORMAL //Make statement of amount normal if it doesn't have a " - "
                else
                {
                    echo 
                    "
                        <tr>
                            <th style='font-weight: normal;' class='row-time'>" . $row['time'] . "</th>
                            <th style='font-weight: normal;' class='row-amount'>" . $row['amount'] . "</th>
                            <th style='font-weight: normal;' class='row-reason'>" . $row['reason'] . "</th>
                        </tr>

                    ";

                }


            }
            echo "</table>";
        } 

        else 
        {
            echo "0 results";
        }

4 个答案:

答案 0 :(得分:1)

这听起来像ajax的地方。下面是一个粗略的例子,可能会给你一个很好的起点。

<?php
while($row = $result->fetch_assoc()) {
    $isNegative = strpos($row['amount'],'-') !== false;

    echo "<tr class='record' data-id=\"{$row["id"]}\">";
    //Use ternary operator & css classes
    echo "<td class='standard-record ".$isNegative ? "color-red" : "" ."''>{$row["record"]}</td>";
    echo "</tr>";
}
?>
<script>
    $(".record").click(function(){
        var request = {
            id: $(this).data("id")
        };
        $.post( "delete-record.php", request, function(data){
            $(this).remove();
        });
    });
</script>

答案 1 :(得分:1)

更改此

if(strpos($row['amount'],'-') !== false) # wrong way

到这个

if($row['amount'] < 0) # detecting negative numbers

答案 2 :(得分:1)

首先,只对表头使用<th>个元素。对于实际数据单元格,请使用<td>元素。

要允许删除单个数据库行,您可以在表中包含链接。在创建表行的循环中:

                    <tr>
                        <td>" . $row['time'] . "</td>
                        <td>" . $row['amount'] . "</td>
                        <td>" . $row['reason'] . "</td>
                        <td><a href='?deleteId=$row[keyID]'>Delete</a></td> 
                    </tr>

在这种情况下,当选择“删除”链接时,它会使用$ _GET变量调用相同的脚本:“deleteId”可以测试,如果找到,则执行删除行。您还可以将表格嵌入到html表单中,并将提交按钮添加到每行的单元格中,并将提交的值设置为要删除的行ID。

答案 3 :(得分:1)

您需要添加额外的

<th style='font-weight: normal;' class='row-reason'><a class="crossBtn" href="?del_id=".$row['id'].">&nbsp;</a></th>

获取del_id并删除此特定记录。