Warning php

Kristof06
Invité n'ayant pas de compte PHPfrance

17 sept. 2009, 01:49

Bonjour,
tout d'abord je n'ai aucune notion de langage php :oops: , je connais simplement le html.

J'ai une erreur sur une page de mon site qui indique :
Warning : mysql_num_rows(): supplied argument is not a valid MySQL result resource in /homez.157/infofaci/www/include/Curseur.php on line 69

Cette page permet d'afficher une liste de message que je reçoit par le formulaire de contact de mon site.

Voici le code php contenue dans cette page :
<?
include("../include/Curseur.php");
$nb = Array("a","z","e","r","t","y","u","i","o","p","q","s","d","f","g","h","j","k","l","m","w","x","c","v","b","n","aa","az","ae","ar","at","ay","au","ai","ao","ap","aq","as","ad","af","ag","ah","aj","ak","al","am","aw","ax","ac","av","ab","an","za","zz","ze","zr"); 
if (!isset($_GET["sens"]))
{
$_GET["sens"] = "ASC";
}
$gallerie = new Curseur();
$gallerie->reqSelect("SELECT `sujet` , `email`, `ville` , `date` , `heure`, `vu` , `id`
FROM `msg` 
ORDER BY date ".$_GET["sens"]." , heure ".$_GET["sens"]."
 ");
$i = 0;
while ($gallerie->Eof() == false)
{
if ($gallerie->Champs("vu") == "0")
{
$etat = "unread";
}
else
{
$etat = "read";
}
$random = rand(0,3);
echo "<tr OnClick=\"document.".$nb[$i].".src = 'read.png'\"  border=\"0\" onmouseover=\"this.className='sl".$random."'\" onmouseout=\"this.className='nsl'\" >
        <td onclick=\"javascript:opw('message','message.php?id=".$gallerie->Champs("id")."',0,0,788,350,0,0,0,0,0)\" width=\"30\"><p align=\"center\"><a href=\"javascript:opw('message','message.php?id=".$gallerie->Champs("id")."',0,0,650,400,0,0,0,0,0)\"><img name=\"".$nb[$i]."\" src=\"".$etat.".png\" OnClick=\"this.src = 'read.png'\"  border=\"0\"></a></p></td>
        <td onclick=\"javascript:opw('message','message.php?id=".$gallerie->Champs("id")."',0,0,788,350,0,0,0,0,0)\" width=\"308\"><font size=\"2\" face=\"Segoe UI\"><b><u>".$gallerie->Champs("type")."</u></b></font></td>
        <td onclick=\"javascript:opw('message','message.php?id=".$gallerie->Champs("id")."',0,0,788,350,0,0,0,0,0)\" width=\"344\"><font size=\"2\" face=\"Segoe UI\"><b><u>".stripslashes($gallerie->Champs("tel"))."</u></b></font></td>
        <td onclick=\"javascript:opw('message','message.php?id=".$gallerie->Champs("id")."',0,0,788,350,0,0,0,0,0)\" width=\"310\"><font size=\"2\" face=\"Segoe UI\"><b><u>".$gallerie->Champs("date")." a ".$gallerie->Champs("heure")."</u></b></font></td>
		<td width=\"30\" >
            <p align=\"center\"><a href=\"javascript:confirmer('".$gallerie->Champs("id")."')\"><img src=\"delete_icon.gif\" width=\"26\" height=\"26\" border=\"0\"></a></p>
        </td>
    </tr>";
$gallerie->suivant();
$i++;
}
?>
L'erreur semble renvoyer vers la page Curseur.php dont voici le code :
<?
	//---------------------------------------------------------------------------------
	//--- Curseur.php : Classe qui permet d'accéder aux infos de la base de données ---
	//--- 				Auteur : Blasco A		Date: 10/11/2005 		            ---
	//---------------------------------------------------------------------------------

	class Curseur {

		//---Liste des propriétés---
		var $req ;
		var $ligne ;
		var $eof ;
		var $ok_radmin ;
		//var $ok_rselect ;

		//---Constructeur qui permet de se connecter à la base de donnée---
		function Curseur(){

			mysql_connect("mysql5-3","infofaciinfofa","mandrake")
				or die("Erreur de connexion au serveur");

			mysql_select_db("infofaciinfofa")
				or die("Erreur sur le nom de la base de donnée");
		}

		//---Fonction qui retourne le résultat de la requète placée en paramètre et qui lit le premier enregistrement---
		function reqSelect($REQ){
			//$ok_rselect = true;
			$this->req =  mysql_query($REQ);
			if($this->nbLigne() != 0){
				$this->Suivant() ;
			} else {
				$this->eof = true ;
			}
		}
		//function SelectOk()
		//	{
		//	return $ok_rselect;
		//	}

		//---Fonction qui retourne le résultat de la requète placée en paramètre---
		function reqAdmin($REQ){
			$this->ok_radmin = true ;
			mysql_query($REQ)
			or $this->ok_radmin = false;
		}
		function AdminOk()
		{
		return $this->ok_radmin;
		}

		//---Récupére une ligne de la requéte possée précédamment---
		function Suivant(){
			$this->eof = !$this->ligne = mysql_fetch_assoc($this->req);
		}

		//---Retourne le contenu du champ d'un numéro de ligne passé en paramètre---
		function ChampsIndex( $index, $champ){
			return mysql_result($this->req,$index,$champ);
		}

		//---Retourne le numéro du dernier élément inséré ---
		function ID_Insert(){
			return mysql_insert_id();
		}

		//---Retourne le nombre d'éléments dans la requète---
		function nbLigne(){
			return mysql_num_rows($this->req);
		}

		//--- Donne l'information de la fin du curseur---
		function Eof(){
			return $this->eof;
		}

		//---Ferme le curseur---
		function Fermer(){
			mysql_close();
		}

		//---Retourne le contenu du champ---
		function Champs($champ){
			return $this->ligne[$champ];
		}
	}
?>
Je le répète je n'y comprend pas grand chose en php :oops: , il manque peut être des informations pour trouver une solution à mon problème. Demandez moi si besoin.

Je vous remercie par avance pour votre aide.

Christophe

ViPHP
ViPHP | 928 Messages

17 sept. 2009, 11:06

Salut,
dans ton fichier Curseur.php, remplace :
$this->req =  mysql_query($REQ);
par
$this->req =  mysql_query($REQ) or die('Sql error: ' . mysql_error() . '<hr />' . $REQ);
Ca devrait t'afficher une erreur plus claire au lieu de ton warning obscur. Poste ton erreur ici après, c'est surement ta requête SQL qui a un problème.

Mammouth du PHP | 804 Messages

17 sept. 2009, 16:43

Salut je n’ai pas beaucoup l'habitude du codage objet, d'ou ma question peu être idiote !?
il ne devrait pas y avoir un point virgule après mysql_query($REQ) ??

Kristof06
Invité n'ayant pas de compte PHPfrance

18 sept. 2009, 03:02

Salut,
dans ton fichier Curseur.php, remplace :
$this->req =  mysql_query($REQ);
par
$this->req =  mysql_query($REQ) or die('Sql error: ' . mysql_error() . '<hr />' . $REQ);
Ca devrait t'afficher une erreur plus claire au lieu de ton warning obscur. Poste ton erreur ici après, c'est surement ta requête SQL qui a un problème.
Merci pour votre réponse, elle m'a permis de résoudre mon problème.

Merci encore

Kristof06