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] Problème de boucle MySQL sous Smarty


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 4
    Points : 6
    Points
    6
    Par défaut [Smarty] Problème de boucle MySQL sous Smarty
    Bonjour à tous,

    Je cherche manifestement un moyen pour afficher les 3 derniers résultats d'une requête MySQL dans une template Smarty mais je n'y parviens pas.

    Voici le code se trouvant dans le fichier index.tpl :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    {section name=ID_MEMBRE loop=3}
    ID utilisateur : {$ID_MEMBRE}<br />
    Pseudonyme : {$PSEUDO_MEMBRE}<br />
    Adresse complète :   {$ADRESSE_MEMBRE}<br /><br />
    {/section}
    Et, le code du fichier index.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
     
    <?php
     
    	require '../libs/Smarty.class.php';
     
    	$smarty = new Smarty;
     
    	$smarty->compile_check = true;
    	$smarty->debugging = false;
     
    	$connexion = mysql_connect("srvdev01.3suisses.fr", "Administrator", "HQvxD31v2");
    	mysql_select_db("template", $connexion);
     
    	$resultat = mysql_query("SELECT * FROM utilisateurs ORDER BY id_utilisateur");
     
    	while($utilisateurs = mysql_fetch_array($resultat))
    	{
    		$smarty->assign("ID_MEMBRE",$utilisateurs[0]);
    		$smarty->assign("PSEUDO_MEMBRE",$utilisateurs[1]);
    		$smarty->assign("ADRESSE_MEMBRE",$utilisateurs[3]);
    		$i++;
    	}
     
    	$smarty->display('index.tpl');
     
    ?>
    Merci d'avance pour vos corrections et votre aide

  2. #2
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    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 : 557
    Points
    557
    Par défaut
    Salut,

    ta boucle php est le premier problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $resultat = mysql_query("SELECT * FROM utilisateurs ORDER BY id_utilisateur");
     
    	while($utilisateurs = mysql_fetch_array($resultat))
    	{
    		$smarty->assign("ID_MEMBRE",$utilisateurs[0]);
    		$smarty->assign("PSEUDO_MEMBRE",$utilisateurs[1]);
    		$smarty->assign("ADRESSE_MEMBRE",$utilisateurs[3]);
    		$i++;
    	}
    Donc tu récupères tous les users, ensuite tu boucle, et à chaque fois tu mets l'utilisateur en cours dans les variables smarty. Enfin, tu affiches ton template, donc tu n'auras que le dernier user dans tes variables smarty...

    Je procèderais donc comme suit, en remplacant la requete pour ne récupérer que 3 résultats (les 3 premiers par exemple), et en assignant le résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $resultat = mysql_query("SELECT * FROM utilisateurs ORDER BY id_utilisateur LIMIT 3");
    $utilisateurs = array();
     
    	while($temp = mysql_fetch_array($resultat))
    	{
              $utilisateurs[] = array( 
                'ID_MEMBRE' => $temp[0],
                'PSEUDO_MEMBRE' => $temp[1],
                'ADRESSE_MEMBRE' => $temp[2]
              );
            }
            $smarty->assign('UTILISATEURS', $utilisateurs);
    Puis dans smarty, pour afficher:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      {foreach from=$UTILISATEURS item=utilisateur}
        ID utilisateur : {$utilisateur.ID_MEMBRE}<br />
        Pseudonyme : {$utilisateur.PSEUDO_MEMBRE}<br />
        Adresse complète :   {$utilisateur.ADRESSE_MEMBRE}<br /><br />
      {/foreach}
    Voila, avec tout ca, un peu de lecture de doc smarty, un peu de lecture de doc php, et un peu de logique, et c'est parti
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec boucle mysql
    Par Invité dans le forum Langage
    Réponses: 1
    Dernier message: 27/04/2013, 20h23
  2. [Débutant] Problème de connexion MySQL sous .Net C#
    Par levelKro dans le forum ADO.NET
    Réponses: 1
    Dernier message: 15/01/2013, 08h05
  3. Problème de connexion MySQL sous ASP.NET
    Par Philomelo dans le forum Visual Studio
    Réponses: 1
    Dernier message: 07/10/2011, 22h34
  4. Problème d'installation MySQL sous Ubuntu 9.10
    Par hardsession dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 23/09/2010, 16h32
  5. [MySQL] problème de boucle mysql (xajax)
    Par artotal dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/08/2007, 00h44

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