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

时间:2015-12-24 12:13:25

标签: php html mysql

正如标题所述,我正在尝试编写一个代码,该代码将更新特定行的列中的布尔数据(我称之为“#39; status'”)。我在表中使用while循环来显示新注册的行和状态为NULL的行,我在td中分别放了两个按钮(接受,拒绝),这样它们就会显示给每个名字,我是什么想要的是当点击接受按钮时,它将表中行的状态设置为1,当单击拒绝时,同样的事情却设置为0而不是1。

我已经对此进行了大量研究,但在路障之后遇到了障碍,所以我非常希望得到你的帮助,非常感谢!

这是我的代码:

<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 个答案:

答案 0 :(得分:4)

首先,你错过了<form>元素。没有它,或没有ajax,你的表单输入是无用的。

其次,您的$_POST支票只会检查最后一项。退出后,循环$i被设置为循环中的最后一个值。因此,您的示例仅适用于最后一项。

<button>现在会发送$_POST一个索引sAccsRej。它的值将是您输入的ID。

<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:我认为你是初学者。我重新制作了你的代码。但是您不需要将此代码放入功能中。例如,使用函数来处理数据检索。不要用它来显示HTML。

答案 1 :(得分:1)

<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='NULL'";
        $result = mysqli_query($conn, $query);

        $i = 1;

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

            echo "<tr id='".$sId."'>";
            echo "<td>".$i." - </td>";
            echo "<td>$sId</td>";
            echo "<td>$sName</td>";
            echo "<td><button name='sAcc' id='acc-".$sId."' onclick='approveuser(this.id)'>Accept</button></td>";
            echo "<td><button name='sRej' id='rec-".$sId."' onclick='approveuser(this.id)'>Reject</button></td>";
            echo "</tr>";

            $i++;
        }

    }

    getStudent();

?>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
function approveuser(id){

     trid=id.split('-')[1];
     //alert(trid);

    $.ajax({
        url: "update.php",
        type:"post",
        data:{ val : id },


        success: function(result){
            //alert(result);
            $('table#sHold tr#'+trid).remove();
            alert('Updated');

    }
    });
}
</script>
//The code give below this update.php pge(ajax page)
<?php
$data=$_POST['val'];
$status =explode('-',$data);
$user_id=$status[1];

if($status[0]=='acc'){
    $value=1;
}
elseif($status[0]=='rec'){
    $value=0;
}

  $conn = mysqli_connect('localhost', 'root', '', 'srs-db') or die('ERROR: Cannot Connect='.mysql_error($conn));
 mysqli_query($conn,"update student_table set status='$value' where student_id=$user_id");

?>