如何在不重新加载页面的情况下更新mysql数据库

时间:2010-09-02 18:29:56

标签: php javascript mysql

谢谢你的期待。 我有一个很长的项目列表,用户点击图像(加号)将项目添加到他们的个人列表中。当他们点击+它加载一个“add-item.php?itemid = *”,它处理下面的代码,然后将它们重定向到他们自己的列表,我确实让它重定向回全局列表,但后来不清楚如果该项目已添加到其列表中,则为该用户。如何让它全部更新数据库而不去任何地方,我认为javascript但从未写过任何东西。任何帮助都会很精彩! :)

<?php 
ini_set('display_errors', 'On');
error_reporting(E_ALL);

 $bucketlist=MYSQL_QUERY( "SELECT * FROM membersbuckets where userid = $userid AND bucketid = $bucketid")
 or die(mysql_error());  

          $bucketlist=mysql_fetch_array( $bucketlist ) ;

            if($bucketlist < 1) {

            mysql_query("INSERT INTO membersbuckets (memberbucketid, userid, bucketid, complete)
            VALUES ('', '$userid', '$bucketid', '0')");
            echo "Adding item to your bucketlist...";
            echo "<meta http-equiv='Refresh' content='2; URL=mybucketlist.php'/>";
            }
            else {
            echo "This item is already on your list, redirecting you to your list";
            echo "<meta http-equiv='Refresh' content='2; URL=mybucketlist.php'/>";
            }
?> 

提前谢谢! :)

4 个答案:

答案 0 :(得分:5)

你需要AJAX,就像所有人都说的那样。 由于您从未编写过任何javascript,以下是完整的指南 -

  • 而不是<a href="add-item.php?itemid='.$itemId.'" > Add Item </a><a onclick="addItemToUsersList('.$itemId.')" > Add </a>

  • 对于使用AJAX,请使用像Angelo建议的jquery。下载并添加以下内容

    <script type="text/javascript" src="http://path/to/jquery-latest.min.js"></script>
    <script type="text/javasript">
    
    function addItemToUsersList(itemId)
    {
      $.ajax({
          'url': 'path/to/add-item.php', 
           'type': 'GET',
          'dataType': 'json', 
          'data': {itemid: itemId}, 
           'success': function(data) 
           {
               if(data.status)
               {
                   if(data.added)
                    {
                            $("span#success"+itemId).attr("innerHTML","Item added to your personal list");
                     }
                     else
                     {
                            $("span#success"+itemId).attr("innerHTML","This item is already on your list");
                    }
                }
           },
           'beforeSend': function() 
             {
                   $("span#success"+itemId).attr("innerHTML","Adding item to your bucketlist...");
             },
              'error': function(data) 
              {
              // this is what happens if the request fails.
                $("span#success"+itemId).attr("innerHTML","An error occureed");
            }
    });
                      }
         </script>
    
  • 最后在您的path/to/add-item.php文件中编写代码以添加项目。参数itemId将在此处以$_GET['itemId']的形式提供。菊 st使用json_encode返回正确的状态值 -

    if($bucketlist < 1) 
     {
        mysql_query("INSERT INTO membersbuckets (memberbucketid, userid, bucketid, complete)
        VALUES ('', '$userid', '$_GET['itemId]', '0')");
            return json_encode(array("status" => true, "added" => true));
     }
     else
     {
            return json_encode(array("status" => true, "added" => false));
     }
    

答案 1 :(得分:3)

您可以通过JavaScript使用称为“AJAX”的东西来实现这一目标。异步JavaScript和XML请求允许JavaScript将请求发送到另一个页面并从中获取结果。

因此,使用ajax,您将转到所需的URL,然后您可以向用户显示该消息。

我使用一个名为jQuery的库来完成这样的事情

$.ajax({
    'url': 'path/to/add-item.php', 
    'type': 'GET',
    'dataType': 'json', 
    'data': {itemid: xx}, 
    'success': function(data) {
      // what happens if the request was completed properly
    },
    'error': function(data) {
      // what happens if the request fails.
    }
  });

请注意,仅仅因为请求正确完成,并不意味着必要时添加了该项。

我建议您阅读以下内容,以便更好地了解如何根据您的需求进行调整。

http://json.org/

http://api.jquery.com/jQuery.ajax/

http://ca3.php.net/json_encode

答案 2 :(得分:1)

http://jquery.com/将是我的建议。您将需要对服务器执行一些AJAX调用,以使其与您的数据库交互,然后返回结果并将该信息显示给用户。我更喜欢JQuery,因为它简化了很多这些调用,并且它的文档相当不错。基础知识有很多教程。

简单的谷歌搜索显示了不少http://www.google.com/search?q=jquery+ajax+tutorial

答案 3 :(得分:0)

您可能真的想在项目中使用Javascript!请注意,因为您告诉您不想在当前页面之外导航并希望在当前页面上发出一条消息,向用户说明确认...然后您需要使用称为AJAX-Asynchronous Javascript和XML的东西。它增加了PHP和Javascript。

使用AJAX你可以更新当前加载的页面而不刷新它。这里HTML不是连接或请求服务器,而是它的Javascript。因此,你可以实现 - &gt; [我将如何让它全部更新数据库而不去任何地方] ..

就AJAX和Javascript而言,它们非常简单!只需要学习它们的基本语法,然后你就可以继续了!

参考你可以参考:

- &GT;你推荐的最佳书是 -

专业的Ajax Nicholas C. Zakas,Jeremy McPeak,Joe Fawcett