首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不能使用复选框删除行

不能使用复选框删除行
EN

Stack Overflow用户
提问于 2014-04-25 15:14:31
回答 2查看 88关注 0票数 1

我正在尝试删除使用checkbox连接到数据库的表中的一行(如果只是一行或多行也没关系),但它不起作用,因为什么都没有发生。它不会删除,也不会出现错误或警告,只是刷新而已。

php:

代码语言:javascript
运行
复制
 <?php
    if(isset($_POST['del_event']))
    {
     if(isset($_POST['check']) && count($_POST['check']))
     {
      $array = array("check" => $_POST['check']);
      $id = implode(',', $array['check']);
      $result = mysql_query("DELETE FROM event WHERE event_id = '$id'") or die(mysql_error());
      }
    }
  ?>

html:

代码语言:javascript
运行
复制
<form class="buttons" method="post" action="event.php">
<div class="button-wrap">
<input type="button" id="add_event" name="add_event" value="Add Event"/>
<input type="submit" id="del_event" name="del_event" value="Delete Event"/>
</div>  
 </form>
<tbody class="tbody-event-list-table2">
<?php
 require "connection.php";
  $check = mysql_query("SELECT * FROM event") or die(mysql_error());
 if(mysql_num_rows($check) > 0)
{
while($row = mysql_fetch_array($check))
{
     $id = $row['event_id'];
    $name = $row['event_name'];
    $start = $row['start'];
    $end = $row['end'];
    $venue = $row['event_venue'];
echo 
"<tr>
  <td><input type='checkbox' name='check' id='check' class='check' value='$id'/><a href=''        
 class='event-link'>$name</a></td><td>$start</td><td>$end</td><td>$venue</td>";
 echo "</tr>";
 }
}   
else
{
  echo 
  "<tr>
   <td colspan='4'>There Are No Events.</td>
  </tr>";
}
?>
</tbody>

它是if(isset($_POST['del_event'])),因为'del_event‘是删除按钮的名称,除非选中复选框,否则该按钮将被禁用。

代码语言:javascript
运行
复制
<script>
 var chkbox = $(".check"),
            button = $("#del_event");
       button.attr("disabled","disabled");
        chkbox.change(function(){
            if(this.checked){
                button.removeAttr("disabled");
            }else{
                button.attr("disabled","disabled");
            }
        });
  </script>

php版本为5.5.9

EN

回答 2

Stack Overflow用户

发布于 2014-04-25 15:23:34

如果是check变量,则仍会显示未定义的错误

代码语言:javascript
运行
复制
if (isset($_POST['check']) && count($_POST['check']) != 0)

但是,如果表单中的复选框处于关闭状态,则复选框不会随表单一起发送,因此该复选框不存在。Carpetsmoker说对了一半,一个合适的解决方案应该是:

代码语言:javascript
运行
复制
if (isset($_POST['check'])) {
    if ( (int) $_POST['check'] !== 0) {

    }
}

顺便说一句,最好总是将你的变量转换为你正在检查的属性类型。在PHP中,0可以是0、false或null。

通过使用===进行安全类型检查来防止这种情况

票数 0
EN

Stack Overflow用户

发布于 2014-04-30 10:35:02

所以我修复了这个问题。首先,我必须删除分隔按钮和表格的"form“,所以现在"form”被包裹在按钮和表格周围。其次是删除的php代码也改变了。

代码语言:javascript
运行
复制
<form class="buttons" method="post" action="event.php">
<div class="button-wrap">
<input type="button" id="add_event" name="add_event" value="Add Event"/>
<input type="submit" id="del_event" name="del_event" value="Delete Event"/>
<input type="submit" id="edit_event" name="edit_event" value="Edit Event">
</div>
<div class="event-list-table2" >
    <table class="event-table">
            <thead>
                <tr>
                    <th>Event Name</th>
                    <th>Start Event</th>
                    <th>End Event</th>
                    <th>Venue</th>
                </tr>
            </thead>
            <tbody class="tbody-event-list-table2">
                <?php
                    require "connection.php";
                    $check = mysql_query("SELECT * FROM event") or die(mysql_error());
                    if(mysql_num_rows($check) > 0)
                    {
                        while($row = mysql_fetch_array($check))
                        {
                            $id = $row['event_id'];
                            $name = $row['event_name'];
                            $start = $row['start'];
                            $end = $row['end'];
                            $venue = $row['event_venue'];
                            echo 
                            "<tr>
                                <td><input type='checkbox' name='check[]' class='check' value='$id'><a href='' class='event-link' value='$id' name='event-link'>$name</a></td><td>$start</td><td>$end</td><td>$venue</td>";
                            echo "</tr>";
                        }
                    }   
                    else
                        {
                            echo 
                            "<tr>
                                <td colspan='4'>There Are No Events.</td>
                            </tr>";
                        }
                ?>
            </tbody>
<?php
    if (isset($_POST['del_event']) && isset($_POST['check']))
    {
        foreach($_POST['check'] as $del_id)
        {
            $del_id = (int)$del_id;
            $sql = mysql_query("DELETE FROM event WHERE event_id = $del_id") or die(mysql_error());
                if($sql)
                {
             echo "<meta http-equiv=\"refresh\" content=\"0;URL=event.php\">";
}
        }
    }
?>
    </table>
</div>
     </form>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23286507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档