Page 1 sur 1
Probleme sur l'affichage d'une requete.
Posté : 25 mars 2005, 15:48
par kermystik
Salut !
voila j'ai un probleme sur ce code la
[code] $requete = "SELECT nomD FROM dessin;";
$resultat = mysql_query ($requete);
for ($i =0 ; $i < mysql_num_rows($resultat) ; $i++) {
$tab = mysql_fetch_array($i, $resultat);
echo "$tab[$i]";
echo "<br>";
}[/code]
Le message d'erreur est le suivant :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/d/f/kermystik/index.php on line 22
et il me l'affiche 10 fois, normalement cette requete devrais renvoyé 10 reponse.
J'ai essayé de changer quelque truc sur la ligne d'erreur, j'ai testé ça :
[code]$tab = mysql_fetch_array($resultat, $i,);[/code]
mais la je comprends encore moin bien le message d'erreur :
Warning: mysql_fetch_array(): The result type should be either MYSQL_NUM, MYSQL_ASSOC or MYSQL_BOTH. in /var/www/free.fr/d/f/kermystik/index.php on line 22
Voila si quelqun peut m'aider ce serai cool parcque la je bloque ...
Re: Probleme sur l'affichage d'une requete.
Posté : 25 mars 2005, 16:01
par Jerem'
$requete = "SELECT nomD FROM dessin;";
$resultat = mysql_query ($requete);
for ($i =0 ; $i < mysql_num_rows($resultat) ; $i++) {
$tab = mysql_fetch_array($resultat);
echo "$tab[$i]";
echo "<br>";
}
Essaye ça (j'ai modifié le mysql_fetch_array)
Re: Probleme sur l'affichage d'une requete.
Posté : 25 mars 2005, 16:04
par Jerem'
$requete = "SELECT nomD FROM dessin;";
$resultat = mysql_query ($requete);
for ($i =0 ; $i < mysql_num_rows($resultat) ; $i++) {
$tab = mysql_fetch_array($resultat);
echo "$tab[$i]";
echo "<br>";
}
Essaye ça (j'ai modifié le mysql_fetch_array)
Le mieux serait encore
$requete = mysql_query("SELECT nomD FROM dessin") or die (mysql_error());
while($resultat = mysql_fetch_array($requete))
{
echo $resultat['nomD']."<br />";
}
Posté : 25 mars 2005, 16:04
par Cyrano
Essaye comme ça:
<?php
$requete = "SELECT nomD FROM dessin;";
$resultat = mysql_query ($requete);
/* On crée le tableau UNE SEULE FOIS, donc AVANT la boucle for() */
$tab = mysql_fetch_array($i, $resultat);
/* On compte le nombre de lignes une seule fois également, pas dans la boucle: */
$nb_lignes = mysql_num_rows($resultat);
/* version 1 */
for ($i =0 ; $i < $nb_lignes ; $i++)
{
echo "$tab[$i]";
echo "<br>";
}
/* Ou bien, on aurait pu faire autrement: */
$nb_lignes2 = count($tab);
/* version 2 */
for ($i =0 ; $i < $nb_lignes2 ; $i++)
{
echo "$tab[$i]";
echo "<br>";
}
?>
a ok
Posté : 25 mars 2005, 16:16
par kermystik
Merci ça marche, par contre j'ai du mal à saisir comment marche la boucle ?
[php]$requete = mysql_query("SELECT nomD FROM dessin") or die (mysql_error());
while($resultat = mysql_fetch_array($requete))
{
echo $resultat['nomD']."<br />";
} [/php]
en fait le fetch_array permet egalement de verifié si une ligne existe ?[/code]
mysql_fetch_array
Posté : 02 mai 2005, 22:54
par Isa
Bonjour,
Je reprends ce poste, parce que mon problème traite sensiblement de la même chose, à savoir : mysql_fetch_array
Je ne connais rien au php, le code suivant a été développé par qqn d'autre que je ne peux pas contacter actuellement, et ce code concerne la validation d'inscription à un site.
Code : Tout sélectionner
<?php
include("infoServeur.php");
if (isset($_GET['id']) && isset($_GET['pass']))
{
$id=$_GET['id'];
$pass=$_GET['pass'];
$identifiant = md5($id);
$connection = mysql_connect($host, $user,$password);
mysql_select_db("$dbname", $connection);
$query = mysql_query("SELECT nom, prenom, email FROM attenteValidation WHERE identifiant='$id' and password='$pass'");
$tab = mysql_fetch_array($query, MYSQL_NUM);
mysql_query("insert into identification(identifiant, password, nom, prenom, email) values('$identifiant', '$pass', '$tab[0]', '$tab[1]', '$tab[2]')");
mysql_query("delete from identification where identifiant='$id'");
}
else
{
echo "Un problème est survenu lors de la génération du lien";
}
?>
Le message d'erreur que les visiteurs obtiennent lorsqu'ils cliquent sur le lien pour valider leur inscription est :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/4/9/monsite/inscription.php on line 12
La ligne 12 étant : $tab = mysql_fetch_array($query, MYSQL_NUM);
Je ne sais vraiment pas ce que je dois modifier, j'ai eu beau chercher un peu, tout a été vain. Si vous pouviez m'aider, vous me seriez d'un grand secours !! Merci d'avance !
Posté : 02 mai 2005, 23:08
par Cyrano
Ce qui me surprend un peu, c'est qu'il a essayé de mettre le résultat de mysql_fetch_array dans une variable alors qu'il est beaucoup plus courant de l'utiliser directement dans une boucle.
D'autant plus surprenant encore quand on voit le requête qui ne devrait pas retournerplus d'une ligne de résultat avec trois champs.
Peu importe, on va commencer par vérifier quelque chose: juste avant la ligne indiquée, tu vas insérer une petite ligne :
$query = mysql_query("SELECT nom, prenom, email FROM attenteValidation WHERE identifiant='". $id ."' and password='". $pass ."'");
echo("<p>". $query ."</p>\n");
$tab = mysql_fetch_array($query, MYSQL_NUM);
On affiche la requête: copie-la directement et essaye de l'exécuter tout aussi directement via PhpMyAdmin : tu auras une réponse qui te dira si la requête est correcte (affichage normal des information) ou si'il y a une erreur.
Posté : 02 mai 2005, 23:27
par Isa
Tout d'abord merci beaucoup pour cette réponse rapide !!
Je suis un peu paumée au niveau de PhpMyAdmin, ça ne me dit rien.
Toujours est-il que j'ai inséré le morceau de code que tu m'as donné et j'ai mis en ligne directement. Le message d'erreur indique la même partie de code...

Posté : 02 mai 2005, 23:29
par Cyrano
Tu peux me décrire ton installation ? Tu ne connais pas PhpMyAdmin ? Ou tu ne sais pas t'en servir ?
Autre chose : tu as fait afficher la requête : est-ce qu'elle est complète ?
Posté : 02 mai 2005, 23:45
par Invité
Disons que j'ai EasyPhp, et peut être je me suis déjà servie de PhpMyAdmin, mais là, je vois pas comment le tester en local si c'est ce que tu voulais que je fasse. Et si ce n'est pas ça, je crois que de toute façon je ne sais pas m'en servir.
Pour la 2e question, je crois que tu vas t'arracher les cheveux avec moi... Je suis vraiment novice avec ce language, et j'ai peur de te faire perdre ton temps. Je me demande si je ne vais pas laisser ce problème en suspend jusqu'à ce que la personne en question soit accessible et disponible...
Parce que si je bute sur chaque question qui te permettrait de voir plus clair sur ce que je fais ou pas, on ne va pas s'en sortir.
Donc je te remercie, mais je crois que je suis pas assez calée pour te suivre... C'est pas si "simple" que je pensais (façon de parler).
Posté : 02 mai 2005, 23:54
par Cyrano
T'inquiètes pas, c'est pas si compliqué que ça.
Procède par étapes:
-1- faire afficher la requête avec le petit ajout que je t'ai mis : normalement, quand tu vas cliquer sur le bouton de validation du formulaire, tu auras peut-être encore le message d'erreur, mais juste avant tu devrais voir un truc genre SELECT nom, prenom, email etc... : copie le directement sur l'écran colle ça dans un bloc note.
-2- PhpMyAdmin : en bas à droite de ton écran, tu as une icône de EasyPHP : fais un clic droit dessus et tu dois avoir un lien indiqué PhpMyAdmin. Ouvre le et tu vas arriver dans une interface de gestion de MySQL. À gauche, sélectionne ta base de donnée (celle avec laquelle tu travailles). Tu va voir apparaître une liste de tables en dessous et à droite la struture de la base
-3- Dans la partie de droite, tout en haut, tu as un bouton ou un lien marqué "SQL" : cliques dessus: ça va t'ouvrir une fenêtre avec une zone de saisie : récupères la requête de ton bloc-note et colle là dedans puis cliques sur le bouton [Exécuter]
-4- Reviens ici avec le résultat
C'est pas dur, c'est juste qu'il faut y aller pas à pas.
Sur ce, je vais me coucher

Posté : 03 mai 2005, 00:27
par Invité
rhalala c'est sympa d'être aussi patient !
1. en fait quand on clique sur le bouton de validation, un mail est envoyé à la personne qui vient de s'inscrire, donc là ya pas d'erreur. Dans ce mail il y a un lien qui valide l'inscription et c'est lorsque l'on clique sur ce lien qu'apparait l'erreur, mais toujours telle que je l'ai recopiée, et je n'ai pas le truc "SELECT nom, prenom etc."
2.-3. ok, je vois ce que c'est maintenant !! merci.
par contre j'étais en train d'écrire un truc, quand je me suis rendu compte que je ne sais pas "faire afficher la requête". Donc je suis coincée...
Bon ben moi aussi je vais me coucher.... Merci encore.
Posté : 08 mai 2005, 16:13
par Invité
Me revoilà avec quelques jours d'absence... Mais j'ai la solution de mon problème. En fait il y avait une erreur toute bête.
Il se trouve que le code est correct et fonctionne, à condition d'enlever la majuscule de attenteValidation, qu'il faut donc écrire attentevalidation. Erreur qui se trouvait en fait sur la ligne précédant le mysql_fetch_array.
Voilà, je suis revenue pour donner la solution car il me semble que c'est le principe du forum.
A bientôt
et merci encore
Posté : 08 mai 2005, 16:19
par Cyrano
Effectivement, c'est une erreur toute bête sur laquelle on peut suer pendant pas mal de temps. C'est pour ça que je trouve phpMyAdmin pratique parceque si j'essaye la requête directe dedans, j'ai un retour relativement explicite et dans ce cas précis, la réponse aurait été que la table attenteValidation n'existait pas.
Bon code
