Bonjour,
Voila je rencontre un petit problème avec mon code.
j'essaye de créer pour un site une liste déroulante qui lirait dans la bdd et permettrait de trier par genre, titre, etc... des musiques.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
<title>SHARITY</title>
</head>
<body>
<?php include("top.php"); ?>
<?php include("menu.php"); ?>
<!--liste déroulante pour l'ordre-->
<header class="choix"> <form method="get" action="musique.php"><strong> trier par : </strong>
<select name="tri">
<option value="genre">genre</option>
<option value="titre">titre</option>
<option value="artiste">artiste</option>
<option value="date">date d'ajout</option>
</select>
<input type="submit" value="confirmer" /> <!--création d'un bouton-->
</form>
</header>
<?php //trier par genre
if ($_GET['tri']="genre")
{
try{
// connection à la base de donnée sharity
$bdd = new PDO('mysql:host=localhost;dbname=sharity;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch (Exception $e)
{
/*En cas d'erreur*/
die('Erreur : ' . $e->getMessage());
}
// On récupère tout le contenu de la table musique
$reponse = $bdd->query('SELECT * FROM musique ORDER BY genre ASC');
// On affiche chaque entrée une à une
while($donnees = $reponse->fetch())
{
?>
<section class=contenu>
<article><?php
echo '<iframe width="400" height="225" src='.$donnees['url'].' frameborder="0" allowfullscreen></iframe>' ?></article>
<aside><em><?php echo $donnees['titre'] ?></em><br/>
<strong><?php echo $donnees['artiste'] ?></strong></aside>
</section>
<?php }
$reponse->closeCursor(); // termine le traitement de la requête
?>
<?php }
elseif ($_GET['tri']='titre')
{
try{
// connection à la base de donnée sharity
$bdd = new PDO('mysql:host=localhost;dbname=sharity;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch (Exception $e)
{
/*En cas d'erreur*/
die('Erreur : ' . $e->getMessage());
}
// On récupère tout le contenu de la table musique
$reponse = $bdd->query('SELECT * FROM musique ORDER BY titre ASC');
// On affiche chaque entrée une à une
while($donnees = $reponse->fetch())
{
?>
<section class=contenu>
<article><?php
echo '<iframe width="400" height="225" src='.$donnees['url'].' frameborder="0" allowfullscreen></iframe>' ?></article>
<aside><em><?php echo $donnees['titre'] ?></em><br/>
<strong><?php echo $donnees['artiste'] ?></strong></aside>
</section>
<?php }
$reponse->closeCursor(); // termine le traitement de la requête
?>
<?php }
elseif ($_GET['tri']='artiste')
{
try{
// connection à la base de donnée sharity
$bdd = new PDO('mysql:host=localhost;dbname=sharity;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch (Exception $e)
{
/*En cas d'erreur*/
die('Erreur : ' . $e->getMessage());
}
// On récupère tout le contenu de la table musique
$reponse = $bdd->query('SELECT * FROM musique ORDER BY artiste ASC');
// On affiche chaque entrée une à une
while($donnees = $reponse->fetch())
{
?>
<section class=contenu>
<article><?php
echo '<iframe width="400" height="225" src='.$donnees['url'].' frameborder="0" allowfullscreen></iframe>' ?></article>
<aside><em><?php echo $donnees['titre'] ?></em><br/>
<strong><?php echo $donnees['artiste'] ?></strong></aside>
</section>
<?php }
$reponse->closeCursor(); // termine le traitement de la requête
?>
<?php }
elseif ($_GET['tri']='date')
{
try{
// connection à la base de donnée sharity
$bdd = new PDO('mysql:host=localhost;dbname=sharity;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch (Exception $e)
{
/*En cas d'erreur*/
die('Erreur : ' . $e->getMessage());
}
// On récupère tout le contenu de la table musique
$reponse = $bdd->query('SELECT * FROM musique ORDER BY id DESC');
// On affiche chaque entrée une à une
while($donnees = $reponse->fetch())
{
?>
<section class=contenu>
<article><?php
echo '<iframe width="400" height="225" src='.$donnees['url'].' frameborder="0" allowfullscreen></iframe>' ?></article>
<aside><em><?php echo $donnees['titre'] ?></em><br/>
<strong><?php echo $donnees['artiste'] ?></strong></aside>
</section>
<?php }
$reponse->closeCursor(); // termine le traitement de la requête
?>
<?php }
else {
try{
// connection à la base de donnée sharity
$bdd = new PDO('mysql:host=localhost;dbname=sharity;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch (Exception $e)
{
/*En cas d'erreur*/
die('Erreur : ' . $e->getMessage());
}
// On récupère tout le contenu de la table musique
$reponse = $bdd->query('SELECT * FROM musique ORDER BY id DESC');
// On affiche chaque entrée une à une
while($donnees = $reponse->fetch())
{
?>
<section class=contenu>
<article><?php
echo '<iframe width="400" height="225" src='.$donnees['url'].' frameborder="0" allowfullscreen></iframe>' ?></article>
<aside><em><?php echo $donnees['titre'] ?></em><br/>
<strong><?php echo $donnees['artiste'] ?></strong></aside>
</section>
<?php }
$reponse->closeCursor(); // termine le traitement de la requête
}
?>
</body>
</html>
J'aimerais donc que lorsque l'on clique l'ordre demandé se fasse.
Malheureusement les musiques sont toujours triées par ID les plus récentes (et donc les nombres les plus élevés) se situent en haut.
Pourriez-vous m'aider merci !
Bonsoir,
Pour répondre à la question, il suffit de remplacer dans la requête "ORDER BY id", id par l'élément dont on souhaite avoir le tri ("date", "genre"...)
Sinon, tu as de quoi optimiser ton usine à gaz car beaucoup de chose se répète...
Bon courage