Page 1 sur 1

Erreur dans ma requête?

Posté : 23 mai 2007, 09:34
par bromlecornu
Bonjour,

Ma page m'affiche une erreur que voici :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in d:\interventions\enreg_interv.php on line 29
Je pense que c une erreur dans ma requête la voila :

Code : Tout sélectionner

<? $sql = "Select * From services S, collaborateur C, interv I, urgence U Where S.num_service = C.num_service And C.num_col = I.num_col And I.num_urg = U.num_urg"; $sql_exe = mysql_query($sql); while($Tab = mysql_fetch_array($sql_exe)) { ?>
merci d'avance

Posté : 23 mai 2007, 09:43
par jpaul
Bonjour,

Quand j'ai un problème de ce type, je passe ma requête avec phpMyAdimn, ça permet de vérifier le résultat.
Une des possibilités : les conditions sont trop restrictive et aucun enregistrement ne correspond.

Posté : 23 mai 2007, 09:54
par bromlecornu
hein?

oui je l'ai passé dans mysql mais il me dit juste qu'ilo y a une erreur dans ma requête

Posté : 23 mai 2007, 10:11
par zeus
remplace cette ligne
$sql_exe = mysql_query($sql); 
par celle là :
$sql_exe = mysql_query($sql) or die('Erreur : ' . mysql_error());

Posté : 23 mai 2007, 10:37
par bromlecornu
Bon j'ai fait une requête simple et il ne m'affiche que mes deux boutons (envoyer et annuler)

et quand j'enlève l'affiche de l'erreur il me met :
Parse error: parse error in d:\interventions\enreg_interv.php on line 26
et mon ressemble a ca :

Code : Tout sélectionner

<form name="envoi_interv" method="post"> <? $sql = "Select * From interv"; $sql_exe = mysql_query($sql) while($Tab = mysql_fetch_array($sql_exe)) { ?> <td width="300" align="left">Date demande : </td> <td width="200"><input name="date_dem" type="text" size="50" /><?php echo $Tab["date_demande"]; ?></td> </tr> <tr> <td width="300" align="left">Heure demande : </td> <td width="200"><input name="heure_dem" type="text" size="50" /></td> </tr> <tr> <td width="300" align="left">Service : </td> <td width="200"><select name="service" size="0"></select></td> </tr> <tr> <td width="300" align="left">Collaborateur : </td> <td width="200"><input name="collaborateur" type="text" size="50" /></td> </tr> <tr> <td width="300" align="left">Urgence : </td> <td width="200"><select name="urgence" size="0"></select></td> </tr> <tr> <td width="300" align="left">Prévue le : </td> <td width="200"><input name="prevue" type="text" size="50" /></td> </tr> <tr> <td width="300" align="left">Technicien : </td> <td width="200"><select name="technicien" dir="ltr"></select></td> </tr> <tr> <td width="300" align="left">Objet : </td> <td width="200"><input name="objet" type="text" size="50" /></td> </tr> <tr> <td width="300" align="left">Désignation : </td> <td width="200"><textarea name="designation" cols="39" rows="5"></textarea></td> </tr> <tr> <td width="300" align="left">Remarque : </td> <td width="200"><textarea name="remarque" cols="39" rows="5"></textarea></td> </tr> <? } ?> </tr> </table><br /> <table width="500" border="0" cellpadding="0"> <tr> <td align="right"><input name="envoi" type="submit" value="Envoyer" /></td> <td align="left"><input name="reset" type="reset" value="Annuler" /></td> </tr> </table> </form>
merci de votre aide

Posté : 23 mai 2007, 11:48
par Ryle
Qu'est ce qu'on met à la fin d'une instruction php pour lui dire qu'elle est terminée et éviter les parse error à la ligne suivante ?! ;)
$sql_exe = mysql_query($sql);
Quant au problème initial, affiche le message d'erreur comme l'a suggéré zeus ou testes la dans MySql comme le propose jpaul. Tu auras très certainement un message d'erreur sql, du genre colonne ambigue ou autre.
Au lieu de faire un "SELECT * " qui ne sait absolument pas quoi te ramener des que tu croises plusieurs table, liste les champs dont tu as besoin, et préfixe si nécessaire ceux qui se trouve dans plusieurs tables par le nom ou l'alias de la table... ca marchera de suite beaucoup mieux :)

Posté : 23 mai 2007, 13:58
par bromlecornu
J'ai fai ce que ma dit zeus et rien ne s'affiche je n'ai que mes deux boutons

et dans easyphp qd je l'execute ca me dit que ca a été executer avec succes.

Posté : 23 mai 2007, 14:08
par Ryle
Dans ce cas, c'est qu'il ne rentre pas dans ton while, ce qui signifie que la requête ne renvoi pas de résultat ou a généré une erreur.

A vérifier également ton code html, on ne voit pas l'ouverture de ton tableau et la présence d'un formulaire à la place ou au milieu de celui-ci n'est pas des plus propre. Par ailleurs tu fermes un </tr> en trop après le while et tu oublies d'en ouvrir un au début de ta boucle :)

Posté : 23 mai 2007, 14:56
par bromlecornu
C bon ca fonctionne merci juste une tite derniere question

J'ai une liste deroulante que je souhaite remplir avec des infos qui sont dans ma base voi la le code :

Code : Tout sélectionner

<? $sql = "Select * From services order by nom_service"; $sql_exe = mysql_query($sql) or die('Erreur : ' . mysql_error()); ?> <td width="200"> <? $ld = "<SELECT NAME='service'>"; $ld .= "<OPTION VALUE=0>Choisir un service</OPTION>"; while ( $row = mysql_fetch_array( $sql)) { $mumser = $row["num_service"]; $nomser = $row["nom_service"]; $ld .= "<OPTION VALUE='$numser'>$nomser</OPTION>"; } $ld .= "</SELECT>"; ?>
et il me dit ca sur ma page
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in d:\interventions\enreg_interv.php on line 44
Bin je pense que c le row qui n'est pas déclarer mais je ne trouve pas comment faire

Merci encore

Posté : 23 mai 2007, 15:12
par sadeq
Ecris:

Code : Tout sélectionner

while ( $row = mysql_fetch_array( $sql_exe)) {
Au lieu de :

Code : Tout sélectionner

while ( $row = mysql_fetch_array( $sql)) {

Posté : 23 mai 2007, 15:17
par bromlecornu
maintenant il me dit :

Code : Tout sélectionner

Notice: Undefined variable: numser in d:\interventions\enreg_interv.php on line 47
je ne voit pas comment le déclarer désolé

Posté : 23 mai 2007, 16:44
par bromlecornu
resolu merci

Posté : 24 mai 2007, 01:33
par Ryle
Modération :
Puisque ta question est résolue, j'ajoute le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.

Tu peux réaliser cette opération toi-même
en cliquant sur le bouton [Mettre Résolu] qui s'affiche en haut à gauche de ce sujet
si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)