Construction Select template Php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Construction Select template Php

Re: Construction Select template Php

par Patriboom » 04 janv. 2016, 23:52

Et bien là, c'est simple.
Il suffit de dire à PHP ce que tu viens d'écrire dans ton texte. « Je veux l'an précédant et l'an suivant » comme ceci

Code : Tout sélectionner

<select name="year" style="margin: 0px 13px;" id="year"> <?php echo '<option value="'.(date("Y")-1).'">'.(date("Y")-1).'</option>'; echo '<option value="'.date("Y").'" selected="selected">'.date("Y").'</option>'; echo '<option value="'.(date("Y")+1).'">'.(date("Y")+1).'</option>'; ?> </select>

Re: Construction Select template Php

par sandy2626 » 04 janv. 2016, 23:39

Merci Patriboom mais ca ne marche pas j'obtiens la zone de l'année vide. et puis je veux que mon code marche chaque année avec toujours l'année en cours affichée par défaut, l'année précédente qui la précède a l'affichage et l'année suivante qui la suit ;)
donc pas de date en dur comme dans ton exemple.

Re: Construction Select template Php

par sandy2626 » 04 janv. 2016, 23:32

voila j'ai ca :
<select name="year" style="margin: 0px 13px;" id="year">
<option value="2016">2016 </option>
<option value="2017">2017 </option>
<option value="2015">2015 </option>

</select>
selected n'apparait aucune fois.

Re: Construction Select template Php

par Patriboom » 04 janv. 2016, 17:05

Ce que l'on te demande ici, c'est de
i) lancer ton navigateur
ii) afficher la page qui contient ton code
iii) faire afficher par le navigateur le html ( chrome utilise Ctrl-U pour faire cela, iExplore demande qu'on aille dans le menu « Afficher - Montrer le code source » )
iv) c'est ce code qu'il te faut étudier

Combien de fois apparaît la commande "selected" dans tes options ?

Voici un code tout-cuit qui peut t'aider (non à apprendre, je m'en excuse, mais à avancer dans ton projet). C'est du code dont tu n'auras pas souci au cours des années à venir:

Code : Tout sélectionner

<select name="year" style="margin: 0px 13px;" id="year"> <?php for ($a=2013; $a<date("Y"); $a++) { echo '<option value="'.$a.'"'; if ($a == date("Y")) { echo ' selected="selected" '; } echo '>'.$a.'</option>'; } ?> </select>

Re: Construction Select template Php

par tof73 » 04 janv. 2016, 10:32

c'est donc le code html visible dans le navigateur qu'il faut vérifier.

Re: Construction Select template Php

par sandy2626 » 04 janv. 2016, 07:43

:oops: excuse moi mais je ne cpmprends pas. je suis debutante. pour moi un fichier tpl va generer un fichier php qui va me donner ma page html. plus que ca je ne sais pas. mais je serai ravie que l'on m'explique.

Re: Construction Select template Php

par or 1 » 03 janv. 2016, 22:42

quel est le code html généré ? pas le php

Re: Construction Select template Php

par sandy2626 » 03 janv. 2016, 22:38

je te l'ai mis c'est ca :
<select name="year" style="margin: 0px 13px;" id="year">
<option <?php if ($_GET['y']==date('Y')-1){?> <?php }?> value="<?php echo date('Y')-1;?>
"><?php echo date('Y')-1;?>
</option>
<option <?php if ($_GET['y']==date('Y')){?> selected="selected" <?php }?> value="<?php echo date('Y');?>
"><?php echo date('Y');?>
</option>
<option <?php if ($_GET['y']==date('Y')+1){?> <?php }?> value="<?php echo date('Y')+1;?>
"><?php echo date('Y')+1;?>
</option>
</select>

Re: Construction Select template Php

par or 1 » 03 janv. 2016, 22:30

quel est le code html généré ?

Re: Construction Select template Php

par sandy2626 » 03 janv. 2016, 22:27

Salut or1
alors j'ai dans template :
<select name="year" style="margin: 0px 13px;" id="year">
<option {if $smarty.get.y == 'Y'|date - 1} {/if} value="{'Y'|date - 1}">{'Y'|date - 1} </option>
<option {if $smarty.get.y == 'Y'|date} selected="selected" {/if} value="{'Y'|date}">{'Y'|date} </option>
<option {if $smarty.get.y == 'Y'|date + 1} {/if} value="{'Y'|date + 1}">{'Y'|date + 1} </option>
</select>

