如何使用onclick函数调用mysql更新查询


how to call mysql update query using onclick function

<?php
include_once("db.php");
$result=mysql_query("SELECT * FROM stu WHERE receiver='DM4'"); 
while($row=mysql_fetch_array($result)){
echo "<tr>";
echo "<td>" . $row['ptype'] . "</td>";
echo "<td>" . $row['source'] . "</td>";
echo "<td>" . $row['letterno'] . "</td>";
echo "<td>" . $row['date'] . "</td>";
echo "<td>" . $row['descrip'] . "</td>";
echo "<td>" . $row['receiver'] . "</td>";
echo "<td>" . $row['title'] . "</td>";
echo "<td><a href='vex.php?uid={$row['letterno']}'  id='id' onClick='addfavourite()'>.{$row['title']}.</a></td>";
 //echo "<td><a href='update.php?id={$row['id']}'>Update</a></td>";
echo"<td><img style='width:100px;higth:150px;' src='upload/{$row[image]}'></td>";
addfavourite();
echo addfavourite();
function addfavourite() {
 $ide=$_GET['uid'];
 //echo $ide;
$sql = "SELECT * FROM stu WHERE letterno = '$ide'";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
if($row){
$newfav = "UPDATE stu SET open = 1 WHERE letterno = '$ide'";     
$createfav = mysql_query($newfav);}
else{
$newfav = "UPDATE stu SET open = 0 WHERE letterno = '$ide'";   
$createfav = mysql_query($newfav);}
}
}
echo $ide;

?>

这是我的错误代码。在这段代码中,mysql查询语句有一个错误。数据库不支持。但是onclick()函数正在工作

不能直接从JavaScript事件执行PHP函数。简单地说,不能混合服务器端和客户端逻辑,但可以使其中两个相互交互。

在本例中,您可以创建一个JavaScript函数,该函数向服务器上包含addfavourite()代码的PHP页面发送AJAX请求。


演示

我没有测试下面的代码,但假设你的代码逻辑和其他东西是正确的,这可能只是工作

demo.php

<script>
    function addfavourite(uid){
        // Create our XMLHttpRequest object
        var hr = new XMLHttpRequest();
        var url = "addfavourite.php"; // URL of your PHP file
        var vars = "uid="+uid;
        hr.open("POST", url, true);
        // Set content type header information for sending url encoded variables in the request
        hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        // Access the onreadystatechange event for the XMLHttpRequest object
        hr.onreadystatechange = function() {
            if(hr.readyState == 4 && hr.status == 200) {
                var return_data = hr.responseText;
                document.getElementById("status").innerHTML = return_data;
            }
        }
        // Send the data to PHP now... and wait for response to update the status div
        hr.send(vars); // Actually execute the request
        document.getElementById("status").innerHTML = "processing...";
    }
</script>
<?php
    include_once("db.php");
    $result=mysql_query("SELECT * FROM stu WHERE receiver='DM4'");
    echo "<table>";
    while($row=mysql_fetch_array($result)){
        echo "<tr>";
        echo "<td>" . $row['ptype'] . "</td>";
        echo "<td>" . $row['source'] . "</td>";
        echo "<td>" . $row['letterno'] . "</td>";
        echo "<td>" . $row['date'] . "</td>";
        echo "<td>" . $row['descrip'] . "</td>";
        echo "<td>" . $row['receiver'] . "</td>";
        echo "<td>" . $row['title'] . "</td>";
        echo "<td><a href='#'  id='id' onClick='addfavourite({$row['letterno']})'>.{$row['title']}.</a></td>";
        echo"<td><img style='width:100px;higth:150px;' src='upload/{$row[image]}'></td>";
    }
    echo "</table>";
?>
<div id='status'></div>

addfavourite.php

<?php
    if(!isset($_POST['uid'])) {
        $ide = $_POST['uid'];
        $sql = "SELECT * FROM stu WHERE letterno = '$ide'";
        $result = mysql_query($sql);
        $row = mysql_fetch_assoc($result);
        if ($row) {
            $newfav = "UPDATE stu SET open = 1 WHERE letterno = '$ide'";
            $createfav = mysql_query($newfav);
        } else {
            $newfav = "UPDATE stu SET open = 0 WHERE letterno = '$ide'";
            $createfav = mysql_query($newfav);
        }
        if ($createfav) {
            echo "<script>alert('Added to favourite successfully...')";
        } else {
            echo "<script>alert('Something went wrong...')";
        }
    }else{
        echo "POST variable not set!";
    }
?>

一些笔记

  • 你应该使用mysqli而不是mysql函数,因为它已被弃用并且不再支持
  • 这是一个关于AJAX的视频教程https://www.developphp.com/video/JavaScript/Ajax-Post-to-PHP-File-XMLHttpRequest-Object-Return-Data-Tutorial