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] Transmission avec Smarty


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 160
    Par défaut [Smarty] Transmission avec Smarty
    Bonjour,

    J'utilise le système de template Smarty, j'ai une liste à faire, j'aimerais passer des valeurs au template style id, titre ... et dans le tpl mettre exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <div>
         <p>{$titre}</p>
         <a href="test.php?id={$id}">test</a>
    </div>
    Mais je ne sais pas comment faire côté php, actuellement je met tout dans un while exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $liste = "";
     
    while($test .....)
    {
         $liste .= "<div>";
         $liste .= "<p>".$test['titre']."</p>";
         $liste .= '<a href="test.php?id='.$test['id'].'">test</a>';
         $liste .= '</div>';
    }
    Euh je met dans le tpl "{$liste}"

    Merci

  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
    Hello,

    Il faut que tu regarde du côté des tableaux...

    http://eric-pommereau.developpez.com...=page_3#LIII-B

    @++

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 160
    Par défaut
    Ok mais comment je fais passer dans les tableaux avec mon while() ?

  4. #4
    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,

    En fait dans le fichier Php tu "passes" les données à Smarty avec la méthode assign(), par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $oSmarty->assign('liste', $liste);
    Ton exemple (de while) n'est pas pertinent dans la mesure où smarty est fait pour séparer la présentation des données.

    Pour en revenir à ton exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $liste = "";
     
    while($test .....)
    {
         $liste .= "<div>";
         $liste .= "<p>".$test['titre']."</p>";
         $liste .= '<a href="test.php?id='.$test['id'].'">test</a>';
         $liste .= '</div>';
    }
    Il faudrait mettre le html dans le template et produire les données (titre, contenu du href ...) dans le fichier Php, genre :

    PHP :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    require_once('../libs/Smarty.class.php');
     
    $oSmarty = new Smarty();
     
    $oSmarty->assign('titre', 'Mon titre');
    $oSmarty->assign('id', 234);
     
    $oSmarty->display();
    LE TEMPLATE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <div>
    	<p>{$titre}</p>
    	<a href="test.php?id={$id}">test</a>
    </div>

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 160
    Par défaut
    Oui mais comment je fais pour un while() comme dans mon exemple ?

  6. #6
    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
    Un exemple similaire à ce que tu veux faire :

    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
    require_once('../lib_smarty/Smarty.class.php');
     
    $oSmarty = new Smarty();
     
    $mysql_ressource = mysql_connect('localhost', 'root', '');
     
    mysql_select_db("training", $mysql_ressource);
     
    $sQuery = "SELECT PSN_FIRST_NAME, PSN_LAST_NAME, PSN_PHONE FROM person ORDER BY PSN_LAST_NAME";
     
    $mysql_rs = mysql_query($sQuery, $mysql_ressource) or die(mysql_error());
     
    $aRecordSet = array();
     
    while ($aRow = mysql_fetch_array($mysql_rs)) {
    	array_push($aRecordSet, $aRow);
    }
     
    $oSmarty->assign('smarty_table_mysql', $aRecordSet);
     
    $oSmarty->display('index.tpl');
    Le TPL :

    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
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
     "http://www.w3.org/TR/html4/loose.dtd">
     <html>
    	<head>
    	<title></title>
    	</head>
    	<body>
    		<table width="450px">
    			<tr style="background-color:teal;color:white;">
    				<th>NOM</th>
    				<th>PRENOM</th>
    				<th>TELEPHONE</th>
    			</tr>
    			<!-- Pour chaque élément du tableau $smarty_table_mysql -->
    			{section name=idx loop=$smarty_table_mysql}
    				<tr style="background-color:{cycle values="#ffffcc, #cccccc"};">
    					<td>{$smarty_table_mysql[idx].PSN_LAST_NAME}</td>
    					<td>{$smarty_table_mysql[idx].PSN_FIRST_NAME}</td>
    					<td>{$smarty_table_mysql[idx].PSN_PHONE}</td>            
    				</tr>   	
    			{/section}
     
    		</table>
    	</body>
    </html>
    Dans le fichier PHp tu crées un tableau avec tes valeurs que tu passes au moteur de smarty.

    Ensuite dans le tpl tu utilises soit un {section ...} soit un {foreach... } pour afficher les données du tableau.

    @+

Discussions similaires

  1. [Smarty] Probleme transmission d'id dans plusieurs pag avec smarty
    Par medalaoui dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 25/07/2013, 22h59
  2. Transmission avec le protocole HTTPS
    Par blaspalles dans le forum Langage
    Réponses: 3
    Dernier message: 20/03/2007, 11h26
  3. [Smarty] organisation avec smarty
    Par mohican13 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 13/02/2006, 14h11

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