Erreur dans ma requête?

bromlecornu
Invité n'ayant pas de compte PHPfrance

23 mai 2007, 09:34

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

Eléphant du PHP | 451 Messages

23 mai 2007, 09:43

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.
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

bromlecornu
Invité n'ayant pas de compte PHPfrance

23 mai 2007, 09:54

hein?

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 mai 2007, 10:11

remplace cette ligne
$sql_exe = mysql_query($sql); 
par celle là :
$sql_exe = mysql_query($sql) or die('Erreur : ' . mysql_error());
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

bromlecornu
Invité n'ayant pas de compte PHPfrance

23 mai 2007, 10:37

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 mai 2007, 11:48

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

bromlecornu
Invité n'ayant pas de compte PHPfrance

23 mai 2007, 13:58

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.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 mai 2007, 14:08

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

bromlecornu
Invité n'ayant pas de compte PHPfrance

23 mai 2007, 14:56

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

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

23 mai 2007, 15:12

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)) {
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

bromlecornu
Invité n'ayant pas de compte PHPfrance

23 mai 2007, 15:17

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é

bromlecornu
Invité n'ayant pas de compte PHPfrance

23 mai 2007, 16:44

resolu merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

24 mai 2007, 01:33

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 !!! ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...