FluxBB.fr

Le site des utilisateurs francophones de FluxBB.

Vous n'êtes pas identifié(e).

#1 24-06-2012 18:35:07

Warranty
Membre
Inscription : 04-01-2011
Messages : 19

Erreur "Call to a member function query() on a non-object"

Salut à tous !

Voilà je suis en train d'intégré le fichier "common.php" à mon site pour utilisé les sessions du forum, mais je rencontre un petit problème.

Quand j’intègre le code

define('PUN_ROOT', './forums/');
require PUN_ROOT.'include/common.php';

dans mon site j’obtiens l'erreur suivant

Fatal error: Call to a member function query() on a non-object in E:\xampp\htdocs\site\forum\include\functions.php on line 247

La ligne 247 du fichier functions.php correspond au code suivant

// Fetch guest user
	$result = $db->query('SELECT u.*, g.*, o.logged, o.last_post, o.last_search FROM '.$db->prefix.'users AS u INNER JOIN '.$db->prefix.'groups AS g ON u.group_id=g.g_id LEFT JOIN '.$db->prefix.'online AS o ON o.ident=\''.$remote_addr.'\' WHERE u.id=1') or error('Unable to fetch guest information', __FILE__, __LINE__, $db->error());
	if (!$db->num_rows($result))
		exit('Unable to fetch guest information. Your database must contain both a guest user and a guest user group.');

	$pun_user = $db->fetch_assoc($result);

J'ai beau cherché mais je ne trouve pas, j'ai consulté divers sujet qui parle de cette erreur mais aucune fonctionne.

Merci beaucoup de votre aide smile

Hors ligne

#2 25-06-2012 11:22:36

adaur
Membre
Lieu : Derrière Notepad ++ !
Inscription : 25-09-2008
Messages : 1 937
Site Web

Re : Erreur "Call to a member function query() on a non-object"

Bonjour,

As tu modifié cette partie du fichier fonctions ? Peux tu poster le début de cette fonction? Merci smile


"As code is more often read than written it's really important to write clean code." - Franz
Twitter: @adaurfr
Mon fork de FluxBB: FeatherBB

Hors ligne

#3 25-06-2012 11:38:42

Warranty
Membre
Inscription : 04-01-2011
Messages : 19

Re : Erreur "Call to a member function query() on a non-object"

Bonjour,

Merci de m'avoir répondu smile

Non je n'ai rien modifier, c'est une installation toute fraîche de Fluxbb.

Voici la fonction complète :

//
// Fill $pun_user with default values (for guests)
//
function set_default_user()
{
	global $db, $db_type, $pun_user, $pun_config;

	$remote_addr = get_remote_address();

	// Fetch guest user
	$result = $db->query('SELECT u.*, g.*, o.logged, o.last_post, o.last_search FROM '.$db->prefix.'users AS u INNER JOIN '.$db->prefix.'groups AS g ON u.group_id=g.g_id LEFT JOIN '.$db->prefix.'online AS o ON o.ident=\''.$remote_addr.'\' WHERE u.id=1') or error('Unable to fetch guest information', __FILE__, __LINE__, $db->error());
	if (!$db->num_rows($result))
		exit('Unable to fetch guest information. Your database must contain both a guest user and a guest user group.');

	$pun_user = $db->fetch_assoc($result);

	// Update online list
	if (!$pun_user['logged'])
	{
		$pun_user['logged'] = time();

		// With MySQL/MySQLi/SQLite, REPLACE INTO avoids a user having two rows in the online table
		switch ($db_type)
		{
			case 'mysql':
			case 'mysqli':
			case 'mysql_innodb':
			case 'mysqli_innodb':
			case 'sqlite':
				$db->query('REPLACE INTO '.$db->prefix.'online (user_id, ident, logged) VALUES(1, \''.$db->escape($remote_addr).'\', '.$pun_user['logged'].')') or error('Unable to insert into online list', __FILE__, __LINE__, $db->error());
				break;

			default:
				$db->query('INSERT INTO '.$db->prefix.'online (user_id, ident, logged) SELECT 1, \''.$db->escape($remote_addr).'\', '.$pun_user['logged'].' WHERE NOT EXISTS (SELECT 1 FROM '.$db->prefix.'online WHERE ident=\''.$db->escape($remote_addr).'\')') or error('Unable to insert into online list', __FILE__, __LINE__, $db->error());
				break;
		}
	}
	else
		$db->query('UPDATE '.$db->prefix.'online SET logged='.time().' WHERE ident=\''.$db->escape($remote_addr).'\'') or error('Unable to update online list', __FILE__, __LINE__, $db->error());

	$pun_user['disp_topics'] = $pun_config['o_disp_topics_default'];
	$pun_user['disp_posts'] = $pun_config['o_disp_posts_default'];
	$pun_user['timezone'] = $pun_config['o_default_timezone'];
	$pun_user['dst'] = $pun_config['o_default_dst'];
	$pun_user['language'] = $pun_config['o_default_lang'];
	$pun_user['style'] = $pun_config['o_default_style'];
	$pun_user['is_guest'] = true;
	$pun_user['is_admmod'] = false;
}

Merci de votre aide wink

Hors ligne

#4 25-06-2012 11:55:03

