Проблема с использованием Smarty & Mysql & Jquery - PullRequest
0 голосов
/ 25 июня 2010

У меня проблема с использованием Samrtm Mysql и Jquery или Ajax и если я использую Div Auto Reloader это показывает ошибку 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

Неустранимая ошибка : вызов функции-члена assign () для необъекта в C: \ AppServ \ WWW \ somefo \ accept.php на линии 11

Я не знаю, почему это показывает это .. и я надеюсь, что вы мне ответите и что или как решить эту проблему

Спасибо ..

1 Ответ

0 голосов
/ 25 июня 2010

Для 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);
...