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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

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

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

PHP
回首憶惘然 2023-09-15 10:30:35
我遇到這個(gè)問題,其中 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)我單擊刪除按鈕時(shí),它只會(huì)刪除所有房間,而不是我要?jiǎng)h除的房間。我相信該程序認(rèn)為我由于“isset”功能而立即按下了所有刪除按鈕。我嘗試過的事情:將 isset 內(nèi)的 $query2 行替換為echo $idroom;,輸出為room1room2room3。這意味著程序認(rèn)為我同時(shí)按下了所有按鈕。
查看完整描述

2 回答

?
ITMISS

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊

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

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

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

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

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

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

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

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

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

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

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

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


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

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超8個(gè)贊

在您的代碼中,您沒有遵循基本結(jié)構(gòu)。使用JS來實(shí)現(xiàn)編輯/刪除的點(diǎ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'");

}


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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