adaur
Membre
Lieu : Derrière Notepad ++ !
Inscription : 25-09-2008
Messages : 1 937
Site Web

Re : Erreur "Call to a member function query() on a non-object"

Désolé, je ne vois pas d'où peut venir l'erreur.

En général, celle-ci est causée par l’absence de "global $db" au début de la fonction, mais là tout à l'air dans l'ordre...


"As code is more often read than written it's really important to write clean code." - Franz
Twitter: @adaurfr
Mon fork de FluxBB: FeatherBB

Hors ligne

#5 25-06-2012 11:59:17

WinuX
Membre
Inscription : 18-07-2010
Messages : 390

Re : Erreur "Call to a member function query() on a non-object"

Es-tu sur qu'il n'y a rien avant l'incluse du common.php et la définition du pun_root ?

Je pense (simple hypothèse) que la variable $db est redifini et qu'il ne s'agit plus de objet contenant l'a connexion à ta BDD.
Qu'obtient-tu si tu fais un var_dump($db); (après le common.php) ?

Hors ligne

#6 25-06-2012 12:12:41

Warranty
Membre
Inscription : 04-01-2011
Messages : 19

Re : Erreur "Call to a member function query() on a non-object"

Il y a rien avant l'intégration de "common.php".

J'ai fait l'intégration dans mon "header.php" de mon site avant le DOCTYPE

Il ne se passe rien quand je mets var_dump($db);

Hors ligne

#7 25-06-2012 13:54:25

WinuX
Membre
Inscription : 18-07-2010
Messages : 390

Re : Erreur "Call to a member function query() on a non-object"

Chui bête.. Ajoutes le var_dump($db) dans la fonction, juste après le global .... ;
Ca donne toujours rien?

Hors ligne

#8 25-06-2012 14:05:07

Warranty
Membre
Inscription : 04-01-2011
Messages : 19

Re : Erreur "Call to a member function query() on a non-object"

Cela donne le résulta NULL

Hors ligne

#9 27-06-2012 12:56:42

Warranty
Membre
Inscription : 04-01-2011
Messages : 19

Re : Erreur "Call to a member function query() on a non-object"

Personne à d'autre idée pour essayer de résoudre ce problème ?

Merci

Hors ligne

#10 28-06-2012 11:43:48

busy
Membre
Inscription : 19-02-2012
Messages : 29

Re : Erreur "Call to a member function query() on a non-object"

bonjour, j'en suis exactement au même problème smile


Fatal error: Call to a member function query() on a non-object in C:\wamp\www\Site\forum\include\functions.php on line 247
function set_default_user()
{
	global $db, $db_type, $pun_user, $pun_config;

	$remote_addr = get_remote_address();

	// Fetch guest user
	$result = $db->query('SELECT u.*, g.*, o.logged, o.last_post, o.last_search FROM '.$db->prefix.'membres AS u INNER JOIN '.$db->prefix.'groups AS g ON u.group_id=g.g_id LEFT JOIN '.$db->prefix.'online AS o ON o.ident=\''.$remote_addr.'\' WHERE u.id=1') or error('Unable to fetch guest information', __FILE__, __LINE__, $db->error());
	if (!$db->num_rows($result))
		exit('Unable to fetch guest information. Your database must contain both a guest user and a guest user group.');

	$pun_user = $db->fetch_assoc($result);

	// Update online list
	if (!$pun_user['logged'])
	{
		$pun_user['logged'] = time();

		// With MySQL/MySQLi/SQLite, REPLACE INTO avoids a user having two rows in the online table
		switch ($db_type)
		{
			case 'mysql':
			case 'mysqli':
			case 'mysql_innodb':
			case 'mysqli_innodb':
			case 'sqlite':
				$db->query('REPLACE INTO '.$db->prefix.'online (user_id, ident, logged) VALUES(1, \''.$db->escape($remote_addr).'\', '.$pun_user['logged'].')') or error('Unable to insert into online list', __FILE__, __LINE__, $db->error());
				break;

			default:
				$db->query('INSERT INTO '.$db->prefix.'online (user_id, ident, logged) SELECT 1, \''.$db->escape($remote_addr).'\', '.$pun_user['logged'].' WHERE NOT EXISTS (SELECT 1 FROM '.$db->prefix.'online WHERE ident=\''.$db->escape($remote_addr).'\')') or error('Unable to insert into online list', __FILE__, __LINE__, $db->error());
				break;
		}
	}
	else
		$db->query('UPDATE '.$db->prefix.'online SET logged='.time().' WHERE ident=\''.$db->escape($remote_addr).'\'') or error('Unable to update online list', __FILE__, __LINE__, $db->error());

	$pun_user['disp_topics'] = $pun_config['o_disp_topics_default'];
	$pun_user['disp_posts'] = $pun_config['o_disp_posts_default'];
	$pun_user['timezone'] = $pun_config['o_default_timezone'];
	$pun_user['dst'] = $pun_config['o_default_dst'];
	$pun_user['language'] = $pun_config['o_default_lang'];
	$pun_user['style'] = $pun_config['o_default_style'];
	$pun_user['is_guest'] = true;
	$pun_user['is_admmod'] = false;
}

Hors ligne

Pied de page des forums