Bonjour,
Voila je rencontre un petit problème avec mon code.
J'ai crée une liste déroulante des différents département sur ma page index.php
<div class="row">
<div class="col-sm-6 col-sm-offset-3">
<div class="input-group mb-3">
<form action="rando.php" method="get">
<select class="custom-select" name="deptfrance" id="deptfrance">
<option selected>Sélectionnez un département</option>
<?php $reponse = $bdd->query('SELECT departement_id, departement_code, departement_nom FROM departement');
while ($dept = $reponse->fetch()) {
?>
<option value="<?php echo $dept['departement_id']; ?>"> <?php echo $dept['departement_code']; ?> - <?php echo $dept['departement_nom']; ?></option>
<?php
}
?>
</select><br>
<input type="submit" value="Validez"/>
</form>
</div>
</div>
</div>
Ce que je souhaite, c'est qu'une fois la validation d'un département, que je puisse récupérer sur autre page rando.php les éléments via une jointure pour afficher le résultat.
<?php
include('include/connexion_bdd.php');
if (isset($_GET['deptfrance'])) {
$req = $bdd->query("SELECT *
FROM base_rando
JOIN base_rando.dept_id = departement.".$_GET['deptfrance']);
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Randonnées et sorties VTT dans le département </title>
<meta name="Description" content="Agenda des randonnées VTT département " />
<meta name="Keywords" content="VTT, sorties, évènements, calendrier, agenda, "/>
<!-- Bootstrap 4 CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
<link href="https://fonts.googleapis.com/css?family=Montserrat:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i&display=swap" rel="stylesheet">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" >
<!-- Bikeride CSS -->
<link rel="stylesheet" href="assets/css/style.css">
<link rel="shortcut icon" sizes="32x32" href="assets/img/favicon-ConvertImage.ico" type="image/ico">
</head>
<body>
<h1>RANDO</h1>
<?php
while ($data = $req->fetch(PDO::FETCH_OBJ)) {
?>
<div class="card card-list card-search col">
<div class="card-body">
<div class="icon_box float-left">
<div class="top"> <?php echo date('d',strtotime($data->date_creation)) ;?></div>
<div class="bott"> <?php echo date('M',strtotime($data->date_creation)) ;?></div>
<hr class="bg-warning">
</div>
<div class="message">
<?php echo '<a href="descriptif_rando.php?id='.$data->id. '/randonnée de ' .$data->ville.'" class="card-link" target="_blank"></a>'; ?>
<?php echo '<h5>' .$data->ville.' - ('.$data->dept_num.')</h5>';?>
<?php echo '<p class="mb-2">'.$data->rando.'</p>';?>
<?php $titre_url = str_replace(' ', '-', $data->rando);?>
<p></p>
<?php echo '<a href="descriptif_rando.php?id='.$data->id.'/évènement/'.$titre_url.'-à-'.$data->ville.'-'.$data->dept_nom.'-'.$data->dept_num.'" title="Description de la randonnée sélectionnée" class="card-link text-warning" target="_blank">Description <i class="fas fa-arrow-circle-right text-warning"></i></a>'; ?>
</div>
</div>
</div>
<?php
}
$req->closeCursor();
?>
j'obtiens tout un tas d'erreur. Pour être honnête je suis perdu :(
Bonjour, je n'arrive pas à afficher ce que que je sélectionne dans ma liste déroulante sur ma page rando.php
Je suis obligé de faire une jointure entre ma table departement et base_rando.
Bonsoir,
Ce que je comprends : Tu as 2 tables , departement et base_rando.
Dans ton formulaire , tu as un champs select qui te renvoie les données des départements , ton option value étant l'id correspondant au departement choisi. Tu envoie l'id correspondant au choix fait dans ton formulaire en GET à ta page rando.php . Pour l'affichage souhaité , tu veux récupérer des données présentes dans les 2 tables (randos correspondantes au département choisi ( clé étrangère = dept_id )) mais tu rencontres des erreurs à l'affichage.
Pistes : La requete dans rando.php . Que te renvoie un var_dump ($req)?
$req = $bdd->query("SELECT *
FROM base_rando
JOIN base_rando.dept_id = departement.".$_GET['deptfrance']);
Le join doit se faire avec une autre table
Par exemple , tu peux peut être essayer quelquechose comme :
$req = $bdd->prepare(
"SELECT b.*, d.*
FROM base_rando b
INNER JOIN departement d
ON b.dept_id = d.id
WHERE d.id = ?" );
$req->execute([$_GET['deptfrance']]);
J'espère avoir bien compris ton problème .
Difficile de t'aider sans connaitre les erreurs qui te sont renvoyées par ton code ;)
Merci pour ton retour, je vais me pencher dessus et prendre en compte tes élements.
Merci et je te tiens au courant au cas ou. A+
Salut,
Bien joué ça fonctionne parfaitement et maintenant je sais mieux maitriser les jointures. Merci beaucoup .