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 04/12/2007, 17h07   #1
Membre confirmé
 
Inscription : décembre 2002
Messages : 452
Détails du profil
Informations forums :
Inscription : décembre 2002
Messages : 452
Points : 265
Points : 265
Par défaut Tableau smarty $tableau[$x][$y]

Bonjour tout le monde

Comment utiliser les tableaux sous Smarty.

J'ai 2 variables qui affiche bien des valeurs :
{$list_types[j].ID}
{$smarty.section.i.index}


Mais lorsque j'exploite ces 2 valeurs comme index aux tableaux list_jour, cela ne fonctionne pas.
{$list_jours[$list_types[j].ID][$smarty.section.i.index]}
Cela m'affiche comme erreurs :

Fatal error: Smarty error: [in cra_tableau.tpl line 38]: syntax error: unrecognized tag: $list_jours[$list_types[j].ID][$smarty.section.i.index] (Smarty_Compiler.class.php, line 439) in c:\program files\easyphp1-8\www\intranet\smarty\libs\Smarty.class.php on line 1095

Ou ai je fauté ?


Lorsque je fais un teste par exemple comme ceci : {$list_jours[1][1]}

ou meme une un champs qui n'existe pas : {$list_jours[1][5]} cela m'affiche pas d'erreur

Une idée ?
weed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2007, 09h03   #2
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
Bonjour,

Deux possibilités s'offrent à toi pour la récupération des indexs dans une section :

Code :
1
2
3
4
5
6
7
{section name=idx loop=$tableau}
	<li>{$tableau[idx]}</li>
{/section}
OU
{section name=idx loop=$tableau}
	<li>{$tableau[$smarty.section.idx.index]}</li>
{/section}
Il faudrait que tu postes davantage code parce que là c'est pas évident avec aussi peu d'information sur la structure de tes tabelaux et la façon de créer ta section !!.

Un conseil aussi ... tente de règler les trucs complexes (comme là avec tes imbrications de tableaux) côté PHP pour que ce soit le plus clair possible dans ton templates...

@+
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2007, 11h54   #3
Membre confirmé
 
Inscription : décembre 2002
Messages : 452
Détails du profil
Informations forums :
Inscription : décembre 2002
Messages : 452
Points : 265
Points : 265
En fait je ne veux pas lire de manière linéaire mon tableau avec un foreach ou un section loop mais acceder directement à tel élémenet du tableau


Coté PHP :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$sql = "
SELECT JOUR, ID_TYPE, DUREE
FROM cra 
		inner join cra_jours on cra.id=cra_jours.id_cra
 
WHERE cra.ID_UTILISATEUR = '".$_SESSION['ID']."' and cra.MOIS = '".$mois."' and cra.ANNEE = '".$annee."'
ORDER BY ID_TYPE, JOUR
";
$result=dbSQL($sql) or die (mysql_error());
while ($row = mysql_fetch_assoc ($result))
{
	$row2[$row['ID_TYPE']][$row['JOUR']]=$row['DUREE'];
}
$smarty->assign('list_jours', $row2);
 
$sql = "
SELECT ID, TYPE
FROM cra_types
ORDER BY ID
";
$result=dbSQL($sql) or die (mysql_error());
while ($row = mysql_fetch_assoc ($result))
{
	$smarty->append('list_types',$row);
}
 
//Nombre de jours dans le mois
$smarty->assign("nb_jours_mois",date('t', mktime(0, 0, 0, $mois, 2, $annee)));

Coté template TPL

Code :
1
2
3
4
5
6
7
8
9
10
{section name=j loop=$list_types}
<tr>
	<td class='partTitre'>{$list_types[j].TYPE}</td>
	{section start=1 name=i loop=$nb_jours_mois}
	<td>
		{$list_jours[$list_types[j].ID][$smarty.section.i.index]}
	</td>
	{/section}
</tr>
{/section}
Si ce n'est pas possible, ce n'est pas bien grave. Je n'utiliserais pas un template smarty pour cette page. Je ferais un include d'une page PHP ...
weed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2009, 16h12   #4
Futur Membre du Club
 
Inscription : octobre 2003
Messages : 39
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 39
Points : 19
Points : 19
Bonjour weed (avec un nom comme ça, pas étonnant que tu sois un membre "éclairé" lol)

en Smarty pour accéder à un élément d'un tableau, pour accéder à un élément dont l'index est contenu dans une variable, on utilise la syntaxe pointée :

Exemple :

{$montableau.$i}

équivaut à

<?php echo $montableau[$i]; ?>

pour plusieurs dimensions, idem, par exemple :

{$montableau.$x.$y}

donne

<?php echo $montableau[$x][$y]; ?>

La synthaxe crochet n'est autorisée que pour accéder à un index constant :

{$montableau[3]}

ou dans le cadre d'une {section}{/section} (cf manuel smarty)

pour plus de précisions :

http://www.smarty.net/manual/fr/lang....variables.php
XecTech est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web