j'obtiens en genere :
<select name="year" style="margin: 0px 13px;" id="year">
<option <?php if ($_GET['y']==date('Y')-1){?> <?php }?> value="<?php echo date('Y')-1;?>
"><?php echo date('Y')-1;?>
</option>
<option <?php if ($_GET['y']==date('Y')){?> selected="selected" <?php }?> value="<?php echo date('Y');?>
"><?php echo date('Y');?>
</option>
<option <?php if ($_GET['y']==date('Y')+1){?> <?php }?> value="<?php echo date('Y')+1;?>
"><?php echo date('Y')+1;?>
</option>
</select>
Et j'ai toujours 2015 affichée en premier par défaut.
Une autre suggestion svp ?

Re: Construction Select template Php

par or 1 » 03 janv. 2016, 22:12

selected="selected" au lieu de selected

Re: Construction Select template Php

par sandy2626 » 03 janv. 2016, 22:03

Salut Arthur,
En effet j'ai ceci :
<select name="year" style="margin: 0px 13px;" id="year">
<option <?php if ($_GET['y']==date('Y')-1){?> selected <?php }?> value="<?php echo date('Y')-1;?>
"><?php echo date('Y')-1;?>
</option>
<option <?php if ($_GET['y']==date('Y')){?> selected <?php }?> value="<?php echo date('Y');?>
"><?php echo date('Y');?>
</option>
<option <?php if ($_GET['y']==date('Y')+1){?> selected <?php }?> value="<?php echo date('Y')+1;?>
"><?php echo date('Y')+1;?>
</option>
</select>
mais si dans le tpl je mets :
<select name="year" style="margin: 0px 13px;" id="year">
<option {if $smarty.get.y == 'Y'|date - 1} {/if} value="{'Y'|date - 1}">{'Y'|date - 1} </option>
<option {if $smarty.get.y == 'Y'|date} selected {/if} value="{'Y'|date}">{'Y'|date} </option>
<option {if $smarty.get.y == 'Y'|date + 1} {/if} value="{'Y'|date + 1}">{'Y'|date + 1} </option>
</select>

dans le php généré j'obtiens :

<select name="year" style="margin: 0px 13px;" id="year">
<option <?php if ($_GET['y']==date('Y')-1){?> <?php }?> value="<?php echo date('Y')-1;?>
"><?php echo date('Y')-1;?>
</option>
<option <?php if ($_GET['y']==date('Y')){?> selected <?php }?> value="<?php echo date('Y');?>
"><?php echo date('Y');?>
</option>
<option <?php if ($_GET['y']==date('Y')+1){?> <?php }?> value="<?php echo date('Y')+1;?>
"><?php echo date('Y')+1;?>
</option>
</select>
Mais l'année est toujours positionnée sur 2015.
As-tu une idée ?

Re: Construction Select template Php

par @rthur » 03 janv. 2016, 21:17

Bonjour,

Regarde le code HTML généré par ton template, à mon avis tu as des selected en trop ;)

Construction Select template Php

par sandy2626 » 03 janv. 2016, 21:04

Bonjour a tous et bonne année 2016 !!!
J ai encore besoin de votre aide svp.
Il s agit d une template php qui construit un select avec 3 options correspondant aux années 2015, 2016 et 2017. J'ai donc :

<select name="year" style="margin: 0px 13px;" id="year">
<option {if $smarty.get.y == 'Y'|date - 1} selected {/if} value="{'Y'|date - 1}">{'Y'|date - 1} </option>
<option {if $smarty.get.y == 'Y'|date} selected {/if} value="{'Y'|date}">{'Y'|date} </option>
<option {if $smarty.get.y == 'Y'|date + 1} selected {/if} value="{'Y'|date + 1}">{'Y'|date + 1} </option>
</select>

Mon problème c est que je souhaite avoir l année 2016 qui vient se positionner par défaut lorsque l'utilisateur arrive sur la page. Mais je n'obtiens pas cela, En fait si je veux l'année 2016 qui s'affiche par défaut il faut que je mette l'option correspondante en premier soit :
<select name="year" style="margin: 0px 13px;" id="year">
<option {if $smarty.get.y == 'Y'|date} selected {/if} value="{'Y'|date}">{'Y'|date} </option>
<option {if $smarty.get.y == 'Y'|date - 1} selected {/if} value="{'Y'|date - 1}">{'Y'|date - 1} </option>
<option {if $smarty.get.y == 'Y'|date + 1} selected {/if} value="{'Y'|date + 1}">{'Y'|date + 1} </option>
</select>

or, quand je fais ca j'obtiens les années dans le désordre:2016,2015,2017. C'est pas trés joli.

Avez-vous une solution pour remédier a ce problème ?
Merci de votre aide.
Sandy