doufan8805 2015-12-24 12:13 采纳率: 0%
浏览 353
已采纳

单击按钮时,php mysql更新数据库

as the title states I am trying to write a code that will update a boolean data in column (I called 'status') for a specific row. I used while loop in table to display the rows of new registered and where the status is NULL, I've put two buttons (accept, reject) each in td so they'll be displayed to each name, What I want is when the accept button clicked, it sets the status of its row in the table to 1, and when reject is clicked, same thing but sets 0 instead of 1.

I've did a lot of research over this but hit a road block after road block, so I really hope your help in this, many thanks!

Here is my code:

<table id="sHold" style="border:none;">

<?php
    $conn = mysqli_connect('localhost', 'root', '', 'srs-db') or die('ERROR: Cannot Connect='.mysql_error($conn));

    function getStudent () {
        global $conn;
        $query = "SELECT * FROM student_table WHERE status IS NULL;";
        $result = mysqli_query($conn, $query);

        $i = 1;

        while ($row = mysqli_fetch_array($result)) {
            $sId = $row['student_id'];
            $sName = $row['student_name'];

            echo "<tr id='sNew".$i."'>";
            echo "<td>".$i." - </td>";
            echo "<td>$sId</td>";
            echo "<td>$sName</td>";
            echo "<td><button name='sAcc".$i."'>Accept</button></td>";
            echo "<td><button name='sRej".$i."'>Reject</button></td>";
            echo "</tr>";

            $i++;
        }
        if (isset($_POST['sAcc'.$i])) {
            $row['status'] = 1;
        }
    }

    getStudent();

?>

</table>
  • 写回答

2条回答 默认 最新

  • douyun7285 2015-12-24 12:22
    关注

    First of all, you miss <form> element. Your form inputs are useless without it, or without ajax.

    Secondly, your $_POST check will only check last item. Since after you exit loop $i is set to last value in the loop. So your example will only work on last item.

    <button> will now send $_POST with one of indexes sAcc or sRej. And it's value will be ID of your entry.

    <table id="sHold" style="border:none;">
    <form method="post" action="">
    <?php
        $conn = mysqli_connect('localhost', 'root', '', 'srs-db') or die('ERROR: Cannot Connect='.mysql_error($conn));
    
        function getStudent () {
            global $conn;
            $query = "SELECT * FROM student_table WHERE status IS NULL;";
            $result = mysqli_query($conn, $query);
    
            $i = 1;
    
            while ($row = mysqli_fetch_array($result)) {
                $sId = $row['student_id'];
                $sName = $row['student_name'];
    
                echo "<tr id='sNew".$i."'>";
                echo "<td>".$i." - </td>";
                echo "<td>{$sId}</td>";
                echo "<td>{$sName}</td>";
                echo "<td><button type='submit' name='sAcc' value='{$sId}'>Accept</button></td>";
                echo "<td><button type='submit' name='sRej' value='{$sId}'>Reject</button></td>";
                echo "</tr>";
    
                $i++;
            }
        }
    
        if (isset($_POST['sAcc']) && intval($_POST['sAcc'])) {
            $user_id = (int) $_POST['sAcc'];
    
            // Do the database update code to set Accept
        }
        if (isset($_POST['sRej']) && intval($_POST['sRej'])) {
            $user_id = (int) $_POST['sRej'];
    
    
            // Do the database update code to set Reject
        }
    
    
    
        getStudent();
    
    ?>
    </form> 
    </table>
    

    Tip: I assume you're beginner. I remade your code. But you dont need to put this code into function. Use functions to handle data retrieval for example. Dont use it to display html.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