Voilà j'ai un problème avec la requête suivante:
<?php
// Déclaration de la Class Sql
$db = new Sql();
$db->host = $host;
$db->login_host = $login_host;
$db->pass_host = $pass_host;
$db->hostname = $hostname;
$db->sql_connect();
$sql_who = "select username, user_level
from ".TABLE_SESSIONS." s, ".TABLE_USERS." u
where u.user_id = s.session_user_id
and s.session_time >= ".( time() - 300 )."
order by u.username asc, s.session_ip asc";
$db->query = $sql_who;
$req_who = $db->sql_query();
$tpl->assign_block_vars('whoisline', array(
'L_TITLE' => $lang['Whoisline_title'],
'L_LEGEND' => $lang['Whoisline_legend']
));
$db->query = $req_who;
$count = $db->sql_num_rows();
if($count > 0)
{
$db->query = $req_who;
$userlist = '';
while ($who = $db->sql_fetch_object())
{
$user->author = $who->username;
$user->user_level = $who->user_level;
$userlist .= '<a href="'.PAGE_USERS_PROFIL.'?view='.$who->user_id.'">'.$user->get_color_author().'</a> ,';
}
$userlist = substr($userlist, 0, -1);
$tpl->assign_block_vars('whoisline.yes', array(
'USERLIST' => $userlist
));
}
else
{
$tpl->assign_block_vars('whoisline.no', array(
'L_MESSAGE' => $lang['Whoisline_no_member']
));
}
?>
Cette requête m'affiche Erreur SQL !Resource id #21.Je ne comprend pas l'erreur.
Quand je fais un echo de ma requête avant le premier $db->query = $sql_who;.
J'obtiens ceci:
Code : Tout sélectionner
select username, user_level from Tn_sessions s, Tn_users u where u.user_id = s.session_user_id and s.session_time >= 1216935118 order by u.username asc, s.session_ip ascVoici ma classe mysql:
<?php
Class Sql
{
var $host;
var $login_host;
var $pass_host;
var $hostname;
var $query;
var $nb;
var $type;
// Fonction de connexion
function sql_connect()
{
$c = mysql_connect($this->host, $this->login_host, $this->pass_host) or die("Erreur de connexion au serveur SQL");
$r = mysql_select_db($this->hostname, $c) or die("Impossible de se connecter à la base de données");
return $r;
}
// Fonction mysql_query
function sql_query()
{
$mysql = mysql_query($this->query) or die('Erreur SQL !'.$this->query.'<br />'.mysql_error());
return $mysql;
}
// Fonction mysql_fetch_row
function sql_fetch_row()
{
$mysql = mysql_fetch_row($this->query) or die('Erreur SQL !'.$this->query.'<br />'.mysql_error());
return $mysql;
}
// Fonction mysql_num_rows
function sql_num_rows()
{
$mysql = mysql_num_rows($this->query) or die('Erreur SQL !'.$this->query.'<br />'.mysql_error());
return $mysql;
}
// Fonction mysql_fetch_array
function sql_fetch_array()
{
$mysql = mysql_fetch_array($this->query) or die('Erreur SQL !'.$this->query.'<br />'.mysql_error());
return $mysql;
}
// Fonction mysql_fetch_assoc
function sql_fetch_assoc()
{
$mysql = mysql_fetch_assoc($this->query) or die('Erreur SQL !'.$this->query.'<br />'.mysql_error());
return $mysql;
}
// Fonction mysql_fetch_object
function sql_fetch_object()
{
$mysql = mysql_fetch_object($this->query) or die('Erreur SQL !'.$this->query.'<br />'.mysql_error());
return $mysql;
}
// Fonction mysql_result
function sql_result()
{
$mysql = mysql_result($this->query, $this->nb, $this->type) or die('Erreur SQL !'.$this->query.'<br />'.mysql_error());
return $mysql;
}
// Fonction mysql_close
function sql_close()
{
mysql_close();
return;
}
}
?>
Et voici la structure de mes tables:
Code : Tout sélectionner
CREATE TABLE `Tn_sessions` (
`session_id` int(8) NOT NULL auto_increment,
`session_user_id` mediumint(8) NOT NULL default '0',
`session_start` int(11) NOT NULL default '0',
`session_time` int(11) NOT NULL default '0',
`session_ip` varchar(255) NOT NULL default '0',
`session_page` int(11) NOT NULL default '0',
`session_logged_in` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`session_id`)
) ENGINE=MyISAM;
CREATE TABLE `Tn_users` (
`user_id` mediumint(8) NOT NULL,
`user_active` varchar(11) default NULL,
`username` varchar(25) NOT NULL,
`user_password` varchar(32) NOT NULL,
`user_session_time` int(11) NOT NULL default '0',
`user_lastvisit` int(11) NOT NULL default '0',
`user_level` tinyint(4) default '0',
`user_posts` mediumint(8) unsigned NOT NULL default '0',
`user_style` varchar(255) default NULL,
`user_lang` varchar(255) default NULL,
`user_rank` int(11) default '0',
`user_avatar` varchar(100) default 'images/avatar/no_avatar.png',
`user_email` varchar(255) default NULL,
PRIMARY KEY (`user_id`),
KEY `user_session_time` (`user_session_time`)
) ENGINE=MyISAM;
Merci d'avance...