IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[Smarty] Tableau smarty $tableau[$x][$y]


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 238
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 238
    Par défaut [Smarty] 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 ?

  2. #2
    Membre Expert
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Par défaut
    Bonjour,

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

    @+

  3. #3
    Membre éprouvé

    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 238
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 238
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 39
    Par défaut
    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

Discussions similaires

  1. [Smarty] Tableau dans fonction
    Par Mister Nono dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 23/01/2007, 13h45
  2. [Smarty] Lister un tableau en colonnes
    Par Laurentq1970 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 12/01/2007, 10h50
  3. [Smarty] dernier élément d'un tableau
    Par wkd dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 05/10/2006, 13h07
  4. [smarty] formatage numérique tableau
    Par harlock59 dans le forum Langage
    Réponses: 3
    Dernier message: 11/07/2006, 10h28
  5. [MySQL] tableau de données via BDD et Smarty
    Par taly dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/01/2006, 16h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo