第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

isset 函數(shù)提交 while 循環(huán)內(nèi)的所有按鈕 PHP

isset 函數(shù)提交 while 循環(huán)內(nèi)的所有按鈕 PHP

PHP
回首憶惘然 2023-09-15 10:30:35
我遇到這個問題,其中 while 循環(huán)內(nèi)的提交按鈕重新執(zhí)行 while 循環(huán)。PHP:$query1 = $con->query("SELECT * FROM room");if($query1->num_rows > 0) {    while($row1 = $query1->fetch_array()) {        $idroom = $row1['idroom'];        echo "<tr>";        echo "<td> $idroom </td>";        echo "<td> <form method='POST'> <input type='submit' name='delete' value='DELETE'> </form></td>";        echo "</tr>";        if(isset($_POST['delete'])) {            $query2 = $con->query("DELETE FROM room WHERE idroom='$idroom'");        }    }}表:[1]: https: //i.stack.imgur.com/dujps.png問題是,當(dāng)我單擊刪除按鈕時,它只會刪除所有房間,而不是我要刪除的房間。我相信該程序認(rèn)為我由于“isset”功能而立即按下了所有刪除按鈕。我嘗試過的事情:將 isset 內(nèi)的 $query2 行替換為echo $idroom;,輸出為room1room2room3。這意味著程序認(rèn)為我同時按下了所有按鈕。
查看完整描述

2 回答

?
ITMISS

TA貢獻1871條經(jīng)驗 獲得超8個贊

這段代碼有很多問題,尤其是它非常不安全并且容易受到注入。在繼續(xù)之前,您應(yīng)該閱讀準(zhǔn)備好的陳述。對此的教程和答案無窮無盡,因此我不會在這里介紹它們。為了幫助新程序員(不久前我還是個新程序員),我將指出我認(rèn)為這里出現(xiàn)的問題:

  1. $query1 = $con->query("SELECT * FROM room");

每次腳本運行時都會運行它。這是需要認(rèn)識到的關(guān)鍵事情。如果您加載頁面,或者提交帖子刪除,這種情況總會發(fā)生。這導(dǎo)致:

  1. if($query1->num_rows > 0) { while($row1 = $query1->fetch_array()) { ...

您開始循環(huán),循環(huán)播放every記錄。注意every.

因此,對于每條記錄,您都需要檢查:

  1. if(isset($_POST['delete'])) {...

這就是您的記錄被刪除的地方,也是 CBroe 在他的評論中所指出的。您相信(我認(rèn)為)您檢查了該個人記錄的刪除,但您只是檢查isset($_POST['delete'])并且這樣做是為了EVERY記錄。請記住,該POST變量一直存在,直到腳本結(jié)束或刪除為止。因此,通過單擊“刪除”并提交該_POST值,您可以為循環(huán)中的每個記錄傳遞此條件。

  • 在進一步討論之前,您應(yīng)該先消化一下這一點,因為這是新程序員的常見錯誤。請記住,計算機按順序讀取并執(zhí)行腳本,記住它也會按照EXACTLY您的要求執(zhí)行,僅此而已。典型的例子是描述泡一杯咖啡。如果我對你說“打開水壺,將咖啡放入杯子,加滿水,加牛奶”,你就會煮出一杯咖啡,但如果你對電腦說這句話,你最終最多只會穿著一臺電腦一個水壺正在尋找一個杯子來放咖啡并告訴你牛奶不是一個數(shù)字。

所以解決辦法。好吧,我不會為你寫它,有不同的選擇。您應(yīng)該將某種標(biāo)識符傳遞給特定于您想要的記錄的帖子,然后您需要檢查例如 isset POST[delete] && isset(POST['room_id'])。然后,您需要決定執(zhí)行此操作的最佳位置,在腳本的開頭,在不同的腳本中,可能不在循環(huán)內(nèi)(這很少是優(yōu)秀編程的標(biāo)志)。如果您要刪除一條記錄,您可能應(yīng)該在為其創(chuàng)建輸出之前執(zhí)行此操作。(為什么收集一條記錄然后刪除它,這樣有效嗎?)。

如果您確實必須在循環(huán)內(nèi)執(zhí)行此操作,那么您需要在運行刪除之前進行某種檢查,以確保房間的 id 與帖子值的 id 相同。

希望這對您有所幫助,但請確保您作為緊急事項研究并開始使用準(zhǔn)備好的陳述 - 2020 年確實沒有理由不這樣做


查看完整回答
反對 回復(fù) 2023-09-15
?
蝴蝶刀刀

TA貢獻1801條經(jīng)驗 獲得超8個贊

在您的代碼中,您沒有遵循基本結(jié)構(gòu)。使用JS來實現(xiàn)編輯/刪除的點擊事件,并使用ajax調(diào)用來執(zhí)行操作。


這是基于您的粘貼的代碼的一種解決方案,它不是標(biāo)準(zhǔn)代碼,但可以幫助您解決問題。


$query1 = $con->query("SELECT * FROM room");

if($query1->num_rows > 0) {

    while($row1 = $query1->fetch_array()) {

        $idroom = $row1['idroom'];


        $tr = "<tr>";

        $tr .= "<td> $idroom </td>";

        $tr .= "<td><form method='POST'>";

        $tr .= "<input type='hidden' name='room_id' value='".$idroom."'>";

        $tr .= "<input type='submit' name='delete' value='DELETE'> </form></td>";

        $tr .= "</tr>";


        echo $tr;

    }

}


if(isset($_POST['delete'])) {

  $roomId = $_POST['room_id'];

  $query2 = $con->query("DELETE FROM room WHERE idroom='$roomId'");

}


查看完整回答
反對 回復(fù) 2023-09-15
  • 2 回答
  • 0 關(guān)注
  • 146 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號