Page 1 sur 1

pb requete debutante

Posté : 10 mai 2005, 15:47
par renatane
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?

Posté : 10 mai 2005, 15:53
par Cyrano
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.

Posté : 10 mai 2005, 16:03
par zeus
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

Posté : 10 mai 2005, 16:15
par Invité
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.

Posté : 10 mai 2005, 16:17
par renatane
tous ce que ca me fait c m'afficher la requete sql!

Posté : 10 mai 2005, 16:18
par Cyrano
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.

Posté : 10 mai 2005, 16:20
par Invité
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>

Posté : 10 mai 2005, 16:26
par renatane
biensur, là dedans il y a beaucoup e choses inutiles a la resolution de mon problème.

Mais les connection, selection fonctionnent.

Posté : 10 mai 2005, 17:13
par zeus
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.

Posté : 10 mai 2005, 17:33
par renatane
merci bcp, je comprend mon erreur maintenant,

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

Merci bcp.