【问题标题】:A problem with using Smarty & Mysql & Jquery使用 Smarty & Mysql & Jquery 的问题
【发布时间】:2010-06-25 21:16:04
【问题描述】:

我在使用 Samrtm Mysql 和 Jquery 或 Ajax 时遇到问题 如果我使用 div 自动重新加载器 它显示一个php错误.. 这些是我的文件: accept.html(模板)

{literal}
<script type="text/javascript">
var auto_refresh = setInterval(
function ()
{
$('#invite').load('accept.php').fadeIn("slow");
}, 1000);
</script>
{/literal}
<div id="invite">
<fieldset>
<legend>Invites</legend>
{section name=ct loop=$invites}
You have an invite {$sender.user}<br />
<a href="?action=accept_contest&sid={$invites[ct].sendid}">Accept</a> | <a href="?action=cancel_contest&sid={$invites[ct].sendid}">Cancel</a>
{/section}
</fieldset>
</div>

accept.php(主文件)

<?php

$time = date("i:s",time("s"));
$sql_select_invite = mysql_query("SELECT * FROM invite WHERE recid = '$_SESSION[id]' AND accept = '0' AND endtime > '$time'");

while($invite = mysql_fetch_array($sql_select_invite)){
 $sender = mysql_fetch_array(mysql_query("SELECT * FROM member WHERE id = '$invite[sendid]'"));
    $contest->assign("sender", $sender);
    $invites[] = $invite;
}
$contest->assign("invites", $invites);

?>

当我使用 Jquery 或 Ajax 时 它显示此错误:

警告:mysql_fetch_array():提供 参数不是有效的 MySQL 结果 资源在 C:\AppServ\www\somefo\accept.php 上线6

致命错误:调用成员函数 在非对象上分配() C:\AppServ\www\somefo\accept.php 上线11

我不知道为什么它会显示这个.. 希望你能回答我 以及如何解决这个问题

谢谢..

【问题讨论】:

  • 尝试直接在 phpmyadmin 上执行SELECT * FROM invite WHERE recid = '$_SESSION[id]' AND accept = '0' AND endtime &gt; '$time' 或使用预先确定的 php 变量值。看看有没有结果
  • 我想要直接解决.. 我的意思是在文件中而不是在 phpmyadmin 中,无论如何谢谢

标签: php jquery ajax smarty


【解决方案1】:

对于 php:

<?php

$sql = mysql_connect(......);  // connect to your server
if (!$sql) {
    die('Can\'t connect to database');
}

// select your database
mysql_select_db('your_db', $sql) or die('Can\'t select database');

$time = date("i:s",time("s"));
$sql_select_invite_query = "SELECT * FROM invite WHERE recid = '$_SESSION[id]' AND accept = '0' AND endtime > '$time'";

// print it if you want to see sql query to test it in phpmyadmin
echo $sql_select_invite_query; 
// --------------------------------------------------------------

$sql_select_invite = mysql_query($sql_select_invite_query, $sql);

if (!$sql_select_invite) {    // check for error in query
    die(mysql_error());       // and print it
}

$invites = array();  // don't forget to make an empty array

while($invite = mysql_fetch_array($sql_select_invite, $sql)){
    // this place is not good, just make it as you do before, with checks
    $sender = mysql_fetch_array(mysql_query("SELECT * FROM member WHERE id = '$invite[sendid]'"));

    $contest->assign("sender", $sender);
    $invites[] = $invite;
}
$contest->assign("invites", $invites);   // in your case there is no $invite 
                                         // array cause mysql_fetch_array returned
                                         // false and it is not defined before [while]

?>

供JS测试:

setInterval( function () {
  $('#invite').load('accept.php', function() {
    alert('loaded');  // it is to check content is loaded
  }).fadeIn("slow");
}, 1000);

【讨论】:

  • 感谢您的回复 .. 但现在显示未选择数据库
  • 您必须在脚本的开头执行此操作:1. 连接到 db (mysql_connect),2. 选择一个数据库 (mysql_select_db)。帖子已编辑。
  • 已经解决,但是它隐藏了模板而不是重新加载它
  • 隐藏是什么意思?隐藏 div 或 ajax 返回空数据?
  • 您的 ajax html 模板中是否有 javascript?或者可能是主 html 代码中的某些内容?你有什么代码可以隐藏你的 div?
猜你喜欢
  • 1970-01-01
  • 2011-05-04
  • 2011-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-15
  • 1970-01-01
相关资源
最近更新 更多