Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Templates > Smarty
Smarty Forum d'entraide sur le moteur de templates Smarty. Avant de poster -> FAQ Smarty et Cours Smarty
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/05/2007, 12h41   #1
Invité de passage
 
Inscription : décembre 2006
Messages : 4
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 4
Points : 3
Points : 3
Par défaut Problème récupération variable dans un for

Bonjour @tous,

Je voudrais reproduire un champ date de naissance sans avoir à taper les 31 jours d'un mois et les 70 années pour un champ date de naissance sous smarty.

Donc voilà comment mon champ Date de naissance se présente :

JJ / MM / AAAA

où JJ = nbre de jours à deux chiffres
où MM = mois en lettres
où AAAA = années de 1953 à 1990 par ordre DESC

pour JJ, dans mon fichier PHP j'ai fait :

Code :
1
2
3
4
for ($jour = 1; $jour <= 31; $jour++)
{
$smarty->assign('jour', $jour);
}
et pour AAAA, dans mon fichier PHP j'ai fait :

Code :
1
2
3
4
for ($mois = 1953; $mois <= 1990; $mois++)
{
$smarty->assign('mois', $mois);
}
et dans mon fichier TPL j'ai mis pour JJ :

Code :
1
2
3
{foreach from=$jour item=jour}
  id: {$jour}<br />
{/foreach}
Le problème c'est que cela ne me ressort que la dernière valeur de la boucle au lieu de toute me les sortir.
slaxsystem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2007, 13h59   #2
Membre expérimenté
 
Développeur Web
Inscription : avril 2006
Messages : 430
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2006
Messages : 430
Points : 538
Points : 538
Salut,

j'ai pu constater plusieurs problèmes dans tes divers codes (notamment que tu écrases ta variable $jour dans ton for... )

Je vais tout de même te proposer une alternative moins envahissante pour faire ce que tu désires

http://smarty.php.net/manual/en/lang...elect.date.php

Et via un seul tag et quelques paramètres, tu auras le résultat que tu souhaitais.
__________________
Merci à Microsoft pour avoir transformé un métier relativement terne et basé sur une approche bêtement technique et rigoureuse des faits, en challenge quotidien, nécessitant une remise en question permanente à l'échelle du quart d'heure
bkill est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2007, 16h26   #3
Invité de passage
 
Inscription : décembre 2006
Messages : 4
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 4
Points : 3
Points : 3
Oki, j'ai vu cette façon de faire sur Smarty.

Le seul problème c'est que les mois sont en anglais.

Quel est donc la manière de faire avec mes boucles for en php ?

Merci d'avance
slaxsystem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2007, 16h27   #4
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
Il faut que tu regardes la fonction (SMARTY) append() au lieu de assign() pour ne pas écraser tes valeurs "jour"

@++
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2007, 17h10   #5
Membre expérimenté
 
Développeur Web
Inscription : avril 2006
Messages : 430
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2006
Messages : 430
Points : 538
Points : 538
Citation:
Envoyé par slaxsystem
Oki, j'ai vu cette façon de faire sur Smarty.

Le seul problème c'est que les mois sont en anglais.

Quel est donc la manière de faire avec mes boucles for en php ?

Merci d'avance
pour le coup des mois en anglais, un petit
Code :
1
2
 
setlocale(LC_ALL, 'fr_FR');
devrait faire l'affaire...

Sinon, pour en revenir à tes boucles PHP:

Code :
1
2
3
4
5
6
7
8
9
10
 
for ($i = 1; $i <= 31; $i++) { 
  $jours[] = $i;
}
$smarty->assign('jours', $jours); 
 
for ($i= 1953; $i<= 1990; $i++) { 
  $annees[] = $annee;
}
$smarty->assign('annees', $annees );
et smarty:
Code :
1
2
3
4
5
6
7
8
 
{foreach from=$jours item=jour}  
  id: {$jour}<br /> 
{/foreach}
 
{foreach from=$annees item=annee}  
  id: {$annee}<br /> 
{/foreach}

Tu peux également faire tes boucles d'un seul coup en smarty...

Code :
1
2
3
4
5
6
7
8
 
{section name=jours loop=32 step=1 start=1}
  {$smarty.section.jours.index}
{/section}
 
{section name=annees loop=1991 step=1 start=1953}
  {$smarty.section.annees.index}
{/section}
Voilaaa.
__________________
Merci à Microsoft pour avoir transformé un métier relativement terne et basé sur une approche bêtement technique et rigoureuse des faits, en challenge quotidien, nécessitant une remise en question permanente à l'échelle du quart d'heure
bkill est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h29.


 
 
 
 
Partenaires

Hébergement Web