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] requetes et sous requetes en php


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 87
    Points : 48
    Points
    48
    Par défaut [Smarty] 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 : 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
    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 : 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
    {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

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 87
    Points : 48
    Points
    48
    Par défaut
    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.

  3. #3
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    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.

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 87
    Points : 48
    Points
    48
    Par défaut
    ok voici ce que ca donne actuellement :

    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
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    categorie1
    item1
    item2
    item3
    categorie2
    categorie3
    item4
    categorie4
    Voilà

  5. #5
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
     $liste_projets[$i]['id'] = stripslashes($res['id']);
    qui est ensuite écrasé par l'id des projets (de cette catégorie)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $liste_projets[$i]['id'] = $ssres['id'];
    Ne te retrouves-tu pas avec les informations du dernier projet de chaque catégorie ?

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 87
    Points : 48
    Points
    48
    Par défaut
    Donc j'ai fais une correction mais j'ai tjs le même problème

    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
    $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 ?

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 87
    Points : 48
    Points
    48
    Par défaut
    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 !!!

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 87
    Points : 48
    Points
    48
    Par défaut
    Alors bon j'avance :

    Voici mon code 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
    {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

  9. #9
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Bon ça fait un bye que je n'ai plus touché smarty, mais bon.
    Pour commencer j'ai repris ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $listes_themes[] = array(); // $listes_themes est un tableau contenant en index 0 un tableau vide
    Et voici ton .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
    {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

  10. #10
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 87
    Points : 48
    Points
    48
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

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

Discussions similaires

  1. [MySQL] Echec Requete en PHP - OK sous PhpMyAdmin
    Par cariboo45 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 29/09/2008, 15h46
  2. [Smarty] requete update
    Par harlock59 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 31/05/2006, 12h16
  3. [PHP-JS] Défilement de texte (requete via php)
    Par Djwaves dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/02/2006, 15h27
  4. [MySQL] réaliser une sous requete en php
    Par SENCABOY dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 14/02/2006, 21h19
  5. [MySQL] Requete SQL PHP
    Par CaptainChoc dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 22/10/2005, 17h13

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