簡體   English   中英

從數據庫PHP創建的html表中刪除

[英]Delete from html table made by database PHP

這是下表,我正在嘗試從中刪除行:

<form method="POST" >
        <table class="sortable">
            <thead>
                <tr>
                    <th id="makehead">Make </th>
                    <th id="modelhead">Model </th>
                    <th id="idhead">Delete </th>
                </tr>
            </thead>
            <tbody>
                <?php
                $i = 0;

                foreach ($carArray as $k => $carInfo) {
                    $i++;
                    echo '<tr>';
                    if ($i % 2) {
                        echo '<td class="make">' . $carInfo['make'] . '</td>
                              <td class="model">' . $carInfo['model'] . '</td>
                              <td class="id"><input type="checkbox" name="id" value="' . $carInfo['id'] . '">' . $carInfo['id'] . '</td>';
                    } else {
                        echo '<td class="makelight">' . $carInfo['make'] . '</td>
                              <td class="modellight">' . $carInfo['model'] . '</td>
                              <td class="idlight"><input type="checkbox" name="id" value="' . $carInfo['id'] . '">' . $carInfo['id'] . '</td>';
                    }
                }
                ?>
                </tr>

        </table>

    </tbody>
    <td>
        <input Onclick="return ConfirmDelete();" name="delete" type="submit" id="delete" value="Delete"></input>
    </td>
</table></form>

如您所見,我正在使用復選框在每一行中打勾,然后刪除按鈕將顯示一條確認消息,然后應刪除,但這不是我的if語句:

if ($_REQUEST['delete']) {
        $dbid = $_REQUEST['id'];
        $db->setdbid($dbid);

因此,當這不起作用時,我在這里查看了其他問題,人們說我需要一個setter函數,所以我這樣做了:編輯:這是我的類文件。

public function setdbid($dbid){
    $this->dbid=$dbid;
}

為此主要功能刪除事物:

 public function delete($dbid) {
    try {
        $sql = "DELETE FROM cars WHERE id = '$dbid'";
        $this->db->exec($sql);

        echo "Car has been deleted.";
    } catch (PDOException $e) {
        echo $e->getMessage();
    }
}

這就是我認為的所有相關代碼,如果可以的話,請幫助我。

您只需要替換PHP中的一些代碼即可:

if ($_REQUEST['delete']) {
    $dbid = $_REQUEST['id'];
    $db->delete($dbid); //Assuming delete is well a $db method, else replace it by the correct delete call
}

當您使用具有相同名稱的復選框時,必須將其更改為一個數組(這樣,您將可以一次刪除多行):

<td class="id"><input type="checkbox" name="ids[]" value="' . $carInfo['id'] . '">' . $carInfo['id'] . '</td>';

然后在您的php代碼中,將此類數據視為:

if ($_REQUEST['delete']) {
     foreach($_REQUEST['ids'] as $id){
         $xxx->delete(intval($id)); //convert to integer to avoid sql injection.
     }
}

請注意,您不需要設置$db->setdbid因為您將該ID傳遞為delete方法的參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM