Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme affichage avec requete sql

    22 juin 2015 à 15:30:56

    bonjour,

    voila j'aimerai afficher un tableau de ce type :

    titre1

    ex1

    ex2

    ex3

    titre2

    ex1

    ex2

    mais mois j'obtient avec ma requete :

    titre1

    ex1

    titre2

    ex1

    titre2

    ex1

    voila la requete :

    SELECT contenu_id, contenu_titre,contenu_date, contenu_prix,ref_gite 
    		FROM contenu_tarifs WHERE ref_gite="'.$ref_gite.'" GROUP BY contenu_titre

    et voila le code :

    foreach($managerContenuTarifs->getListByGiteAndTitle(104801) as $ItemTarifs)
    		{	
    
    <tr><td>$ItemTarifs->getContenuTitre()</td></tr>
    		
    		
    <tr><td>$ItemTarifs->getContenuDate()</td>
    <td>$ItemTarifs->getContenuPrix()</td>
    </tr>
    		 
    }



    merci.

    -
    Edité par creationsites 22 juin 2015 à 16:24:44

    • Partager sur Facebook
    • Partager sur Twitter
      22 juin 2015 à 17:11:47

      Bonjour,

      Tu ne peux obtenir ce résultat directement en SQL.

      Il t'appartient de coder côté PHP l'algorithme qui va gérer les ruptures par titre ...

      Exemple vite fait, note le ORDER BY de la requête :

      <?php
          $reponse = $bdd->query( '
              SELECT *
              FROM contenus
              ORDER BY titre;'
          );
          $contenus = $reponse->fetchAll();
          $reponse->closeCursor();
           
          // Variable pour maîtriser la boucle
          $titrePrecedent = '';
            
          // La boucle sur les contenus
          foreach ( $contenus as $contenu ) {
              // Si on change de titre on pose le nouveau titre
              if($contenu['titre'] != $titrePrecedent ) {
      ?>
          <h1><?php echo $contenu['titre']; ?></h1>
      <?php       
              }
              // Dans tous les cas on affiche le reste
      ?>
              <p><?php echo $contenu['contenu']; ?></p>
      <?php
              // On mémorise le nom pour la prochaine boucle
              $titrePrecedent = $contenu['titre'];
          }
      ?>

      -
      Edité par Benzouye 22 juin 2015 à 17:13:03

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        22 juin 2015 à 17:22:37

        désolé je préfére cote php car la requete est dans une fonction php dans une autre page.merci.
        • Partager sur Facebook
        • Partager sur Twitter
          22 juin 2015 à 17:48:12

          Je ne comprends pas ta réponse  ...
          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            22 juin 2015 à 19:15:32

            Je déplace vers PHP.

            (Je n'ai pas compris la réponse non plus)

            • Partager sur Facebook
            • Partager sur Twitter
              23 juin 2015 à 10:13:29

              En reprenant ta syntaxe orientée objet, mon code deviendrait :

              <?php
              	// Variable pour maîtriser la boucle
              	$titrePrecedent = '';
              
              	// La boucle sur les contenus
              	foreach( $managerContenuTarifs->getListByGiteAndTitle(104801) as $ItemTarifs ) {
              		// Si on change de titre on pose le nouveau titre
              		if( $ItemTarifs->getContenuTitre() != $titrePrecedent ) {
              ?>
              	<h1><?php echo $ItemTarifs->getContenuTitre(); ?></h1>
              <?php	   
              		}
              		// Dans tous les cas on affiche le reste
              ?>
              		<p>Date : <?php echo $ItemTarifs->getContenuDate(); ?> - Prix : <?php echo $ItemTarifs->getContenuPrix(); ?></p>
              <?php
              		// On mémorise le nom pour la prochaine boucle
              		$titrePrecedent = $ItemTarifs->getContenuTitre();
              	}
              ?>

              Il faut juste t'assurer que la requête est bien ORDER BY ContenuTitre ...

              -
              Edité par Benzouye 23 juin 2015 à 10:13:42

              • Partager sur Facebook
              • Partager sur Twitter
              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                23 juin 2015 à 11:31:55

                Merci mes je n'ai qu'une date qui s'affiche apres le titre:

                Basse saison

                Date : du 08/11/2014 au 19/12/2014 - Prix : 420

                Haute saison (été)

                Date : du 04/07/2015 au 21/08/2015 - Prix : 850

                Moyenne saison

                Date : du 20/12/2014 au 02/01/2015 - Prix : 530€

                merci.

                • Partager sur Facebook
                • Partager sur Twitter
                  23 juin 2015 à 11:36:45

                  salut,

                  remplaces le if par un while

                  • Partager sur Facebook
                  • Partager sur Twitter
                    23 juin 2015 à 12:18:35

                    creationsites a écrit:

                    Merci mes je n'ai qu'une date qui s'affiche apres le titre

                    Je ne sais pas ce que retourne la méthode getListByGiteAndTitle, mais c'est étonnant si la requête exécutée est bien celle annoncée plus haut ET que tu as bien rajouté une clause ORDER BY :

                    SELECT contenu_id, contenu_titre, contenu_date, contenu_prix, ref_gite
                    FROM contenu_tarifs
                    WHERE ref_gite="'.$ref_gite.'"
                    ORDER BY contenu_titre

                    Pour contrôler, tu peux faire :

                    <?php
                        // Variable pour maîtriser la boucle
                        $titrePrecedent = '';
                        
                        // Récupération des données
                        $Items = $managerContenuTarifs->getListByGiteAndTitle(104801);
                        var_dump($Items);    
                    
                        // La boucle sur les contenus
                        foreach( $Items as $ItemTarifs ) {
                            // Si on change de titre on pose le nouveau titre
                            if( $ItemTarifs->getContenuTitre() != $titrePrecedent ) {
                    ?>
                        <h1><?php echo $ItemTarifs->getContenuTitre(); ?></h1>
                    <?php       
                            }
                            // Dans tous les cas on affiche le reste
                    ?>
                            <p>Date : <?php echo $ItemTarifs->getContenuDate(); ?> - Prix : <?php echo $ItemTarifs->getContenuPrix(); ?></p>
                    <?php
                            // On mémorise le nom pour la prochaine boucle
                            $titrePrecedent = $ItemTarifs->getContenuTitre();
                        }
                    ?>

                    Et nous poster le résultat du var_dump ...

                    jogan a écrit:

                    salut,

                    remplaces le if par un while

                    Non ... c'est un contrôle de valeur, pas une boucle ...
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

                    probleme affichage avec requete sql

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown