即使你没有被调用,函数也会运行

时间:2014-01-25 11:56:45

标签: javascript php html

我正在寻找一种通过html页面(.php)上的按钮来清理我的数据库的方法。我有一个工作正常的代码,但每次进入页面时,该功能都是清理我的数据库而不按下按钮。

这是我的代码

<button id="checkoutbutton" onclick="cleanDb()">Clean DB</button>
<script>
function cleanDb()
{alert("<?php clean();?>")}
</script>
<?php
function clean()
{
 $con=mysql_connect("localhost","rss","Habb0") or die("Failed to connect to MySQL: " . mysql_error());
 $db=mysql_select_db("kalender",$con) or die("Failed to connect to MySQL: " . mysql_error());
 $sql='DELETE FROM `bilder` WHERE `stop` < now()';
 mysql_query($sql);

 echo "Databasen är rensad från gamla bilder";}
?>

请帮助我!

3 个答案:

答案 0 :(得分:3)

PHP在服务器端解析,JavaScript在客户端解析。在任何javascript(不考虑AJAX)之前,任何PHP操作都将首先运行。

答案 1 :(得分:1)

使用此代码,但我没有使用javascript。在你的情况下,你应该考虑AJAX。但第二个选项如下

<form action="" method="post">
<button id="checkoutbutton" onclick="cleanDb()" name="clebtn">Clean DB</button>
</form>
<?php
 if(isset($_POST['clebtn']))
 {
  function clean()
   {
    // your code
   }

 }

?>

答案 2 :(得分:1)

你必须像这样打电话给 ajax

<button id="checkoutbutton" onclick="cleanDb()">Clean DB</button>
<div id="result_content"></div>
<script>
function cleanDb()
{
    if(window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange=function()
    {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {

            var result = xmlhttp.responseText;
            // do your task for result
        }
    }

    var url="clean_db.php";

    xmlhttp.open("GET",url,true);

    xmlhttp.send();
}   
</script>

和PHP文件 clean_db.php

<?php
clean();
echo "db has been cleaned";

function clean()
{
 $con=mysql_connect("localhost","rss","Habb0") or die("Failed to connect to MySQL: " . mysql_error());
 $db=mysql_select_db("kalender",$con) or die("Failed to connect to MySQL: " . mysql_error());
 $sql='DELETE FROM `bilder` WHERE `stop` < now()';
 mysql_query($sql);

 echo "Databasen är rensad från gamla bilder";}
?>