如何从HTML表和数据库中删除查询?

时间:2017-10-02 12:04:28

标签: php html mysql sql pdo

我有一个包含2个表格的数据库:
第一个表"数据"列(姓名,电话,人格)
第二桌"链接"列(linkid,link,personid)
Personid是将两个表连接起来的外键,一个到多个"关系和它" CASCADE" DELETE或UPDATE时, 所以一个人可以有超过1个链接。

HTMl表看起来像:

name    phone    links
jim     432443   link1
                 link2
                 link3
                 .....
_______________________
john    54545    link1
_______________________
...     .....    .....

显示数据库的代码包含在html表中:

$state = $connect->prepare("SELECT data.personid, name, phone, link FROM data JOIN links ON data.personid = links.personid");
$state->execute();
$results = $state->fetchAll(PDO::FETCH_ASSOC);
$data = [];

foreach($results as $result) {

        $data[$result['personid']] = [
            'name' => $result['name'],
            'phone' => $result['phone'],
            'links' => [],
        ];


    $data[$result['personid']]['links'][] = $result['link'];
}

<table>

     <thead>
        <tr>
            <th>Name</th>
            <th>Phone</th>
            <th>Links</th>
            </tr>
     </thead>
     <tbody>    
        <?php
          foreach ($data as $row) {
                        echo "<tr>";
                        echo "<th>".$row['name']."</th>";
                        echo "<td>".$row['phone']."</td>";
                        echo "<td>".implode('<br/>', $row['links'])."</td>";
                        echo "<td>";
                        echo "</td>";
                        echo "</tr>";
             }
         ?>
</table>

我想添加删除功能以删除其中一些数据,例如每个查询旁边的复选框和一个名为&#34;删除所选&#34;的按钮。例如,我知道如何添加checkBox和按钮,但我不知道实现此功能的代码。

2 个答案:

答案 0 :(得分:1)

希望它适用于添加请检查此处显示的代码。

在html上包括:

<form action="action.php" method="POST">
<button type="submit">delete</button>
<table>

 <thead>
    <tr>
        <th><input type="checkbox" name="check_select" readonly="readonly" onclick="toggleselect(this,'delete_data');"></th>
        <th>Name</th>
        <th>Phone</th>
        <th>Links</th>
        </tr>
 </thead>
 <tbody>
<?php
      foreach ($data as $row) {
                    echo "<tr>";
                    echo '<input type="checkbox" class="check_box" name="checkbox_delete_data[]" value="'.$row['primary_id_of_your_table'].'">';
                    echo "<td>".$row['name']."</td>";
                    echo "<td>".$row['phone']."</td>";
                    echo "<td>".implode('<br/>', $row['links'])."</td>";
                    echo "<td>";
                    echo "</td>";
                    echo "</tr>";
         }
     ?>

</table>
</form>

在Javascript中:

function toggleselect(source,chkbox_name) 
{
      checkboxes = document.getElementsByName('checkbox_'+chkbox_name+'[]');

      for(var i=0, n=checkboxes.length;i<n;i++) {
        checkboxes[i].checked = source.checked;
      }
}

现在,您可以访问action.php文件中的所选复选框,并使用它来删除查询。

例如:

<?php
if (isset($_POST["submit"])) {
    $selected_check_boxes = implode(',', $_POST["checkbox_delete_data"]);
    $query= $connect->prepare("Delete from table where table.primary id IN ($selected_check_boxes)");
    $query->execute();
}
?>

答案 1 :(得分:0)

我会建议在&lt;中建立整个表格。形式&gt;并使用personId为每个复选框添加一些“data-”属性。然后使用javascript处理(在表单提交时)这些属性并合并SQL查询,如

delete from data where personid (1,2,3, ...)

如果您需要更多帮助,我可以编写一些代码,但是自己开发它总是更好:)

干杯