Requète SQL complexe

Signaler
-
Messages postés
30226
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 novembre 2020
-
Bonjour à tous,

Je me retrouve a nouveau bloquer dans la création de mon site internet.

J'ai actuellement une table éditeur avec comme colonne id, nom, description

et une table jeux avec comme colonne id, titre, éditeur ect...

Dans ma page éditeur, j'appelle la table éditeur via une url comme celle ci : mapage.php?id=1
qui m'affiche les données de l'id 1.

Je souhaiterais également afficher tous les jeux éditer par cet éditeur.

J'ai effectuer ma page comme sa :

<?php
require_once('includes/metas.php');
require_once('includes/config.php');
?>		
	<body>
	<?php require_once('includes/header.php');?>
	<?php
    // Je prépare ma requète qui appelle l'id dans l'url
    $requete = $bdd->prepare("SELECT * FROM editeur WHERE id = :id");
    // Je lie ma variable @id au paramètre :id
    $requete->bindValue(':id', $_GET['id'], PDO::PARAM_STR);
    // j'execute la requète
    $requete->execute();  
    // Je recupère les résultats de ma requète dans une boucle
    while ($donnees = $requete->fetch())
    {
     ?>	
		<div class="fix main_content_area">
			<div class="fix centre main_content">
				<div class="fix home_content floatleft">
					<!--Début de ma page-->
					<div class="fix single_home_content">
						<div class="fix single_page_feature_img floatleft">
							<img src="images/logo_edit/<?php  echo $donnees['logo']; ?>.jpg"/>
						</div>
						<div class="fix single_page_title_info floatright">
							<div class="fix single_page_title">
								<h1><?php  echo $donnees['nom']; ?></h1>
							</div>
							<div class="fix single_page_download">
								<div class="fix single_page_title"><br>
									<?php  echo $donnees['description']; ?></div>
</body>
							</div>
						</div>
					</div>
<?php
}
  $requete->closeCursor(); // Ma requète ce termine ici
?>	
					<!--Partie description-->
					<div class="fix single_home_content">
							<!--Menu horizontal-->
							<div id="horizontalTab">
									<ul>
										<li><a href="#tab-1">liste des jeux</a></li>
									</ul>
								<div id="tab-1">
		<?php
// Je récupère tout le contenu de ma table
$reponse = $bdd->query("SELECT * FROM ps1_jeux WHERE editeur = 'Mattel' ");
// J'affiche chaque entrées
while ($donnees = $reponse->fetch())
{
?>
							<div class="fix single_content floatleft">
							<img src="images/img_games/coversb/coversavb/maxi/<?php echo $donnees['numero']; ?>.jpg"/>
                                <h2><?php echo $donnees['titre']; ?></h2>
								<div class="home_download">
									<a href="fiche_jeu.php?id=<?php echo $donnees['id']; ?>">Voir</a>
								</div>
	</div>
     <?php
}
$reponse->closeCursor(); // Ma requète ce termine ici
?>    							
			

								</div>
								<div id="tab-2">
								</div>
								<div id="tab-3">
								</div>
								<!--<div id="tab-4">
								</div>-->
               <div id="tab-5">
								</div>                 
							</div></div>
					<div class="fix home_wide_add_area">
						<div class="fix home_wide_add">
								<?php
require_once('includes/pub_centre.php');
?>
						</div>
					</div>
				</div> 
				
                	<div class="fix home_content_sidebar floatright">
					<div class="home_single_sidebar">
						<h2><i class="fa fa-bars"></i> Publicités</h2>
							<div class="home_sidebar_apps">
								              	 <?php require_once('includes/pub_right.php'); ?>
							</div>
					</div>
				</div> 
			</div>
		</div> 
		<?php require_once('includes/footer_header.php'); ?>
		<?php require_once('includes/footer.php'); ?>
	</body>
</html>


comme sa, j'ai bien les jeux correspondant a mon éditeur "Mattel" qui s'affiche, mais je souhaiterais que ce soit repris depuis ma requète plus haut, ne pas afficher l'éditeur en dur comme sa, mais qu'il reprenne le nom dans ma requète de dessus :

<?php  echo $donnees['nom']; ?>


Merci d'avance de votre aide

Configuration: Windows / Firefox 82.0

1 réponse

Messages postés
30226
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 novembre 2020
2 990
Bonjour,

Pour commencer, tu nous dis avoir une table
table jeux avec comme colonne id, titre, éditeur ect...

Déjà... ce n'est pas le "nom" de l'éditeur que tu devrais y trouver ... mais son ID (celui qui correspond à ta table "editeur" )

et donc, une fois cette correction faite,
tu pourras, au niveau de ta requête, faire
$sql = "SELECT * FROM ps1_jeux WHERE id_editeur = :id_editeur";
try{
  $requete = $bdd->prepare($sql);
   $requete->bindValue(':id_editeur', $donnees['id'], PDO::PARAM_INT);
    // j'execute la requète
    $requete->execute();  
}catch(Exception $e){
  echo " Erreur : " . $e->getMessage();
}


Au passage, merci de lire et d'appliquer les conseils donnés ici
https://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs

et là :
https://www.commentcamarche.net/faq/48399-php-gestion-des-erreurs-debogage-et-ecriture-du-code

.