草庐IT

php - 如何创建新闻源(AJAX 新闻源)

coder 2023-10-19 原文

我有一个信息系统,更具体地说,是一个票务系统。信息系统将包含拥有无限或“n”个用户的账户。我希望用户能够看到其他用户的操作或对新闻源中内容的更改。 (就像 Facebook)。我将使用 PHP、MySQL 和 AJAX(或 jQuery)来实现新闻源。我将知道如何设置表和查询。

我如何使用 PHP 和 AJAX 或 jQuery 提取内容并将其显示在新闻源中(以具有淡入淡出或滚动效果的 Facebook 新闻源样式?)。

我一直在寻找一个好的教程,但没有找到。如果可能的话,我想最好从头开始编写代码。

我还有一些问题:这是我的问题:

ajax.php

<?php require_once('../../Connections/f12_database_connect.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

mysql_select_db($database_f12_database_connect, $f12_database_connect);
$query_newsfeed_a = "SELECT * FROM newsfeed";
$newsfeed_a = mysql_query($query_newsfeed_a, $f12_database_connect) or die(mysql_error());


while($row_newsfeed_a = mysql_fetch_assoc($newsfeed_a))
{
        echo("<div class='feedItem'>");
    echo("<div class='title'>" . $feedItem['title'] . "</div>");
    echo("<div class='body'>" . $feedItem['body'] . "</div>");
    echo("</div>");



}
$totalRows_newsfeed_a = mysql_num_rows($newsfeed_a);
?>

<?php
mysql_free_result($newsfeed_a);
?>

饲料.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>

<script>
    function refreshNews()
    {
        $("#news").load("ajax.php")
    }
</script>
</head>

<body>





<div id="news"></div>
</body>
</html>

我做错了什么?

最佳答案

如果您想从头开始编写代码,基本过程是创建一个 PHP 脚本来收集数据并将其发送回 AJAX 请求。通常我会创建一个单独的 PHP 文件来处理我需要的任何操作。

您的 PHP 脚本通常输出的任何内容都会发送回 AJAX 请求。所以任何 HTML 标签,任何 echo/print 语句。像 header() 这样的东西也会创建输出,只是一个警告。

根据页面的设计,您可以在 PHP 中创建 HTML,然后根据需要使用 jQuery 将该 html 放入页面中。另一种选择是使用 PHP 的 json_encode() 并将所有数据作为 JSON 发送回并在客户端构建 HTML 结构。

如果每个提要项都具有相同的基本结构,那么像创建任何常规页面一样在 PHP 中创建 HTML 服务器端可能是最简单的。您只需要作为提要的 HTML 代码片段。

最简单的方法是 jQuery.load() http://api.jquery.com/load/

在 HTML 页面内:

<script>
    function refreshNews()
    {
        $("#news").load("path/to/ajax.php")
    }
</script>

<div id="news"></div>

在 PHP 中:

$sql = "SQL TO GET NEWS FEED";

$result = mysql_query($sql);

while($feedItem = mysql_fetch_assoc($result))
{
    echo("<div class='feedItem'>");
    echo("<div class='title'>" . $feedItem['title'] . "</div>");
    echo("<div class='body'>" . $feedItem['body'] . "</div>");
    echo("</div>");
}

然后您可以从另一个事件(刷新按钮、定时事件等)调用 refreshNews()。

显然您的 html 和数据结构可能不同。只需确保这是此 PHP 文件输出的唯一内容。这包括标签之外的任何内容。

有更有效的方法可以做到这一点,这个脚本基本上会在每次调用 refreshNews() 时重新加载整个新闻项目列表。目前,这是让它工作的最简单方法之一,所以请尝试一下,如果需要,还有更有效的方法。

关于php - 如何创建新闻源(AJAX 新闻源),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8185006/

有关php - 如何创建新闻源(AJAX 新闻源)的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. ruby - 如何在 Ruby 中顺序创建 PI - 2

    出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits

  4. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  5. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  6. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  7. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  8. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  9. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  10. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

随机推荐