亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

PHP 中 foreach 循環每次迭代的提交按鈕

PHP 中 foreach 循環每次迭代的提交按鈕

PHP
蕭十郎 2022-08-05 16:52:51
我對編碼很陌生,所以請輕輕地去...我正在創建一個管理頁面,其中包含需要驗證的帳戶列表。我所需要的只是在單擊按鈕時將數據庫“已驗證”列中的值從0更改為1。問題在于,它為循環中所有其他返回的結果觸發相同的操作,每個結果都有自己的按鈕,而不僅僅是循環的特定迭代。任何幫助將不勝感激。代碼目前如下所示:<?php$sql ="SELECT customer.First_Name, customer.Last_Name, account.account_no, account.client_id, customer.usernameFROM customer  INNER JOIN account  ON customer.customer_id=account.client_id  WHERE validated = 0"; $tobe_validated = $dbh->query($sql);foreach ($tobe_validated as $row) {        //creating variable for account number to put in query          $clientid=$row["client_id"];        echo "<div class='valid_name_btn'>";          echo "<form method='post'><input type='submit' class='btn btn-outline-primary' value ='Validate' name='validate' id='validate'></input></form>";        echo "<div class='valid_name'>"; //div for name        echo $row["First_Name"] . " " . $row["Last_Name"]." - Account No. ". $row["account_no"]."<br/>"; //show name and account number of client        echo "</div>";        echo "</div>";        // query to change validated in customer table to 1          $sql ="UPDATE customer SET validated = 1 WHERE customer_id = '$clientid'";        // validate account when button is clicked          if(isset($_POST['validate'])) {          $dbh->query($sql);          }          }
查看完整描述

4 回答

?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

首先,您的表單在提交時不會提供有關要驗證的客戶ID的任何線索。在我的示例代碼中,我不會使用 echo,因為像這樣回顯 HTML 輸出是很丑陋的。相反,您可以像這樣操作:


?>

<div class='valid_name_btn'>

  <form method='post'>

    <input type="hidden" name="client" value="<?= $clientid ?>">

    <input type='submit' class='btn btn-outline-primary' value ='Validate' name='validate' id='validate'></input>

  </form>

  <div class='valid_name'>

    <?= $row["First_Name"] . " " . $row["Last_Name"]." - Account No. ".$row["account_no"] ?><br/>

  </div>

</div>

<?php

我已將一個隱藏的輸入字段添加到表單中,然后您可以在文件開頭的行之前對其進行評估:$tobe_validated = ..


if (isset($_POST['validate']) && (isset($_POST['client'])) {

  $clientid = $_POST['client'];

  $sql = "UPDATE customer SET validated = 1 WHERE customer_id = '$clientid'";

  $dbh->query($sql);

}

您還應該正確準備語句,或者至少對$client值進行轉義。由于我不知道$dbh是什么(你的代碼沒有告訴),我不會在這里這樣做。


查看完整回答
反對 回復 2022-08-05
?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

$sql ="UPDATE customer SET validated = 1 WHERE customer_id = $clientid";

$clientid應不帶“”


查看完整回答
反對 回復 2022-08-05
?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

你有邏輯錯誤,因為你的形式只是在傳遞值,而不是確切的。您必須從循環中移出操作,并在每個表單中添加一個隱藏字段,并相應地:validateclientid$_POSTclientid


<?php

    $sql = "SELECT customer.First_Name, customer.Last_Name, account.account_no, account.client_id, customer.username

            FROM customer

            INNER JOIN account ON customer.customer_id=account.client_id

             WHERE validated = 0";


    $tobe_validated = $dbh->query($sql);


    foreach ($tobe_validated as $row) {

        //creating variable for account number to put in query

        $clientid = $row["client_id"];


        echo "<div class='valid_name_btn'>";

            echo "<form method='post'>

                <input type='hidden' name='clientid' value='".$clientid."'>

                <input type='submit' class='btn btn-outline-primary' value ='Validate' name='validate' id='validate'></input>

            </form>";

            echo "<div class='valid_name'>"; //div for name

                echo $row["First_Name"] . " " . $row["Last_Name"] . " - Account No. " . $row["account_no"] . "<br/>"; //show name and account number of client

            echo "</div>";

        echo "</div>";

    }


    if (isset($_POST['validate']) && isset($_POST['clientid'])) {

        $clientid = $_POST['clientid'];

        $sql = "UPDATE customer SET validated = 1 WHERE customer_id = '$clientid'";

        $dbh->query($sql);

    }


查看完整回答
反對 回復 2022-08-05
?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

您可以根據鍵制作動態表單,并可以通過如下所示的適當條件來檢查按鈕是否具有特定值


<?php

$sql ="SELECT customer.First_Name, customer.Last_Name, account.account_no, account.client_id, customer.username

FROM customer 

 INNER JOIN account 

 ON customer.customer_id=account.client_id 

 WHERE validated = 0"; 


$tobe_validated = $dbh->query($sql);


foreach ($tobe_validated as $key => $row) {

        //creating variable for account number to put in query  

        $clientid=$row["client_id"];


        echo "<div class='valid_name_btn'>";  

        echo "<form method='post' name="'validation_form_'.$key"><input type='submit' class='btn btn-outline-primary' value ='Validate' name="'validate_'.$key" id="'validate_'.$key"></input></form>";

        echo "<div class='valid_name'>"; //div for name

        echo $row["First_Name"] . " " . $row["Last_Name"]." - Account No. ". $row["account_no"]."<br/>"; //show name and account number of client

        echo "</div>";

        echo "</div>";


        // validate account when button is clicked

          if(isset($_POST['validate_'.$key]) && $_POST['validate_'.$key] == 'Validate') {

            // query to change validated in customer table to 1

            $updateSql ="UPDATE customer SET validated = 1 WHERE customer_id = '$clientid'";

            $dbh->query($updateSql);

          } 

         }

如果您需要任何幫助,請告訴我


查看完整回答
反對 回復 2022-08-05
  • 4 回答
  • 0 關注
  • 149 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號