使用PHP和MySQL从数据库中删除单个行

时间:2015-11-11 07:38:03

标签: php mysql sql-delete

我通过SELECT FROM...(MySQL)从数据库中获取表中的值。这工作正常,但现在我想在每行中有一个删除按钮从数据库中删除此行。问题是创建日期都具有相同的名称属性

<?php  $createDate = $_REQUEST['createDate'] ;

function deleteQuantityPlan($ createDate){

createConnection();

$delete_quantity_plan = "DELETE FROM andon_quantity_plan where erstelldatum = '". $createdate ."'";

$result = mysql_query($delete_quantity_plan) or die ("error");

return;   }?>

HTML:

<form action="shiftenter.php" method="post">
                <div class="col-lg-2" style="background-color:#E1E1E1;width:65%;border-radius:10px;float:left;margin-left:17.5%;margin-right:17.5%;margin-top:2.5%">
                  <h3>Taktvorgabe hinzuf&uuml;gen!</h3>
                    <div style="height:5px;"></div>
                            <table style="font-size:12px;" id="tabelle" class="table">
                                <thead>
                                  <tr>
                                    <th>Erstelldatum</th>
                                    <th>G&uuml;ltig von</th>
                                    <th>G&uuml;ltig bis</th>
                                    <th>Schichtnummer</th>
                                    <th>St&uuml;ck/min</th>
                                    <th style='float:right'>Taktvorgabe l&ouml;schen</th>
                                  </tr>
                                </thead>
                            <tbody id="table1Body">

                                <?php
                                $takttdaten = getAllQuantityPlans();

                                for ($i = 0; $i < sizeof($takttdaten); $i++) {
                                    echo "<tr>";
                                    echo "<form action='shiftenter.php' method='post'><td name='datum'>" . $takttdaten[$i]->erstelldatum . "</td>";
                                    echo "<td>" . $takttdaten[$i]->validfrom . "</td>";
                                    echo "<td>" . $takttdaten[$i]->validuntil . "</td>";
                                    echo "<td>" . $takttdaten[$i]->shiftnumber . "</td>";
                                    echo "<td>" . $takttdaten[$i]->planquantity . "</td>";
                                    echo "<td><button style='float:right;' class='btn btn-danger' type='submit'>X</button></td></form>";
                                    echo "</tr>";
                                }
                                ?>
                         </tbody>
                     </table>
                </div>
            <button type="submit" style="width:15%;margin-top:35px;" class="btn btn-info">
                <span style="float: left;" class="glyphicon glyphicon-floppy-disk"></span>Taktvorgabe speichern!</button>
        </form>

2 个答案:

答案 0 :(得分:3)

$delete_id = $_POST['checkbox'];此代码可能没有值。那是因为您的checkbox没有value。我认为你的代码在你改变时会起作用:

<input type='checkbox' name='checkbox'>

进入

<input type='checkbox' name='checkbox' value="<?= $takttdaten[$i]->[YOUR_ID_VARIABLE] ?>">

修改

您只能使用带有GET变量的链接而不是表单。以下是您的案例示例:

假设您的评论/问题中的函数位于shiftenter文件中,请将PHP更改为:

if (isset($_GET['deletePlan']) && $_GET['deletePlan'] == 'true') {
    $deleteDate = $_GET['deletePlanDate'];

    if($deleteDate != null && $deleteDate != "")
    {
        deleteQuantityPlan($deleteDate);
    }
    else
    {
        echo "Plan delete failed, Date [".$deletePlanDate."] was not valid.";
    }       
}

然后将HTML表格中的PHP部分更改为:

<?php
$takttdaten = getAllQuantityPlans();
for ($i = 0; $i < sizeof($takttdaten); $i++) {
    echo "<tr>";
    echo "<td>" . $takttdaten[$i]->erstelldatum . "</td>";
    echo "<td>" . $takttdaten[$i]->validfrom . "</td>";
    echo "<td>" . $takttdaten[$i]->validuntil . "</td>";
    echo "<td>" . $takttdaten[$i]->shiftnumber . "</td>";
    echo "<td>" . $takttdaten[$i]->planquantity . "</td>";
    echo "<td> <a href='shiftenter.php?deletePlan=true&deletePlanDate=".$takttdaten[$i]->erstelldatum ."'>Delete</a></td>";
    echo "</tr>";
}
?>

答案 1 :(得分:0)

从代码中,我看不到您引用了要删除的ID。

这是你的代码:

echo "<td><form action='shiftenter.php' method='post'><input type='checkbox' name='checkbox'>
<button style='float:right;' name='deletePlan' class='btn btn-danger' type='submit'>X</button></form></td>";
echo "</tr>";

我可能会重构您的代码。

我不会在最后一个td中包含一个表单元素,而是将表单放在整个表格中。 然后,您必须将复选框命名为此复选框[],以便将其定义为复选框数组。然后你得到一个循环的复选框数组 - 那些有值的(如果我没记错的话)。

根据当前的代码,我有以下建议:

如果你想在PHP中处理它,你将在shiftenter.php文件中执行$ _POST ['checkbox'] 但是复选框没有数据库中的帖子编号。 您可以通过为输入添加值来解决此问题,也可以添加输入类型='hidden'name ='itemid'value ='[YOUR_ID_VARIABLE]?&gt;

这看起来像这样:

解决方案1 ​​:(以上建议)

echo "<td><form action='shiftenter.php' method='post'><input type='checkbox' name='checkbox' value='<?php echo $takttdaten[$i]->[YOUR_ID_VARIABLE] ?>'>
<button style='float:right;' name='deletePlan' class='btn btn-danger' type='submit'>X</button></form></td>";
echo "</tr>";

解决方案2:

echo "<td><form action='shiftenter.php' method='post'>
<input type='hidden' name='itemid' value='<?php echo $takttdaten[$i]->[YOUR_ID_VARIABLE] ?>'>
<input type='checkbox' name='checkbox' value='<?php echo $takttdaten[$i]->[YOUR_ID_VARIABLE] ?>'>
<button style='float:right;' name='deletePlan' class='btn btn-danger' type='submit'>X</button></form></td>";
echo "</tr>";

然后用$ _POST ['itemid'];

请求

备选方案3:

echo "<td><form action='shiftenter.php?itemid=<?php echo $takttdaten[$i]->[YOUR_ID_VARIABLE] ?>' method='post'>
<input type='checkbox' name='checkbox' value='<?php echo $takttdaten[$i]->[YOUR_ID_VARIABLE] ?>'>
<button style='float:right;' name='deletePlan' class='btn btn-danger' type='submit'>X</button></form></td>";
echo "</tr>";

然后您可以使用$ _GET ['itemid'];

获取此值

请记住检查您的值,使它们成为整数(在这种情况下)。 你可以这样做: $ itemId =(int)$ _POST ['itemid']; 或使用PHP清理过滤器,您可以在这里阅读:http://php.net/manual/en/filter.filters.sanitize.php

这里的santizing示例:

$myInt = "asfdsfsdafdsafs";
echo filter_var($myInt, FILTER_SANITIZE_NUMBER_INT);