【问题标题】:How to delete query with a checkbox如何使用复选框删除查询
【发布时间】:2014-01-28 08:56:59
【问题描述】:

我正在努力编写一个代码,如果我选择一个复选框并按下删除,它将删除一个查询。

更新:按照你们的建议更新了代码,只是现在不起作用 是当复选框选中并提交时,它不会删除查询

这是我的时间:

$query="SELECT id,datum,titel,artikel FROM nieuws ORDER BY id DESC";
$result=mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
echo ("<div id=\"artikeltitel\" align=\"center\">
    <div id=\"containerdatum\">".$row['datum']."</div>
    <div id=\"containertitel\">".$row['titel']."</div>
    <div id=\"container3\" style=\"font-size:12px;\">".$row['id']."
    <input type=\"checkbox\" name=\"checkbox[]\" id=\"checkbox\"  value=\"".$row['id']."\"       />
    </div>
    </div>
    <div class=\"container\" align=\"center\">
    <h2 class=\"acc_trigger\"><a href=\"#\"> &#187; </a></h2>
    <div class=\"acc_container\">
    <div class=\"block\">".$row['artikel']."</div>
    <div class=\"fb-comments\" data-href=\"http://www.zpb-polonez.be/user.php\" data-num-    posts=\"10\" data-width=\"678\" style=\"margin-top:2px;\"></div>
    </div>
    </div>
    ");

} 这是我读我的sql的部分,不知道是否一切正常,大部分代码 我抄袭了我在学校学到的其他作品

require_once("inc/connection.php");
mysql_select_db("nieuws");
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$id = $_POST['id'];
$datum = $_POST["datum"];
$titel = $_POST["titel"];
$artikel = $_POST["artikel"];
$checkbox = $_POST["checkbox"];
$titel = mysql_real_escape_string(nl2br(htmlentities($_POST["titel"])));
$artikel = mysql_real_escape_string($_POST["artikel"]);
$id = mysql_real_escape_string($_POST['id']);
date_default_timezone_set('GMT');
$datum = date('Y-m-d', strtotime(str_replace('-', '/', $datum)));
    if(isset($_POST['add'])){
        if(!empty($_POST['titel']) && !empty($_POST['artikel']) && !empty($_POST['datum'])){
        $query="INSERT INTO nieuws (id,datum,titel,artikel) VALUES ('$id','$datum','$titel','$artikel')";
        $datum = date('Y-m-d', strtotime(str_replace('-', '/', $datum)));
        str_replace('<br />', "\n", $textarea);
        $result=mysql_query($query);
        header("location: user.php");
        $juist1 = true;
        }else{
        $fout1 = true;
        }
    }if(isset($_POST['delete'])){
        foreach($_POST['checkbox'] as $del_id){
        $del_id=$checkbox; 
        $sql="DELETE FROM nieuws WHERE id='$del_id'";
        $result = mysql_query($sql);
        header("location: user.php");
        }
    }

}

已经提交了

<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
<input type="submit" name="delete" value="verwijderen" />
</form>

【问题讨论】:

  • hmm.. 你是在结合 while 和 elseif 吗? elseif 可以在 if.. 之后使用,而不是在一段时间之后使用。 while 循环是否放在 if 语句中?
  • 不,在 elsif 之前有一个 if 但我只复制了这部分,没有 while 循环不在 if 语句中,就像我告诉 php 不是我的专长 :-)
  • header("位置:user.php");应该在forloop之后
  • 快速浏览一下,我注意到 id=\"checkbox\" 被多次使用(当有多个复选框时)。 ID 必须是唯一的(虽然这不能解决问题,但您可以在下面找到答案)
  • 您是否有义务“删除”。你能发出一个 UPDATE 来代替将标志设置为“隐藏”吗?

标签: php html mysql checkbox


【解决方案1】:

试试这个,

删除脚本:

if(isset($_POST['delete'])){
 foreach($_POST['checkbox'] as $del_id){
    $sql="DELETE FROM nieuws WHERE id='$del_id'";
    $result = mysql_query($sql);
 }
 header("location: user.php");
}

当脚本:

<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="post">
<?php
$query="SELECT id,datum,titel,artikel FROM nieuws ORDER BY id DESC";
$result=mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_row($result)){
    echo ("<div id=\"artikeltitel\" align=\"center\">
        <div id=\"containerdatum\">".$row['datum']."</div>
        <div id=\"containertitel\">".$row['titel']."</div>
        <div id=\"container3\" style=\"font-size:12px;\">".$row['id']."
        <input type=\"checkbox\" name=\"checkbox[]\" id=\"checkbox\"  value=\"".$row['id']."\"       />
        </div>
        </div>
        <div class=\"container\" align=\"center\">
        <h2 class=\"acc_trigger\"><a href=\"#\"> &#187; </a></h2>
        <div class=\"acc_container\">
        <div class=\"block\">".$row['artikel']."</div>
        <div class=\"fb-comments\" data-href=\"http://www.zpb-polonez.be/user.php\" data-num-    posts=\"10\" data-width=\"678\" style=\"margin-top:2px;\"></div>
        </div>
        </div>
        ");
 }?>
 <input type="submit" name="delete" value="verwijderen" />
 </form>

【讨论】:

  • 嗨,Krish,不,它不会显示我从数据库中获取的值.. ?
  • 给我看你的sql查询,它对调试有帮助!
  • Krish 我现在无法回答我自己的问题
  • @molovhic,在您的问题部分添加您的 sql 查询!
  • hmm 仍然没有从数据库中检索数据,认为我将 while 列表更改为行有问题..?
【解决方案2】:
try this
if(isset($_POST['checkbox'])){
    foreach($_POST['checkbox'] as $del_id){
        $sql="DELETE FROM nieuws WHERE id='$del_id'";
        $result = mysql_query($sql);
     }
    header("location: user.php");
}

【讨论】:

    【解决方案3】:
    <form > //open form
    <?php
    while loop(conditon)
    {?>
    <input type="checkbox" name="checkbox_val[]" id="checkbox"  value="<?php echo 
    $row['id'];?>"/>
    <?php
    } ?>
    <input type="submit" value="Submit" name="btn_post">
    </form >//closing
    <?php
    if(isset($_POST['btn_post']){
    $check_val= $_POST['checkbox_val'];
    foreach($check_val as $chval)
    {
       $sql="DELETE FROM nieuws WHERE id='$chval[0]'";
        $result = mysql_query($sql);
    }
    }
    ?>
    

    【讨论】:

      【解决方案4】:

      只是看一下您提供的内容,我看不出您在哪里定义 $row 以便用 $row['id'] 填充复选框。如果您尝试简单地使用 $id 而不是 $row['id'] 会怎样?

      <input type=\"checkbox\" name=\"checkbox[]\" id=\"checkbox\"  value=\"$id\" />
      

      如果您检查 HTML,复选框的值是否正确填充?

      【讨论】:

        猜你喜欢
        • 2014-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-05
        • 1970-01-01
        • 2011-06-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多