按钮Onclick调用Javascript调用PHP文件,该文件添加到Mysql数据库

时间:2012-02-25 18:11:53

标签: php mysql database onclick

我需要有关添加到数据库的帮助。 我想通过按钮单击方法调用javascript scrt。 Javascript脚本,我想调用一个php文件,其中包含一些添加到MySQL数据库的代码。

我确实尝试了20多个网站,没有帮助。

如果AJAX会更好你能帮助我吗?

按钮代码:

<input type="button" value="favorites1" onClick="favfunct();"> 

Javascript代码

function favfunct() {
    var target = document.createElement( "script" );
    target.setAttribute( "src", "php/addtofavorites.php" );
    document.getElementsByTagName( "body" )[0].appendChild( target );`
}

Php代码

<?php
    echo "test successful"
    $con = mysql_connect("localhost","root","student");
    if ($_POST["get"] == 'runfunction')
        echo "Works";
    }
    if ($_POST["action"] == 'favorites1'){ 
        echo "Testing Was Successful"
        if (!$con)
        {
            die('Could not connect: ' . mysql_error());
        }                   
        mysql_select_db("tvid", $con);
        $sql="INSERT INTO Persons (userid, davorites) VALUES 
            ('1','$_POST[video0]')";
        if (!mysql_query($sql,$con))
        {
            die('Error: ' . mysql_error());
        }
        echo "Your Video was Added To Your Favorites";
        mysql_close($con)
    }
?>

2 个答案:

答案 0 :(得分:2)

因此,这种“工作方式”与锤击螺钉的方式相同。它会进入那里,但不是你想做的事情。

不要使用脚本标记来触发php页面。您的页面将触发,但这是完成工作的错误工具。你想使用AJAX。 AJAX专门用于此目的,而脚本标记用于在页面上运行脚本。它将尝试获取addtofavorites.php的内容,但它会期望JavaScript作为返回。而且您将无法使用$_POST,因为您无法将数据发布到请求中。

相反,请使用AJAX。如果您已经在使用JavaScript库,那么它将为您提供一个很好的AJAX包装器(我不知道我头顶的单个库没有)。您可以查看给定库的API文档,以获取有关如何使用AJAX功能的文档(jQueryPrototype.jsMootools等。)。

作为一个例子,我将使用jQuery,因为它是最流行的之一。这是一个使用jQuery到页面的请求(看起来是期望的变量)

// Call an AJAX function to the proper page
$.ajax("php/addtofavorites.php", {
        // Pass our data to the server
        data: { "get" : "runfunction", "action" : "favorites1" },
        // Pass using the appropriate method
        method: "POST",
        // When the request is completed and successful, run this code.
        success: function (response) {
                // Successfully added to favorites. JS code goes here for this condition.
            }
    });

另外,作为旁注,PHP中的每一行都需要一个分号;。你们很多人都没有。并且第3行缺少一个左括号{,但我不确定这是否只是你的复制粘贴的工件。

附录

我建议使用jQuery来监听事件。 jQuery的events API将允许您监听对象上的事件。所以,像这样:

<input id="button_1" type="button" value="favorites1" />

和jQuery

$(document).ready(function () { // Make sure the elements are loaded on the page
    // Listen for a click event on the button
    $('#button_1').click(favfunct);
});
// Now define the function
function favfunct(e) {
    // Stop the page from "following" the button (ie. submitting the form)
    e.preventDefault();
    e.stopPropagation();
    // Insert AJAX call here...
}

答案 1 :(得分:0)

我推荐jQuery,

这就是你需要的: http://api.jquery.com/jQuery.get/

function add(title,text) {
  $(function() {
    $.get("add_to_db.php?title="+title+"&text="+text);
  });
}

你可以用更先进的方式来做 http://api.jquery.com/jQuery.post/