0

この問題には簡単な解決策があるように感じますが、理解できません。while ループを使用してデータベースのフィールドを表示しています。各 while ループの最後には、管理者がユーザーを承認できるフォーム入力があります。(承認された必要があるのは、その特定のレコードの承認済み列の 1 を 2 に変更することだけです)。

必要な特定のレコードではなく、すべての承認済みレコードが変更されます。私の質問は、一度に 1 つのレコードだけを選択して変更するにはどうすればよいかということです。(承認されるレコード)。あなたが私に提供できる助けをありがとう。

    <?php
      //select the database to write to
      $unapprovedTeachers = mysql_query("SELECT * FROM members_teachers WHERE approved = '1'", $dbc) or die("Could not select the unapproved teachers at this time.");
        //While loop to cycle through the rows
        while($row = mysql_fetch_assoc($unapprovedTeachers)){
            $teacher_id = $row['id'];
            echo $teacher_id;
    ?>
    <ul class="admin-fields">
    <?php
        foreach($row as $field){
            if(empty($field)){
                echo "....";
            }
            print '<li>' .$field.' </li>';
        }//End For Each Loop
        //print $teacher_id;


    ?>
            </ul>
    <footer>
     <?php
        if(isset($_POST['approve'])){
        mysql_query("UPDATE members_teachers SET approved = '2' WHERE id= ".$teacher_id."", $dbc) or die ("Oops something went wrong");
    }
      ?>
        <ul>
            <li>
                <form method="post">
                        <button name="approve" id="approve" type="submit">approve</button>
                </form>
               </li>
       </ul>
   </footer>
   <!--End New Row-->
  </section>
      <?php
    }//End While Lopp
    mysql_close($dbc);
       ?>
   </div>
4

1 に答える 1

2

表示するデータのすべての行に対して同じフォームを出力しているだけです。フォームがその特定の ID を送信できるように、少なくとも各フォーム内に関連するメンバーの ID を埋め込む必要があります。

<form method="post">
        <input type="hidden" name="teacher_id" value="$teacher_id" />
        <button name="approve" id="approve" type="submit">approve</button>
</form>

隠しフィールドに注意してください。ボタンが送信されると、次のことができます

$teacher_id = $_POST['teacher_id'];

ID を取得してから、更新クエリを発行します。

于 2013-07-15T14:54:52.183 に答える