Warning: mysql_fetch_array()

Fermé
neo2030 Messages postés 3 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 14 mai 2012 - 10 mai 2012 à 11:48
 le père - 14 mai 2012 à 23:31
Bonjour,

Dans le cadre d'un contexte formation sncf, j'ai choisie d'afficher le résultat de ma requête (vérifiée et bonne) sous forme d'un tableau dynamique incluant SQL et PHP.

Le problème viens des lignes ou le "$listesession" apparait, car je sais que l'erreur "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in " correspond sois à une mauvaise connexion à la base de donnée ou que la variable n'est pas reconnu ou n'est pas éxécuté.

Voici mon script :

<?php
$serveur = "localhost";
$base = "bddformation";
$utilisateur = "root";
$mot_passe = "tgsi";
//connexion au serveur de la base de données
mysql_connect($serveur, $utilisateur, $mot_passe) or die ("connexion impossible");
//connexion à la base de données
mysql_select_db($base) or die ("base de données non accessible");
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>projet Sncf</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>

<body bgcolor="#DB0B32">

<img src="images/sncf.jpg"align="middle" width="900" height="220" />

<form action="liste_session.php">
<table>

<tr>
<th>codeAction</th>
<th>datesession</th>
<th>nombremaxparticipant</th>
<th>idlieu</th>
<th>coutprevu</th>
<th>lieu.libelle</th>
<tr/>
<?php

//récupération des données du formulaire
$listeaction = $_REQUEST['action'];


//récupération du jeu d'enregistrements résultat de la requête exécutée
$base = mysql_connect($serveur, $utilisateur, $mot_passe) or die ("connexion impossible");

$listesession = mysql_query ("SELECT codeAction, datesession, nombremaxparticipant, idlieu, coutprevu, lieu.libelle
FROM session, lieu, action
WHERE session.codeaction=action.code
AND session.idlieu=lieu.id
and codeAction='$listeaction");

while ( $ligne = mysql_fetch_array ( $listesession,MYSQL_ASSOC))
{
print ("codeAction : %s datesession : %s nombremaxparticipant : %s idlieu : %s coutprevu : %s lieu.libelle : %s" , $ligne["codeAction"], $ligne["datesession"], $ligne["nombremaxparticipant"],$ligne["idlieu"],$ligne["coutprevu"],$ligne["lieu.libelle"]);
}
mysql_free_result($listesession);

//parcours sequentiel du jeu d'enregistrements obtenu

echo "<form name = 'page_acc' method = 'post' session = 'page_acc.php'>";

echo "</form>";
print "</table>
<br/><a href='acceuil.php'>Retour page d'acceuil</a>";

?>
</body>
</html>

6 réponses

Bonjour

Si tu as cette erreur, c'est que ta requête n'est pas correcte malgré ta vérification.

Pour vérifier :
$listesession = mysql_query ("SELECT codeAction, datesession, nombremaxparticipant, idlieu, coutprevu, lieu.libelle
FROM session, lieu, action
WHERE session.codeaction=action.code
AND session.idlieu=lieu.id
and codeAction='$listeaction") or die (mysql_error()); 
0
Rectification, il y a (au moins) une autre possibilité.

En fait, tu te connectes une deuxième fois. Juste avant ta ligne $listesession =, il y a un mysql_db_connect qui n'a rien à y faire
0
Je repasse par là...
Tu ouvres aussi deux fois le <form>.La deuxième ouverture est immédiatement avant le </form>. Elle est incorrecte d'ailleurs.

Dans la première balise <form>, est-ce volontairement que tu n'as pas mis de 'method' ?

Et enfin... À quoi sert ce formulaire qui ne contient, sauf erreur de ma part, aucun champ de saisie ???
0
neo2030 Messages postés 3 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 14 mai 2012
14 mai 2012 à 16:38
Bonjour,

Désolé de répondre aussi tard. :)
Merci en effet de m'avoir aidé pour les <form>. ;)
Par contre je n'arrive pas a trouverde solution adéquate pour faire le tant désiré tableau dynamique. :)
le père, as tu une proposition a me faire pour afficher ce tableu sans les balise <td> <tr> etc...
Merci beaucoup. :)
0
neo2030 Messages postés 3 Date d'inscription jeudi 10 mai 2012 Statut Membre Dernière intervention 14 mai 2012
14 mai 2012 à 16:39
En incrustant la requete SQL bien sur.
0
Je ne comprends pas la question.
Quel tableau dynamique veux-tu afficher sans balises <td>, <tr>, etc ?
C'est déjà ce que tu fais avec ton while ( $ligne = mysql_fetch_array ( ...
Veux-tu parler de la mise en forme du tableau ?

@neo2030 : ça veut dire quoi ta réponse ? Je n'ai jamais entendu parler d'incruster une requête SQL, mais je ne demande qu'à m'instruire.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Excuse moi je me suis mal exprimé.
Dans se cas pourquoi est- ce que mon tableau dynamique avec "While" ne fonctionne pas ? :)
Je voudrais faire un tableau en prenant les informations sur une base de données déjà définie. C'est pour cela que je me sert du SQL.
0
$listesession = mysql_query ("SELECT codeAction, datesession, nombremaxparticipant, idlieu, coutprevu, lieu.libelle
FROM session, lieu, action
WHERE session.codeaction=action.code
AND session.idlieu=lieu.id
and codeAction='$listeaction") or die(mysql_error()); 

En ajoutant or die(mysql_error()), tu verras le message d'erreur, s'il y en a une.
Et il y en a sûrement une, car tu mets une apostrophe avant $listeaction mais pas après.
$listesession = mysql_query ("SELECT codeAction, datesession, nombremaxparticipant, idlieu, coutprevu, lieu.libelle
FROM session, lieu, action
WHERE session.codeaction=action.code
AND session.idlieu=lieu.id
and codeAction='$listeaction'") or die(mysql_error());
0