繁体   English   中英

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

[英]How to update a mysql database without reloading page

感谢您的关注。 我有一个很长的项目列表,用户单击图像(加号)将项目添加到他们的个人列表中。 在他们点击 + 的那一刻,它加载了一个“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'/>";
            }
?> 

提前谢谢你! :)

正如大家所说,您需要 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'] 只需使用 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));
}

您可以通过 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

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

一个简单的谷歌搜索揭示了很多http://www.google.com/search?q=jquery+ajax+tutorial

您可能真的想在您的项目中使用 Javascript! 看,因为你告诉你不想导航出当前页面并想在当前页面上给一个小消息向用户确认......然后你需要使用称为 AJAX-Asynchronous Javascript 和 XML 的东西. 它添加了 PHP 和 Javascript。

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

就 AJAX 和 Javascript 而言,它们非常简单! 只需要学习它们的基本语法,你就可以走得更远!!!

参考资料你可以参考:

-> 最适合你参考的书是 -

职业阿贾克斯 Nicholas C. Zakas、Jeremy McPeak、Joe Fawcett

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM