pb requete debutante

renatane
Invité n'ayant pas de compte PHPfrance

10 mai 2005, 15:47

salut,
j'essaye d'aficher le type d'une instance dont on connait la date mais j'ai uen erreur:
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/html/synthese/rediger.php on line 67
que je ne comprend pas.
voici mon code:

Code : Tout sélectionner

$nature="SELECT DISTINCT instance.type FROM instance where instance.jour==$list['jour'] and instance.mois==$list['mois'] and instance.annee==$list['annee']"; echo "Nature : $nature ";
qqun pourrai me dire ce qui ne va pas?

Mammouth du PHP | 19672 Messages

10 mai 2005, 15:53

Il ne faut pas mélanger le SQL et le PHP n'importe comment : la concaténation de chaines est fait pour ça :
$nature="SELECT DISTINCT instance.type 
FROM instance 
where instance.jour==". $list['jour'] ." 
and instance.mois==". $list['mois'] ." 
and instance.annee== ". $list['annee'];

echo "Nature : $nature ";
Ta variable $list, c'est du PHP, comme c'est un tableau, tu as des index avec des apostrophes qui entrent en conflit avec la syntaxe SQL.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

10 mai 2005, 16:03

Est-ce que, par hasard, tu ne t'attendrais pas à ce que $nature contienne la e résultat de ta requête? Si c'est le cas, ça ne marchera pas !!!

Répond nous si tu veux qu'on t'explique
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

Invité
Invité n'ayant pas de compte PHPfrance

10 mai 2005, 16:15

ben si, en fait c ce que je pensait, $nature contiendrai la reponse et ainsi avec echo $nature et ben je comptai avoir le type.

J'ai corrigé avec ton code cyrano, mais ca marche pas, j'ai ajouté ." aprés annee, mais ca marche pas non plus, je vais encore essayer de bidouillé mais vu ce que tu me di Zeus, je ne pense pas que ca soit utile de perseverer dans uncode qui ne fonctionnera pas.

renatane
Invité n'ayant pas de compte PHPfrance

10 mai 2005, 16:17

tous ce que ca me fait c m'afficher la requete sql!

Mammouth du PHP | 19672 Messages

10 mai 2005, 16:18

Attends une minute : si tu espères que ce que tu as écrit va te donner un résultat, il en manque pas mal : la connexion à la base de donnée, la sélection de la base, l'exécution de la requête et la récupération du résultat.
Simplement mettre echo() ne suffira pas sinon à afficher la requête.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

10 mai 2005, 16:20

non, c pas ca, mais j'ai eparnier tout ce code car je pensait que le problème venai de la requete sql, et pas du php.

Code : Tout sélectionner

<html> <body> <center><h2>Rédiger une notes de syntheses</h2></center><br><br> <A HREF="index.php"> retour a l\'index </A><br><br> <?php $bdd = "synthese"; $host = "localhost"; $user = "renatane"; $pass = "esteban"; mysql_connect($host, $user, $pass) or die("Connexion à la base impossible"); mysql_select_db("$bdd") or die("Ouverture base impossible"); $rq = "SELECT DISTINCT nom_service FROM service ORDER BY nom_service"; $result = mysql_query($rq) or die ("Exécution de la requête service impossible"); //DISTINCT permet d'afficher qu'une fois les données echo "<form action='enregistrer.php' method='post'> Service : <select name='nom_service'>\n<br>"; while ($liste=mysql_fetch_array($result)) { extract($liste); echo "<option value='$nom_service'>$nom_service\n"; } echo " </select>\n"; echo "<br><br>"; echo " Titre :"; echo "<INPUT type=text name='titre' SIZE='60' MAXLENGTH='200'><BR>\n"; echo "<br> "; echo " Article :<BR><br>"; echo " <TEXTAREA name='article' cols='100' rows='10' height=100% width=100% WRAP=virtual>"; echo " </TEXTAREA>"; echo "<table cols='2' rows='2' border='0' width=100% > "; echo " <tr><td>"; $rq = "SELECT DISTINCT instance.jour, instance.mois, instance.annee FROM instance ORDER BY id_instance"; $result = mysql_query($rq) or die ("Exécution de la requête instance impossible"); //DISTINCT permet d'afficher qu'une fois les données echo " Proposé pour l instance du: <select name='date'>\n<br>"; while ($list=mysql_fetch_array($result)) { extract($list); $date=$list['jour']." ".$list['mois']." ".$list['annee']; echo "<option value='$date'>$date</option>\n"; } echo " </select>\n"; echo "<br><br>"; $nature="SELECT DISTINCT instance.type FROM instance where instance.jour=". $list['jour'] ." and instance.mois=". $list['mois'] ." and instance.annee= ". $list['annee']; echo "Nature : $nature "; echo "<br>"; echo "Date limite de remise des dossiers : <br><br> "; echo "</td> "; echo "<td>Destinataire : <INPUT TYPE=text NAME='destinataire' SIZE='30' MAXLENGTH='50'><A HREF='annuaire.php'> consulter l annuaire </A><br><BR> "; mysql_close(); echo "</td> "; echo "</tr> "; echo " <tr colspan='2'><td>"; echo " <INPUT TYPE='button' name= 'valider' VALUE='Valider' OnClick='window.open('confirmation.php','pop1','height=200, width=400, top=100, left=100,toolbar=no, menubar=yes, location=no, resizable=yes, scrollbars=no, status=no');'>"; echo "<INPUT TYPE='submit' name ='enregistrer' VALUE='Enregistrer'> "; echo "<INPUT TYPE='reset' VALUE='Annuler'></td></tr> "; echo "<br><br><br>"; echo"</table></form>"; ?> </body> </html>

renatane
Invité n'ayant pas de compte PHPfrance

10 mai 2005, 16:26

biensur, là dedans il y a beaucoup e choses inutiles a la resolution de mon problème.

Mais les connection, selection fonctionnent.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

10 mai 2005, 17:13

Il faut que tu execute ta requete sur ta base de données afin que celle-ci te retourne le résultat et tu pourra ensuite utiliser ce résultat
//Construction de la requete
$nature="SELECT DISTINCT instance.type
FROM instance
where instance.jour=". $list['jour'] ."
and instance.mois=". $list['mois'] ."
and instance.annee= ". $list['annee']; 
//On execute la requete sur la base de données afin de récuperer les données
$result = mysql_query($nature)
or die ("Exécution de la requête instance impossible");

//On place les données récupérées dans un tableau (obligatoire)
$list=mysql_fetch_array($result)

//On affiche ces données
echo "Nature : ".$list["type"];
Dans ce bout de code, j'ai construit la requete SQL (comme te l'a montré Cyrano) Puis j'ai exécuté cette requete sur la base de données puis je les ai affichés !!!

Si tu ne comprends pas quelquechose, n'hésite pas à demander.
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

renatane
Invité n'ayant pas de compte PHPfrance

10 mai 2005, 17:33

merci bcp, je comprend mon erreur maintenant,

mais j'ai des parse error..., je regarderai a ca plus tard (je doit partir).

Merci bcp.