Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2028 connectés 

  FORUM HardWare.fr
  Programmation

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°11217
phleup
Posté le 25-01-2001 à 15:02:54  profilanswer
 

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();
?>

mood
Publicité
Posté le 25-01-2001 à 15:02:54  profilanswer
 

n°11220
Fred999
Rabat-joie
Posté le 25-01-2001 à 15:08:56  profilanswer
 

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.

n°11222
Roswell_
Posté le 25-01-2001 à 15:10:55  profilanswer
 

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.

n°11223
phleup
Posté le 25-01-2001 à 15:15:12  profilanswer
 

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

n°11224
Sh@rdar
Ex-PhPéteur
Posté le 25-01-2001 à 15:15:46  profilanswer
 

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 :-

 

n°11228
phleup
Posté le 25-01-2001 à 15:27:37  profilanswer
 

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

n°11232
Sh@rdar
Ex-PhPéteur
Posté le 25-01-2001 à 15:42:51  profilanswer
 

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 ?

 

n°11233
phleup
Posté le 25-01-2001 à 15:47:36  profilanswer
 

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 :)

n°11238
Sh@rdar
Ex-PhPéteur
Posté le 25-01-2001 à 16:07:54  profilanswer
 

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 ;-)

 

n°11241
phleup
Posté le 25-01-2001 à 16:24:04  profilanswer
 

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
 
:'(

mood
Publicité
Posté le 25-01-2001 à 16:24:04  profilanswer
 

n°11253
phleup
Posté le 25-01-2001 à 16:46:46  profilanswer
 

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...

n°11297
phleup
Posté le 25-01-2001 à 18:59:14  profilanswer
 

personne sait ?

n°11322
Zebra3
Posté le 25-01-2001 à 22:20:57  profilanswer
 

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 !)

n°11418
omega2
Posté le 26-01-2001 à 14:50:01  profilanswer
 

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.

n°11592
pompom
Posté le 27-01-2001 à 22:56:47  profilanswer
 

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)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

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

 

Sujets relatifs
Attaquer une base PostgreSQL ou Mysql en C++Base de données,site web dynamique,ASP...
Exporter des donnees Excel ( Visual C++)Convertion données en fichier compatible Excel
[PHP] n'importe qui peut utiliser un include pour acceder à mysql?Aide pour installation linux php, mysql, apache.
mysql_fetch_row en phpComment récupérer les données d'1 formulaire dans une deuxième via ASP
Plus de sujets relatifs à : [php/MySQL] erreur de requete ou de récupération des données


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR