Page 1 sur 1

Problème requête SQL -> selection multiple

Posté : 27 oct. 2014, 17:08
par MaxenceB10
Bonjour,

Etudiant en DUT MMI, j'ai un petit soucis pour une requête, je m'explique.
Nous devons réaliser un site de voyage, j'ai une table voyages sur ma BDD, le code ci-dessous fonctionne parfaitement à une exception prêt, c'est que dans mon selecteur, il m'affiche 4 fois le même " thème " de voyage, oui car dans la bdd chaque voyage a un thème attribué.
Je voudrai qu'il m'affiche seulement une fois le thème en question.
Voila le code et une capture d'écran du résultat !

Merci d'avance

LE RESULTAT:

http://hpics.li/ccf1d7a


LE CODE :


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">

<title>Dutaf</title>

<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">


</head>
<body>

<div class="content col-md-10 col-md-offset-1">

<h1>Selection d'un pays</h1>


<form method="POST" role="form" action="rep_requete_theme.php">


+ bouton selct fournisseur en dessous -->

<?php
include ('config.php');
$db=new mysqli(BDD_SERVEUR,BDD_USER,BDD_PASS,BDD_BDD);

$req='SELECT * FROM voyages ORDER BY voyage_theme';

$tous=$db->query($req); //execution
?>
<select class="form-control" name="theme">
<?php
while ($untheme=$tous->fetch_object()) {
echo '<option value="'.$untheme->voyage_id.'">'.$untheme->voyage_theme.'</option>';
}
?>
</select>



<?php
$db->close();

?>



<br/>
<div class="form-group">
<button type="submit" class="btn btn-default">Envoyer</button>


</div>


</form>


</div>


<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/j ... "></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="js/bootstrap.min.js"></script>
</body>
</html>

Re: Problème requête SQL -> selection multiple

Posté : 27 oct. 2014, 17:46
par ynx
Salut,

Tu peux utiliser la clause sql GROUP BY :
SELECT voyage_id, voyage_theme FROM voyages GROUP BY voyage_theme ORDER BY voyage_theme
Bonne journée

Re: Problème requête SQL -> selection multiple

Posté : 27 oct. 2014, 17:59
par MaxenceB10
Merci, parfait !


J'ai un autre soucis maintenant, quand j'affiche le résultat, il ne m'affiche que le 1er des 3 voyages situés en France.

Merci d'avance..

voilà une autre image :

http://hpics.li/f0d19f7


ainsi que le code :


<div class="col-md-10 col-md-offset-1">

<h1>Voyage en<?php echo $_POST['pays'] ?></h1>
<br/>
<?php
$db = new mysqli(BDD_SERVEUR,BDD_USER,BDD_PASS,BDD_BDD);
echo "<table class=\"table \" border=\"1\">";
$rq="SELECT * FROM voyages WHERE voyage_id=$_POST[pays] ";
$tout=$db->query($rq);

echo "<table class=\"table table-striped\">";
echo "<tr><th>ID</th>
<th>Designation</th>
<th>pays</th>
<th>ville</th>
<th>prix</th>
<th>Limite de personne:</th>
</tr>";

while ($unarticle=$tout->fetch_object()){
echo "<tr><td>";
echo $unarticle->voyage_id."<br/>";
echo "</td>";
echo "<td>";
echo $unarticle->voygae_nom."<br/>";
echo "</td>";
echo "<td>";
echo $unarticle->voyage_pays."<br/>";
echo "</td>";
echo "<td>";
echo $unarticle->voyage_ville."<br/>";
echo "</td>";
echo "<td>";
echo $unarticle->voyage_prix."<br/>";
echo "</td>";
echo "<td>";
echo $unarticle->voyage_persmax."<br/>";




echo "</td></tr>";
}
echo "</table>";
?>
</div>

Re: Problème requête SQL -> selection multiple

Posté : 28 oct. 2014, 09:58
par ynx
Tu utilises la requête
SELECT * FROM voyages WHERE voyage_id=$_POST[pays]
Donc Mysql ne te renvoie que le voyage qui a pour id $_POST['pays']

Ne serait-ce pas plutôt
SELECT * FROM voyages WHERE voyage_pays=$_POST[pays]
?

Re: Problème requête SQL -> selection multiple

Posté : 28 oct. 2014, 10:49
par dix2
Salut,

Pour ton premier message, au lieu de faire un "GROUP BY", tu peux faire un "SELECT DISTINCT voyage_theme FROM ...", le "GROUP BY", ça sert plutôt à faire des opérations ensemblistes comme : calculer le nombre de voyages par pays ...
et sinon, encore mieux, faire une table "voyage_theme" qui va contenir tous les thèmes et qui sera reliée à la table "voyages" car actuellement ton architecture présente un problème :
si tu souhaites récupérer la liste de tous les thèmes et si un thème n'est pas répertorié dans la table "voyages", il ne sera pas présent dans les résultats de ta requête

@+
dix2