Archives FluxBB.fr

Les archives de FluxBB.fr

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

#1 10-05-2009 12:47:28

NoS!rp
Membre

Problème mysql

Bonjour à tous

Je sais pas si la question a deja été posé mais je tente ma chance.
J'ai systématiquement ce message d'erreur qui s'affiche en haut de mon forum.


Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /home2/noshost/public_html/etat_up.php on line 9

Quand je vais voir ou se situe le problème, je ne sais pas quoi modifier pour ne plus avoir ce problème....

Merci à tous ceux qui pourront m'aider smile

Voici le code que j'ai :

<?php
   if ($pun_user['g_id'] < PUN_GUEST)
    {

$id_forum = explode (",",$quotat_config['mod_quotat_forums']);    

if((in_array ($cur_topic['forum_id'], $id_forum)) && ($cur_topic['sticky']!='1') && ($quotat_config['mod_etat_enabled'] == '1'))
{
    $poster_name = mysql_fetch_row($db->query('SELECT username FROM '.$db->prefix.'users WHERE id="'.$pun_user['id'].'"'));
    
    $result = $db->query('SELECT taille_up FROM '.$db->prefix.'topics WHERE id='.$id) or error('Unable to fetch topic info', __FILE__, __LINE__, $db->error());
    $taille_up = $db->result($result);
    $result = $db->query('SELECT total_up FROM '.$db->prefix.'users WHERE id='.$pun_user['id']) or error('Unable to fetch user info', __FILE__, __LINE__, $db->error());
    $total_up = $db->result($result);

Hors ligne

#2 10-05-2009 13:34:23

Otomatic
Régisseur

Re : Problème mysql

Bonjour,

Pourquoi deux syntaxes différentes sur deux lignes différentes :

WHERE id="'.$pun_user['id'].'"'

et

WHERE id='.$pun_user['id']

D'autre part, comme le dit le message d'erreur, le résultat de

$poster_name = mysql_fetch_row($db->query('SELECT username FROM '.$db->prefix.'users WHERE id="'.$pun_user['id'].'"'));

n'est pas une ressource correcte.

Il faut procéder en deux temps :
D'abord récupérer la « ressource » résultat

$result = $db->query('SELECT username FROM '.$db->prefix.'users WHERE id="'.$pun_user['id'].'"')

Puis extraire la première « rangée » de résultats de la ressource et, comme il ne doit y avoir qu'un seul résultat, on peut faire :

$poster_name = $db->result($result);

Sinon, avec plusieurs résultats dans la rangée, il aurait fallu décomposer en deux autres temps :

$row = $db->fetch_row($result);
$poster_name = $row[0];

Il aurait aussi fallu vérifier qu'on a bien au moins un résultat avec :

$count = $db->num_rows($result);

et agir en conséquence.

Dernière modification par Otomatic (10-05-2009 13:47:51)


Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche

Hors ligne

#3 10-05-2009 19:15:14

NoS!rp
Membre

Re : Problème mysql

Oki, je vais modifier ceci alors, je vous tiens au courant si le problème est résolu wink

Hors ligne

#4 11-05-2009 10:08:06

NoS!rp
Membre

Re : Problème mysql

Bon, j'ai essayer la méthode que tu m'as indiquer alors....
- Ou c'est moi qui n'est pas compris questce qu'il fallait changer
- Ou la méthode indiquer ne fonctionne pas....

Estce que quelqu'un pourrait m'indiquer précisément quoi remplacé par quoi ?
Merci

Hors ligne

#5 11-05-2009 10:29:14

Otomatic
Régisseur

Re : Problème mysql

Remplacer

$poster_name = mysql_fetch_row($db->query('SELECT username FROM '.$db->prefix.'users WHERE id="'.$pun_user['id'].'"'));

par

$result = $db->query('SELECT username FROM '.$db->prefix.'users WHERE id='.$pun_user['id']);
$poster_name = $db->result($result);

Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche

Hors ligne

#6 11-05-2009 10:36:06

NoS!rp
Membre

Re : Problème mysql

Oki, sa fonctionne wink

Merci Otomatic d'avoir été si patient avec moi happy Faut dire que je débute dans ce domaine ^^

Merci encore wink

Dernière modification par NoS!rp (11-05-2009 10:37:07)

Hors ligne

#7 11-05-2009 10:53:38

Otomatic
Régisseur

Re : Problème mysql

Bonjour,

C'est peut-être pas la peine de réinventer l'eau chaude et d'aller extraire de la base de données quelque chose qui existe sous forme de variable puisque déjà extrait lors de l'identification.
C'est-à-dire que :

$result = $db->query('SELECT username FROM '.$db->prefix.'users WHERE id='.$pun_user['id']);
$poster_name = $db->result($result);

Devrait pouvoir être remplacé par :

$poster_name = $pun_user['username'];

Ou même simplement utiliser $pun_user['username'] à la place $poster_name.


Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Sont différents : ça et sa - est et ait - à et a - ce et se - mes et mais ou met - été et était - c'est et ces - ce-si et ceci
La vie sans musique est tout simplement une erreur, une fatigue, un exil. Friedrich Nietzsche

Hors ligne

#8 11-05-2009 17:37:59

NoS!rp
Membre

Re : Problème mysql

Cette méthode fonctionne aussi, je viens à l'instant de la testée. Merci pour ton aide Otomatic

Hors ligne

Pied de page des forums