IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

[SGBD] erreur mysql_fetch_array


Sujet :

Requêtes MySQL

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 72
    Par défaut [SGBD] erreur mysql_fetch_array
    bonjour tlm

    j'ai une erreur dans une de mes pages php que j'arrive pas à débugger, l'erreur que sa donne est celle-ci : Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in f:\testphp\liste_equipe.php on line 38

    et voici mon code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php
    					mysql_connect("localhost", "root");
    					mysql_select_db("vbbpam");
     
    					$equipe = $_POST['choix_equipe'];
    					$retour = "SELECT * FROM joueurs, equipes WHERE equipes.id = joueurs.equipe";
    					$retour = $retour + " AND equipe.id = " . $equipe .";";
    					$retour = mysql_query($retour);
     
    					?>
    					<TABLE><tr>
    					<th>Nom</th>
    					<th>Prénom</th></tr>
    					<?
     
    					[b]while ($donnees = mysql_fetch_array($retour))[/b]
     
    					{ ?>
    					<tr>
    					<td><? echo($donnees['nom']); ?></td>
    					<td><? echo($donnees['prenom']); ?></td></tr>
    					<?
     
    					}
    					?>
    					</table>
    si ma requete est bizarre, c'est parce que j'ai essayé de la décomposer pour voir d'ou peut venir l'erreur, a priori, elle vient du fait que je compare equipe.id au résultat de $_POST['choix_equipe'] qui est une liste déroulante alimentée automatiquement par les id des équipes, avec une boucle (l'id de l'équipe est en fait dans la balise <VALUE> de l'option)

    je ne saurais être plus clair, donc si vous voyez d'ou cela peut venir, aidez moi svp

  2. #2
    Membre chevronné Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Par défaut
    $retour = "SELECT * FROM joueurs, equipes WHERE equipes.id=joueurs.id";
    $retour .=" AND equipe.id = " . $equipe .";
    $retour = mysql_query($retour);

  3. #3
    Membre expérimenté
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Par défaut Re: [PHP] : erreur mysql_fetch_array
    Citation Envoyé par Le Mage Noir
    bonjour tlm

    j'ai une erreur dans une de mes pages php que j'arrive pas à débugger, l'erreur que sa donne est celle-ci : Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in f:\testphp\liste_equipe.php on line 38

    et voici mon code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php
    					mysql_connect("localhost", "root");
    					mysql_select_db("vbbpam");
     
    					$equipe = $_POST['choix_equipe'];
    					$retour = "SELECT * FROM joueurs, equipes WHERE equipes.id = joueurs.equipe";
    					$retour = $retour + " AND equipe.id = " . $equipe .";";
    					$retour = mysql_query($retour);
     
    					?>
    					<TABLE><tr>
    					<th>Nom</th>
    					<th>Prénom</th></tr>
    					<?
     
    					[b]while ($donnees = mysql_fetch_array($retour))[/b]
     
    					{ ?>
    					<tr>
    					<td><? echo($donnees['nom']); ?></td>
    					<td><? echo($donnees['prenom']); ?></td></tr>
    					<?
     
    					}
    					?>
    					</table>
    si ma requete est bizarre, c'est parce que j'ai essayé de la décomposer pour voir d'ou peut venir l'erreur, a priori, elle vient du fait que je compare equipe.id au résultat de $_POST['choix_equipe'] qui est une liste déroulante alimentée automatiquement par les id des équipes, avec une boucle (l'id de l'équipe est en fait dans la balise <VALUE> de l'option)

    je ne saurais être plus clair, donc si vous voyez d'ou cela peut venir, aidez moi svp
    Ta requete a un probleme, fait un echo $retour et colle le resultat dans phpmyadmin

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 72
    Par défaut
    oui je sais que c la requete, pour tester j'ai enlevé la derniere condition, celle de la liste déroulante, et la y a aucun probleme, bien sur tous les résultats s'affichent ^^ mais ça marche

    dans ce cas la, echo $retour affiche : Resource id #4

    ce peut il que ce soit a cause de la syntaxe ?
    (j'ai vérifié mes <VALUE> de la liste, ils sont nickels)

    dj-julio, j'ai essayé ce que t'as marqué mais c bizarre, un point devant l'égal ??

    $retour = "SELECT * FROM joueurs, equipes WHERE equipes.id=joueurs.id";
    $retour .=" AND equipe.id = " . $equipe .";
    $retour = mysql_query($retour);

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    Ca ne serait pas le s à equipe ?
    Tu as equipes.id et equipe.id...

  6. #6
    Membre expérimenté
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Par défaut
    Citation Envoyé par Le Mage Noir
    oui je sais que c la requete, pour tester j'ai enlevé la derniere condition, celle de la liste déroulante, et la y a aucun probleme, bien sur tous les résultats s'affichent ^^ mais ça marche

    dans ce cas la, echo $retour affiche : Resource id #4

    ce peut il que ce soit a cause de la syntaxe ?
    (j'ai vérifié mes <VALUE> de la liste, ils sont nickels)

    dj-julio, j'ai essayé ce que t'as marqué mais c bizarre, un point devant l'égal ??

    $retour = "SELECT * FROM joueurs, equipes WHERE equipes.id=joueurs.id";
    $retour .=" AND equipe.id = " . $equipe .";
    $retour = mysql_query($retour);
    echo retour juste avant ton mysql_query

  7. #7
    Membre chevronné Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Par défaut
    le point devant égal c'est comme si tu faisait :

    $retour = "SELECT * FROM joueurs, equipes WHERE equipes.id=joueurs.id";
    $retour =$retour." AND equipe.id = " . $equipe .";
    $retour = mysql_query($retour);

    la concaténation en php se fait avec le point

  8. #8
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Je te recommande vivement d'utiliser des variables différentes pour les différents retours.
    Notamment ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $retour = mysql_query($retour);
    Cela prête à confusion : le $retour envoyé en paramètre à mysql_query() est une requête (donc une string) alors que le $retour effectivement retourné par mysql_query() est une ressource.
    Même sémantiquement, donner une variable $retour en paramètre à une fonction alors que c'est son paramètre d'entrée, ça déroute.

  9. #9
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    Citation Envoyé par Le Mage Noir
    dj-julio, j'ai essayé ce que t'as marqué mais c bizarre, un point devant l'égal ?
    .= signifie concaténer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $a='abc';
    $a.='def'; // $a contient maintenant 'abcdef'

  10. #10
    Membre expérimenté
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Par défaut
    Citation Envoyé par Kirkis
    Salut

    Je te recommande vivement d'utiliser des variables différentes pour les différents retours.
    Notamment ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $retour = mysql_query($retour);
    Cela prête à confusion : le $retour envoyé en paramètre à mysql_query() est une requête (donc une string) alors que le $retour effectivement retourné par mysql_query() est une ressource.
    Même sémantiquement, donner une variable $retour en paramètre à une fonction alors que c'est son paramètre d'entrée, ça déroute.
    +1, perso la query s'appele simplement $query (et le resultat $res1 .. 2 3 4)

  11. #11
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 72
    Par défaut
    ok, je vais voir avec tout ce que vous m'avez donné

    merci pour le "s" de equipe ^^

    je vais tester en changeant mon code

  12. #12
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 72
    Par défaut
    alors ! hop encore du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    $equipe = $_POST['choix_equipe'];
    					$sql = "SELECT * FROM joueurs, equipes WHERE equipes.id=joueurs.id";
    					$sql .=" AND equipes.id = " . $equipe .";";
    					echo $sql;
    					$retour = mysql_query($sql);
     
     
    					?>
    					<TABLE><tr>
    					<th>Nom</th>
    					<th>Prénom</th></tr>
    					<?
     
    					while ($donnees = mysql_fetch_array($retour))
     
    					{ ?>
    					<tr>
    					<td><? echo($donnees['nom']); ?></td>
    					<td><? echo($donnees['prenom']); ?></td></tr>
    					<?
     
    					}
    					?>


    j'ai toujours une erreur, mais je pense savoir d'ou elle vient, la ligne :
    echo $sql affiche ceci : SELECT * FROM joueurs, equipes WHERE equipes.id=joueurs.id AND equipes.id = MF2; ==> ce qui a l'air correct ... sauf que peut etre il manque des guillements à MF2 vu que c'est du texte ...

    [/code]

  13. #13
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    C'est exactement ça !

  14. #14
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 72
    Par défaut
    ok ^^

    dans ce cas, pourriez vous encore un peu m'aider car entre les guillemets simples ou doubles, je m'embrouille rapidement

    je sais pas lesquelles mettre où ^^

  15. #15
    Membre Expert

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Par défaut
    Cherche "guillemets" dans le manuel php.

  16. #16
    Membre expérimenté
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Par défaut
    Citation Envoyé par Le Mage Noir
    ok ^^

    dans ce cas, pourriez vous encore un peu m'aider car entre les guillemets simples ou doubles, je m'embrouille rapidement

    je sais pas lesquelles mettre où ^^
    $sql = "SELECT * FROM joueurs, equipes WHERE equipes.id=joueurs.id";
    $sql .=" AND equipes.id = \"$equipe\"";

    ou

    $sql = "SELECT * FROM joueurs, equipes WHERE equipes.id=joueurs.id";
    $sql .=" AND equipes.id = '$equipe' ";

    ou

    $sql = 'SELECT * FROM joueurs, equipes WHERE equipes.id=joueurs.id';
    $sql .=' AND equipes.id = "'.$equipe.'"';


  17. #17
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Il faut distinguer les guillemets du PHP et ceux du SQL, ce ne sont pas tout à fait les mêmes.

    Dans tes requêtes, il faut mettre le guillemet arrière ` pour protéger les noms de tes champs et tables, surtout si par exemple tu veux avoir un champ appelé `date` (puisque c'est un mot réservé du langage SQL).
    Également dans les requêtes, il faut mettre des guillemets simples ' ou doubles " autour des chaînes de caractères. Les valeurs numériques n'ont pas besoin de guillemets.

    En PHP, le manuel t'aidera sûrement.

  18. #18
    Membre expérimenté
    Inscrit en
    Janvier 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 242
    Par défaut
    Citation Envoyé par Kirkis
    Il faut distinguer les guillemets du PHP et ceux du SQL, ce ne sont pas tout à fait les mêmes.

    Dans tes requêtes, il faut mettre le guillemet arrière ` pour protéger les noms de tes champs et tables, surtout si par exemple tu veux avoir un champ appelé `date` (puisque c'est un mot réservé du langage SQL).
    Également dans les requêtes, il faut mettre des guillemets simples ' ou doubles " autour des chaînes de caractères. Les valeurs numériques n'ont pas besoin de guillemets.

    En PHP, le manuel t'aidera sûrement.
    Petit truc, pour une valeur numérique, il est quand meme conséillé de les proteger, ça evitera si on ne met pas de valeur d'avoir un beau mysql erreur.

  19. #19
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 72
    Par défaut
    Perplexe, Le Mage Noir regarde ces écritures bizarres, mais confiant, il teste la première (on sait jamais ...) et là, un miracle se produisit ...

    MERCI BEAUCOUP TLM !!!!!

    CA MARCHE, JE SUIS CONTENT !

    Je vous fait pleins de gros bisous tiens ^^


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SGBD] erreur mysql_num_rows();
    Par zulot dans le forum Requêtes
    Réponses: 11
    Dernier message: 12/02/2006, 15h54
  2. Réponses: 5
    Dernier message: 09/01/2006, 13h07
  3. [SGBD] problème mysql_fetch_array()
    Par ben127 dans le forum Requêtes
    Réponses: 12
    Dernier message: 09/01/2006, 01h54
  4. erreur mysql_fetch_array()
    Par speedylol dans le forum Requêtes
    Réponses: 3
    Dernier message: 05/01/2006, 12h00
  5. [SGBD] Warning: mysql_fetch_array()
    Par talme dans le forum Installation
    Réponses: 2
    Dernier message: 03/11/2005, 04h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo