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 21/11/2011, 13h48   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2010
Messages : 80
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 80
Points : 10
Points : 10
Envoyer un message via MSN à doud180878
Par défaut requetes et sous requetes en php

Bonjour je suis en train de mettre a jour mon applic et de la passer sous smarty.

Tout se passe bien sauf que lorsque je veux afficher des résultats de requêtes et de sous requêtes imbriquées, je sors avec une liste non répartit

Exemple 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
29
30
31
32
33
  $req = $db->query("SELECT id, titre_fr FROM categories ORDER BY titre_fr ASC");
 
   $liste_projets[] = array();
   $i = 0; 
   while ($res = $req->fetch_assoc())
   {
      $liste_projets[$i]['id'] = stripslashes($res['id']);
      $liste_projets[$i]['titre_ca'] = stripslashes($res['titre_fr']);
 
 
          $sql = "SELECT DISTINCT 	projets.id, image, projets.titre_fr, statut.titre_fr as statut
    				FROM 	projets
    						INNER JOIN statut ON(projets.statut_id = statut.id)
    				WHERE 	categories_id  = " . (int)$res['id'];
 
          $ssreq = $db->query($sql);
 
          while ($ssres = $ssreq->fetch_assoc())
          {
            $liste_projets[$i]['image'] = $ssres['image'] .'?' . time();
            $liste_projets[$i]['titre_fr'] = $ssres['titre_fr'];
            $liste_projets[$i]['statut'] =  $ssres['statut'];
            $liste_projets[$i]['id'] = $ssres['id'];
          }
 
    $i++; 
   }
 
 
   // On affiche la liste
   $smarty->assign('liste_projets', $liste_projets);
 
   $smarty->assign('action', 'Ajouter');
et Mon fichier tpl :

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
{foreach name=outer from=$liste_projets item=categorie}
	<div class="liste">
		<h3>{$categorie.titre_ca}</h3>
	</div>
 
    	{foreach from=$liste_projets item=projet}
        {if isset($projet.image)}
        	<div class="sous_liste">
        		<table>
        			<tr>
                        <td>{$projet.id|default:''}</td>
        				<td style="width: 100px;"><img src="/img/projets/{$projet.image|default:''}" alt="" height="80" /></td>
        				<td>{$projet.titre_fr|default:''}</td>
        				<td style="width: 200px;">Statut : {$projet.statut|default:''}</td>
        				<td style="width: 200px;">
        					<a href="/admin/realisations/projets/modifier/{$projet.id|default:''}" class="btn_modifier"></a>
        					<img src="/admin/design/separation-fiche.png" width="2" height="27" alt="" />
        					<a href="#" rel="projet/{$projet.id|default:''}" class="btn_supprimer"></a>
        				</td>
        			</tr>
        		</table>
        	</div>
        {/if}
    	{/foreach}
	{/foreach}
le resultat c'est que je sors avec toute la liste les unes en dessous des autres.

est ce que vous auriez une idée ? Merci
doud180878 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 09h10   #2
Candidat au titre de Membre du Club
 
Inscription : mai 2010
Messages : 80
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 80
Points : 10
Points : 10
Envoyer un message via MSN à doud180878
Est ce qu'il n'y a pas une autre façon de faire des boucles avec des requêtes et des sous requêtes car la je suis vraiment embêté

Merci.
doud180878 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 11h18   #3
Membre éprouvé
 
Développeur Web
Inscription : avril 2005
Messages : 395
Détails du profil
Informations personnelles :
Âge : 28

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 395
Points : 479
Points : 479
Citation:
Envoyé par doud180878 Voir le message
Est ce qu'il n'y a pas une autre façon de faire des boucles avec des requêtes et des sous requêtes car la je suis vraiment embêté

Merci.
Pour faciliter la compréhension, peux tu nous écrire simplement un exemple de liste que tu génères actuellement et un exemple de ce que tu aimerais afficher.
__________________
Zend PHP5 Certification
MySQL 4 Core Certification
Gats est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 13h05   #4
Candidat au titre de Membre du Club
 
Inscription : mai 2010
Messages : 80
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 80
Points : 10
Points : 10
Envoyer un message via MSN à doud180878
ok voici ce que ca donne actuellement :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
categorie1
item1
item2
item3
item4
categorie2
item1
item2
item3
item4
categorie3
item1
item2
item3
item4
categorie4
item1
item2
item3
item4
et ce que je voudrais obtenir :

Code :
1
2
3
4
5
6
7
8
categorie1
item1
item2
item3
categorie2
categorie3
item4
categorie4
Voilà
doud180878 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 14h29   #5
Membre éprouvé
 
Développeur Web
Inscription : avril 2005
Messages : 395
Détails du profil
Informations personnelles :
Âge : 28

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 395
Points : 479
Points : 479
Tu n'aurais pas un soucis avec ton tableau php ?

Ta première requête qui boucle sur les catégories écrit un id
Code :
 $liste_projets[$i]['id'] = stripslashes($res['id']);
qui est ensuite écrasé par l'id des projets (de cette catégorie)
Code :
 $liste_projets[$i]['id'] = $ssres['id'];
Ne te retrouves-tu pas avec les informations du dernier projet de chaque catégorie ?
__________________
Zend PHP5 Certification
MySQL 4 Core Certification
Gats est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 17h32   #6
Candidat au titre de Membre du Club
 
Inscription : mai 2010
Messages : 80
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 80
Points : 10
Points : 10
Envoyer un message via MSN à doud180878
Donc j'ai fais une correction mais j'ai tjs le même problème

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
$listes_themes[] = array();
    $i = 0;
	while($res = $req->fetch_assoc())
	{	
	   $listes_themes[$i]['id'] = stripslashes($res['id']);
       $listes_themes[$i]['img'] = stripslashes($res['img']);
       $listes_themes[$i]['theme_fr'] = stripslashes($res['theme_fr']);
       $listes_themes[$i]['theme_en'] = stripslashes($res['theme_en']);
 
 
		// recherche des galeries du thème
		$reqGaleries = $db->query("SELECT id, nom_fr FROM galerie_structure WHERE galerie_themes_id = ".$res['id']);
 
        $listes_galerie[] = array();
		while($resGaleries = $reqGaleries->fetch_assoc())
		{
		  $listes_galerie[$i]['id'] = stripslashes($resGaleries['id']);
          $listes_galerie[$i]['nom_fr'] = stripslashes($resGaleries['nom_fr']);
           $i++; 
     	}
        $smarty->assign('listes_galerie', $listes_galerie);
 
        $i++;
	}
     // On affiche la liste
   $smarty->assign('listes_themes', $listes_themes);
Alors est ce le problème vient cette fois de mon fichier tpl ?
doud180878 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 18h12   #7
Candidat au titre de Membre du Club
 
Inscription : mai 2010
Messages : 80
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 80
Points : 10
Points : 10
Envoyer un message via MSN à doud180878
Je suis en train de m'aide de ce post :

http://www.developpez.net/forums/d32...le-comprendre/


mais ce n'ai pas encore ca !!!
doud180878 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 18h58   #8
Candidat au titre de Membre du Club
 
Inscription : mai 2010
Messages : 80
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 80
Points : 10
Points : 10
Envoyer un message via MSN à doud180878
Alors bon j'avance :

Voici mon code tpl :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{foreach from=$theme item=themes}
	<div class="liste">
		<table>
			<tr>
				.......
			</tr>
		</table>
	</div>
		{foreach from=$themes item=galeries}
        {if isset($galeries.nom_fr)}
		<div class="sous_liste">
			<table>
				<tr>
					.....
				</tr>
			</table>
		</div>
        {/if}
	   {foreachelse}
		Il n'y a aucune galerie dans ce thème !
	{/foreach}
{/foreach}
 </div>
Ce qui veut dire dans ma première boucle j'affiche les thèmes et quand je rencontre une galerie je l'affiche ou pas . Je pense que mon fichier doit être bon.

Pour l'instant j'ai tous les thèmes amsi aussi toutes galeries apparaissent dans tous les thèmes même ceux ou il y en a pas .

Je dois avoir un problème de tableau. Je vers continuer je vous tiens au courant mais si certains on une idée qu'ils hésitent pas
doud180878 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 19h24   #9
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Bonjour,

Bon ça fait un bye que je n'ai plus touché smarty, mais bon.
Pour commencer j'ai repris ton code :
Code :
1
2
3
4
5
6
7
8
9
10
11
$exa = $db->query("SELECT id, titre_fr FROM categories ORDER BY titre_fr");
$themes = array();
$i = -1;
while($ara = $exa->fetch_assoc()) {
   $themes[++$i] = array_map('stripslashes', $ara);
   $exb = $db->query("SELECT id, nom_fr FROM galerie_structure WHERE galerie_themes_id = ".intval($ara['id']));
   while($arb = $exb->fetch_assoc()) {
      $themes[$i]['galeries'][] = array_map('stripslashes', $arb);
   }
}
$smarty->assign('themes', $themes);
A noter que tu déclares mal tes tableaux :
Code :
$listes_themes[] = array(); // $listes_themes est un tableau contenant en index 0 un tableau vide
Et voici ton .tpl :
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
{foreach name=outer from=$themes item=categ}
   <div class="liste">
      <h3>{$categ.titre_ca}</h3>
   </div>
 
   {foreach from=$categ.galeries item=galerie}
      {if isset($galerie.image)}   
         <div class="sous_liste">
            <table>
               <tr>
                  <td>{$galerie.id|default:''}</td>
                  <td style="width: 100px;"><img src="/img/projets/{$galerie.image|default:''}" alt="" height="80" /></td>
                  <td>{$galerie.titre_fr|default:''}</td>
                  <td style="width: 200px;">Statut : {$galerie.statut|default:''}</td>
                  <td style="width: 200px;">
                     <a href="/admin/realisations/projets/modifier/{$galerie.id|default:''}" class="btn_modifier"></a>
                     <img src="/admin/design/separation-fiche.png" width="2" height="27" alt="" />
                     <a href="#" rel="projet/{$galerie.id|default:''}" class="btn_supprimer"></a>
                  </td>
               </tr>
            </table>
         </div>
      {/if}
   {/foreach}
{/foreach}
En espérant n'être pas trop rouillé et en croisant les doigts
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/11/2011, 19h50   #10
Candidat au titre de Membre du Club
 
Inscription : mai 2010
Messages : 80
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 80
Points : 10
Points : 10
Envoyer un message via MSN à doud180878
Un grand Merci !!!!

Juste avant que tu ne postes je suis arriver à la même chose en utilisant ce tuto :
http://g-rossolini.developpez.com/co...s/?page=smarty

mais un peu vieillissant. Tout est nikel j'ai juste rajouter ceci :

Code :
1
2
3
4
5
6
7
8
9
10
{foreach from=$categ.galeries|default:'' item=galerie}
            {if $galerie}
                <div class="sous_liste">
        			<table>
        				.......
        			</table>
        	 	 </div>
        {else}
		Il n'y a aucune galerie dans ce thème !
        {/if}
car il me mettait une erreur il ne trouvait pas la variable galeries.

C'est super, Merci beaucoup
doud180878 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 10h51.


 
 
 
 
Partenaires

Hébergement Web