Requete tables lièes

Résolu/Fermé
mocoye Messages postés 76 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 28 septembre 2023 - Modifié le 20 avril 2020 à 16:11
mocoye Messages postés 76 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 28 septembre 2023 - 21 avril 2020 à 14:33
Bonjour,

Je suis actuellement une page listant les albums photos donnant acces ensuite à une pages des photos de l'albums sélectionnes de mon association, j'ai donc créée trois tables que j'ai lié :
1/ Thèmes
2/ Albums
3/ Photos

sur cette page je souhaite faire apparaître par thèmes les albums disponibles et seulement ceux ou il y a des albums enregistrés.

j'ai tenté de placé ma requêtes à plusieurs endroits mais rien ne fonctionnent soit le nom du thème apparaît pour chaque album même si deux albums ont le même thème ou soit j'ai bien le bon thème avec le bon album mais il me manque le premier album.

voici mon code :

<?php
$title ="Les albums photos du CDOS 93";
include ("include/inc.header.php");
?>
  <div class="row menu">
   <div class="col-12 col-md-9 order-2 order-md-1 bandeau_menu p-0 align-self-center">
    <div class="col-3"><h2 class="text-uppercase font-weight-bold px-0 py-2">albums</h2></div>
    <div class="col-9">
     <div class="row pb-3">
      <div class="col-12 col-sm-6 col-md-3 pb-2 text-center align-items-center"><a href="photos.php"><img src="visuels/pictos/photos.svg" class="img-fluid" alt="Albums photos du CDOS 93"></a></div>
      <div class="col-12 col-sm-6 col-md-3 pb-2 text-center align-items-center"><a href=""><img src="visuels/pictos/videos.svg" class="img-fluid" alt="albums des vidéos du CDOS 93"></a></div> 
     </div>

    </div>
   </div>
<?php
include ("include/inc.nav.php");
?>
  </div>

   <?php
   $requete = "SELECT * FROM themes,albums_p WHERE themes.id=albums_p.id_th ";
   $reponse = $bdd->prepare($requete);
   $reponse->execute();
   $ligne=$reponse->fetch(PDO::FETCH_OBJ);
   ?>
   <div class="row album">
   <?php
    while ($ligne=$reponse->fetch(PDO::FETCH_OBJ)) {
        ?>
   <div class="col-12 pt-1 pb-1 corp text-center align-items-center" >
   <?php echo $ligne->themes; ?>
   </div>   
   
   <div class="col-12 col-sm-6 col-md-3 pb-3 part text-center align-items-center" >
    <a href="test_photos.php?<?php echo 'id=' . $ligne->id; ?>"><img src="images/albums/<?php echo $ligne->abrev_alb_p; ?>/<?php echo $ligne->vignettes_p; ?>" class="img-fluid" alt="photos de <?php echo $ligne->albums_p; ?>"></a>
    <h3><?php echo $ligne->albums_p; ?></h3>
   </div>
<?php }
?>
  </div>
   


<?php
include ("include/inc.poles.php");
include ("include/inc.footer.php");
?>



Configuration: Windows / Chrome 80.0.3987.163

2 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
20 avril 2020 à 16:50
Bonjour,


le nom du thème apparaît pour chaque album même si deux albums ont le même thème

Tu as juste besoin de tester si le nom du thème est le même que le précédent ou non... et donc de l'afficher ou pas.


<?php
    $themePrc = null;
    while ($ligne=$reponse->fetch(PDO::FETCH_OBJ)) {
          $theme = $ligne->themes;
          if($theme != $themePrc ){
        ?>
           <div class="col-12 pt-1 pb-1 corp text-center align-items-center" >
             <?php echo $theme ?>
           </div>
        <?php
            }
            $themePrc = $theme;
        ?>


1
mocoye Messages postés 76 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 28 septembre 2023 5
21 avril 2020 à 09:34
Bonjour Jordane,

Ca marche, merci beaucoup.

Bonne journée.

Laetitia
0
mocoye Messages postés 76 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 28 septembre 2023 5
21 avril 2020 à 14:33
Jordane,

j'ai une autre question dans la page que l'on a vu je fais passer un paramètre GET, afin de récupérer uniquement l'album sur lequel on a cliquer et obtenir les photos correspondantes.

Je récupère bien le paramètre mais impossible de faire apparaître uniquement les photos de l'album concerné, tout mes albums apparaisse.

J'ai tenté plusieurs requête différentes mais aucune ne fonctionne :

voici mon code :

<?php
$title ="Les adhérents du CDOS 93";
include ("include/inc.header.php");
?>
		<div class="row menu">
			<div class="col-12 col-md-9 order-2 order-md-1 bandeau_menu p-0 align-self-center">
				<div class="col-3"><h2 class="text-uppercase font-weight-bold px-0 py-2">albums</h2></div>
				<div class="col-9">
					<div class="row pb-3">
						<div class="col-12 col-sm-6 col-md-3 pb-2 text-center align-items-center"><a href="photos.php"><img src="visuels/pictos/photos.svg" class="img-fluid" alt="Albums photos du CDOS 93"></a></div>
						<div class="col-12 col-sm-6 col-md-3 pb-2 text-center align-items-center"><a href=""><img src="visuels/pictos/videos.svg" class="img-fluid" alt="albums des vidéos du CDOS 93"></a></div> 
					</div>

				</div>
			</div>
<?php
include ("include/inc.nav.php");
?>
		</div>
		<?php
			echo 'Bonjour'.$_GET["id"];
			?> 	
		<?php
			$idget = $_GET["id"];
			?> 	

			<?php
			$requete = "SELECT * FROM photos,albums_p WHERE photos.id_alb_p=".$idget;
			$reponse = $bdd->prepare($requete);
			$reponse->execute();
			?>

		<div class="row album">
						<?php
						 $albumPrc= null;
						 while ($ligne=$reponse->fetch(PDO::FETCH_OBJ)) {
						 $album = $ligne->albums_p;
						 if($album != $albumPrc){

						 ?>
    	    <div class="col-12 pt-1 pb-1 corp text-center align-items-center" ><?php echo $ligne->albums_p; ?></div> 
						<?php
					}
					$albumPrc = $album;
					?>

				<div class="col-12 col-sm-6 col-md-3 pb-3 part text-center align-items-center" >
						<img src="images/albums/<?php echo $ligne->abrev_alb_p; ?>/<?php echo $ligne->photos; ?>" class="img-fluid" alt="photos de <?php echo $ligne->albums_p; ?>">
						<h3><?php echo $ligne->albums_p; ?></h3>
				</div>
						<?php
						}
						 ?>

		</div
><?php
include ("include/inc.poles.php");
include ("include/inc.footer.php");
?>


j'ai l'impression que ma requête ne récupère pas la variable, et je ne sais pas comment faire, depuis ce matin je cherche sur le net, mais je ne trouve pas.

merci si vous pouvez m'aider,

Laetitia
0