[php/MySQL] erreur de requete ou de récupération des données

erreur de requete ou de récupération des données [php/MySQL] - Programmation

Marsh Posté le 25-01-2001 à 15:02:54    

voilà, g un souscis avec mon script, à l'executtion, il m' dit que l'erreur se trouve sur la ligne : while($row = mysql_fetch_row($result)) et c'est : "Warning: 0 is not a MySQL result index"
 mais en fait je pense que l'erreure vient de la requete mais je ne voit pas pourquoi. kkun peut-il m'expliquer mon erreure merci
 
 
<?php
 
$host = localhost;ss
$user = "user";
$bdd = "mydb";
$password = "pass";
 
mysql_connect($host, $user,$password) or die("erreur de connexion au serveur" );
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees" );
 
// Creation et envoi de la requete
$query = "select X,Rue from COORD where (X IN (select max(ABS(4-X)) from COORD))";
$result = mysql_query($query);
 
 
// Recuperation des resultats
while($row = mysql_fetch_row($result)){
$Rue = $row[0];
echo "$Rue
";
}
 
// Deconnexion de la base de donnees
mysql_close();
?>

Reply

Marsh Posté le 25-01-2001 à 15:02:54   

Reply

Marsh Posté le 25-01-2001 à 15:08:56    

Déjà, dans la requêtess
 
select X,Rue from COORD where (X IN (select max(ABS(4-X)) from COORD))
 
tu n'as pas besoin d'un IN dans la sous-requête, vu que celle-ci ne te retournera qu'une seule valeur (max). Tu peux employer un '='.
 
Bon, sinon je ne connais pas le PHP et laisse donc la parole aux autres.

Reply

Marsh Posté le 25-01-2001 à 15:10:55    

Je pense que c'est juste que ta table n'a aucun enregistrement correspondant à ce que tu lui demande. En tout cas j'ai le meme message quand c'est le cas chez moi.
sinon tu faire ça mais ça ne devrait rien changer:
 
$mysql_link=mysql_connect($host, $user,$password) or die("erreur de connexion au serveur" );ss
...
$result=@mysql_query($query,$mysql_link);
 
le '@' devrait empecher le warning.

Reply

Marsh Posté le 25-01-2001 à 15:15:12    

en fait, g mis un IN au cas ou il y ai plusieurs réponses. avec un = le résultat est le même et il y a bien une entrée dans la table qui correspond à ma requete car la deuxième partie (le second select) renvoie normalement X=0 et donc devrait me donner la rue dont le X correspond à 0

Reply

Marsh Posté le 25-01-2001 à 15:15:46    

c'est ça qui déconne : $Rue = $row[0]; t'as un champ nommé 0 dans ta table ?
 
fait plutot $rue =$row["rue"];
 
ca devrait aller mieux je pense... mais si ta requête de retourne q'uune ligne fait plutot ca :
 
$rue = mysql_result("$result",0,"Rue" );
 
c plus rapide il me semble :-

 

Reply

Marsh Posté le 25-01-2001 à 15:27:37    

en fait nan ça peut pas marcher ça car je cherche à c qu'il me sorte la Rue et le X associé

Reply

Marsh Posté le 25-01-2001 à 15:42:51    

Là je pige plus rien...
 
Ta coordonnée X ne sert que comme argument de sélection non ?
A aucune moment cette valeur est ressortie par la requête comme tu l'as mise....
 
Tu peux pas expliquer complètement ce que tu veux faire stp ?

 

Reply

Marsh Posté le 25-01-2001 à 15:47:36    

oki.
 
en gros g une table avec 3 champs, Rue, X et Y où X et Y sont les coordonnées de l'origine d'une rue sur un plan. (X,Y) est ma clé primaire. je veux aller chercher dans ma table les coordonnées de la rue la plus proche de mon point d'origine (ici g mis X=4 et fo changer le max en min) et qu'il me renvoie la Rue, et ses coordonnées (je me suis juste limité à l'étude de l'abscisse dans ce cas)
 
voilà, j'espère avoir été clair et que tu pourra m'aider :)

Reply

Marsh Posté le 25-01-2001 à 16:07:54    

Alors ta requête est bonn moins le IN comme dit plus haut c'est l'affichage des resultats qui déconne.
 
Fait comme j'ai dit mùais ajout l'affichage des coordonnées en ajoutant les lignes :
 
$X = mysql_result("$result",0,"X" ); (une pour X et une pour Y)
 
ou bien :
 
while (($row=mysql_fetch_array($result))
{
$rue = $row["rue"];
$X = $row["X"];
$Y = $row["Y"];
 
ensuite tu affihce tes valeurs comme tu as envie ;-)

 

Reply

Marsh Posté le 25-01-2001 à 16:24:04    

hmm, ça me paraissait bien tout ça quand je l'ai lu mais...
et bah ça marche pas
g toujours la même erreure au nivo du while : 0 is not a MySQL result indexss
 
avec la premiere méthode :ss
$X = mysql_result("$result",0,"X" );
$Rue = mysql_result("$result",0,"Rue" );
et même erreur sur les 2 lignes
 
:'(

Reply

Marsh Posté le 25-01-2001 à 16:24:04   

Reply

Marsh Posté le 25-01-2001 à 16:46:46    

je précise une chose,ma requete renvoie aussi une erreur avec phpmyadmin et franchement je vois pas pkoi car g testé la même sur un autre table avec sqlplus et là ça marche...

Reply

Marsh Posté le 25-01-2001 à 18:59:14    

personne sait ?

Reply

Marsh Posté le 25-01-2001 à 22:20:57    

désolé phleup mais j'ai pas de réponse pour le moment :(
par contre Sh@rdar à tort : mysql_fetch_row (ou mysql_fetch_array) est + rapide que mysql_result (c'est même dit dans le manuel de php !)

Reply

Marsh Posté le 26-01-2001 à 14:50:01    

phleup a écrit a écrit :

voilà, g un souscis avec mon script, à l'executtion, il m' dit que l'erreur se trouve sur la ligne : while($row = mysql_fetch_row($result)) et c'est : "Warning: 0 is not a MySQL result index"
 mais en fait je pense que l'erreure vient de la requete mais je ne voit pas pourquoi. kkun peut-il m'expliquer mon erreure merci
 
 
<?php
 
$host = localhost;  
$user = "user";
$bdd = "mydb";
$password = "pass";
 
mysql_connect($host, $user,$password) or die("erreur de connexion au serveur" );
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees" );
 
// Creation et envoi de la requete
$query = "select X,Rue from COORD where (X IN (select max(ABS(4-X)) from COORD))";
$result = mysql_query($query);
 
 
// Recuperation des resultats
while($row = mysql_fetch_row($result)){
$Rue = $row[0];
echo "$Rue
";
}
 
// Deconnexion de la base de donnees
mysql_close();
?>

 





Les bases de données mysql ne semble pas géré les IN entre deux sous requêtes. De même, elles ne suportent pas les alias de tables dans une requête. (tests réalisé avec php)
Voilà d'où proviens ton erreur.

Reply

Marsh Posté le 27-01-2001 à 22:56:47    

MySQL a quelque ptis soucis avec les requètes imbriquées (ie sous requètes) c ptet ça qui cloche ( ou alors le php permet de contourner le probleme)
si c'est bien ça, va faire un tour sur mysql .com dans l'aide en ligne le problème est documenté (si tu trouve pas mail moi je doi avoir le lien directe qui traine dans un coin)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed