当我使用php / mysql单击按钮时,我想选择特定的行

时间:2017-04-29 10:07:26

标签: php mysql

我想在我的表中单击删除按钮或编辑按钮时选择特定行,因为我的表中的每一行都有2个按钮,一个用于删除,另一个用于编辑但是删除行的最后一个ID不是行i想要它 。 我希望当我单击同一行中的按钮删除行时。 请查看下面的图片,了解我的意思

Picture for the table

我正在使用此代码创建表

                while($row = mysqli_fetch_assoc($result))
            {               
                echo '
                <tr class="w3-hover-orange">
                     <td>
                         <a class="links" href="topic.php?id=' . $row['topic_id'] . '">' . $row['topic_subject'] . '</a>
                     </td>                   
                     <td>
                        ' . date('d-m-Y', strtotime($row['topic_date'])) . ' 
                     </td>                                
                     <td> 
                     </td>                  
                     <td>    
                    <a href="edit_topic.php" name="topicEdit"  id = "topicEdit" class = "w3-button tableButtons" >Edit</a>
                     <button href="#" name="topicDelete" type="button" id="topicDelete" data-toggle="modal" data-target="#myModal" class ="w3-button tableButtons">Delete</button>

                     </td>
                     </tr>';
                  $_SESSION['topic_id_number'] = $row['topic_id'];
                 $_SESSION['topciSubject'] = $row['topic_subject'];
 }

            echo'</table></form></div>';

低于删除主题的代码

 if(isset($_POST['topicDelete'])){
$delete = $_SESSION['topic_id_number'];
$query = "DELETE FROM topics WHERE topic_id =".$delete;
$result = mysqli_query($con,$query);
header ("location: awareness-projects.php");

}

3 个答案:

答案 0 :(得分:0)

我认为$row['topic_id'] id是要执行删除的ID。

进行以下更改:

<button href="#" name="topicDelete" type="button" id="topicDelete" data-toggle="modal" data-target="#myModal" class ="w3-button tableButtons">Delete</button>

将其更改为anchor并在其href中传递此$row['topic_id'],并在删除页面上获取其值,如:

<a href="xyz.php?id='".$row['topic_id'] ."'"

答案 1 :(得分:0)

由于表条目是通过循环动态生成的,所以在循环结束时它将始终占用最后一个id,因为您使用的会话名称对于每个while循环条目都是相同的。所以每次都会覆盖,最后一个id将在session变量中。 您可以尝试几种选择

  1. 为每个循环命名会话变量,使其对每个循环都不同
  2. 第二个是将当前记录的id存储在锚标记的data属性中,因此您必须将按钮标记更改为锚标记,然后按照以下步骤操作:
  3. <a href="#" name="topicDelete" type="button" id="topicDelete" data-toggle="modal" data-target="#myModal" class ="w3-button tableButtons" data-cid="$row['topic_id']">Delete</a>

    然后当你点击链接时使用下面的jquery代码获取当前链接的值并将其存储到模态的隐藏字段中

    $(".tableButtons").click(function(){
        var  id=$(this).data("cid");
        alert(id);//check the id if you are getting current id or not
        $("#temp").attr("value",id);//this is the hidden field in modal which id is temp and name it to whatever name you use to get the value of it in your delete code  
    });
    

    无论何时提交表单,此隐藏字段的值都将使用id的值设置,如果您使用表单操作方法,则会提交。 然后你可以将它的值检索为普通文本框,因为你已经做了很多次,我希望如此。 祝一切顺利。 我个人使用这个代码来完成我的工作,它完全正常;)

答案 2 :(得分:-1)

使用query-string发送topic_id,如下所示

<a href="xyz.php?id='".$row['topic_id']."'" name="topicDelete" type="button" id="topicDelete" data-toggle="modal" data-target="#myModal" class ="w3-button tableButtons">Delete</a>  

删除代码 -

if(isset($_POST['topicDelete'])){
$delete = $_GET['id'];
$query = "DELETE FROM topics WHERE topic_id =".$delete;
$result = mysqli_query($con,$query);
header ("location: awareness-projects.php");
}