Problème de syntaxe avec un echo (pour remplir un select)

lolymeupy Messages postés 33 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 6 janvier 2009 - 19 mars 2008 à 13:15
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 - 19 mars 2008 à 19:18
bonjour,
j'ai un pb de syntaxe avec le code suivant :

<?php
$liste_ville=chargement_select();
echo('<select name="ville_evt" id="ville_evt" style="font-family:Arial">');
//echo('<option value="'.'">'.'</option>');

 while ($ligne=mysql_fetch_object($liste_ville))
{
echo('<OPTION value="'.$ligne->nom_ville .'" <?php if($_SESSION[\'ville_evt\']=="'.$ligne->nom_ville.'") echo \'selected\'="selected"\' ?>  >'.$ligne->nom_ville.'</OPTION>');
}

echo('</select>');
?>

J'obtiens dans mon select les bons champs mais tous précédés par le signe ">" qui coorespond au 2ème > dans le bout de code suivant :
selected"\' ?>  >'.$ligne

(Je précise que ce que je veux obtenir c'est ça :
<SELECT name="categorie_evt" id="categorie_evt" title="" style="font-family:Arial">
<OPTION value="Concert"  <?php if($_SESSION['categorie_evt']=="Concert") echo 'selected="selected"' ?>  >Concert</OPTION>
<OPTION value="Théatre"  <?php if($_SESSION['categorie_evt']=="Théatre") echo 'selected="selected"' ?>  >Théatre</OPTION>
...
<OPTION value="Arts"  <?php if($_SESSION['categorie_evt']=="Arts") echo 'selected="selected"' ?>  >Arts du spectacle (art de rue, cirque,...)</OPTION>
</SELECT>

Si j'utilise une boucle pour le premier select c'est que j'y ai + de 300 options à mettre [javascript:Insert_Emoticon('/imgs2/smile_dissapprove.gif'); ]!)

8 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
19 mars 2008 à 13:29
Salut,

A l'intérieur d'une chaine entourée de guillemets simples, il ne faut pas échapper les guillemets doubles.

echo('<OPTION value= "'.$ligne->nom_ville .'" <?php
if($_SESSION[\'ville_evt\']=="'.$ligne->nom_ville.'") echo
\'selected\'="selected"\' ?> 
>'.$ligne->nom_ville.'</OPTION>');

=>

echo('<OPTION value="'.$ligne->nom_ville .'" <?php
if($_SESSION[\'ville_evt\']=="'.$ligne->nom_ville.'") echo
\'selected\'="selected"\' ?> 
>'.$ligne->nom_ville.'</OPTION>');

D'ailleurs c'est marrant, y'a que 2 guillemets doubles que tu échappes, pas les autres...

<hr size ="2" width="100%" />Neige
0
lolymeupy Messages postés 33 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 6 janvier 2009
19 mars 2008 à 13:49
Merci pour l'info neigedhiver.
Mais en fait c'est parce que je dois obtenir :
'selected'="selected"
(cf comparaison avec l'autre select dans mon premier post )

Et j'ai quand même essayé sans, mais j'obtiens toujours le même
résultat ! J'ai toujours le signe > devant chaque option dans ma
liste
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
19 mars 2008 à 14:09
Ben oui, mais je vois pas où est le problème : pas besoin d'échapper les " dans une chaine avec '.
Quand tu fais :
echo '<option name="bidule" selected="selected" value="truc" />';

tu obtiens bien ça dans ton html :
<option name="bidule" selected="selected" value="truc" />


Si tu veux absolument avoir un \ dans ton html, il faut l'échapper avec un \ : \\

<hr size="2" width="100%" />Neige
0
lolymeupy Messages postés 33 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 6 janvier 2009
19 mars 2008 à 14:14
ok, je te remercie, je vais les enlever.
mais pas d'idée pour le problème du > (qui correspond à la fin du
<option ) ? Il me l'affiche au lieu de le "prendre " comme la fin
de la balise OPTION ...
0

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

Posez votre question
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
19 mars 2008 à 14:28
Pardon, j'avais pas regardé assez en détails : ton code est crade...

echo('<OPTION value="'.$ligne->nom_ville .'" <?php
if($_SESSION[\'ville_evt\']=="'.$ligne->nom_ville.'") echo
\'selected\'="selected"\' ?> 
>'.$ligne->nom_ville.'</OPTION>');

=>

echo '<OPTION value="' . $ligne->nom_ville . '"';
if($_SESSION['ville_evt'] == $ligne->nom_ville) {
    echo ' selected="selected" >' . $ligne->nom_ville . '</OPTION>';
}

Je sais pas pourquoi tu mets du php dans le echo avec un bloc if... Ca n'a aucun sens...
<hr size="2" width="100%" />Neige
0
lolymeupy Messages postés 33 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 6 janvier 2009
19 mars 2008 à 17:58
le problème c'est que :

if($_SESSION['ville_evt'] == $ligne->nom_ville) {

ca veut dire que si le if n'est pas vrai, il ne ferme pas le select
puisque le > de fermeture est dans le if !
0
lolymeupy Messages postés 33 Date d'inscription jeudi 19 avril 2007 Statut Membre Dernière intervention 6 janvier 2009
19 mars 2008 à 18:03
...et parce que ce que je voudrais obtenir c'est ça :

<SELECT name="categorie_evt" id="categorie_evt" title="" style="font-family:Arial">
<OPTION value="Concert" <?php if($_SESSION['categorie_evt']=="Concert") echo 'selected="selected"' ?> >Concert</OPTION>
...
</SELECT>

mais comme j'ai 300 champs, je "préfère" faire une boucle pour ce select
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
19 mars 2008 à 19:18
Est-ce que tu as passé un peu de temps à lire la doc de php ?
La structure de contrôle if accepte l'utilisation de else.

Et puis pour fermer le select, tu n'as qu'à le sortir du if. Je pensais pas que c'était si compliqué à faire.

<hr size="2" width="100%" />Neige
0
Rejoignez-nous