Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

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 veux

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.

Ce que j'obtiens

<?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 :(

5 réponses


Les erreurs sont une aide pour une bonne analyse, quelles sont-elles?

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 .