Tableau à choix multiples pour liste

Fermé
panershrek - 30 mai 2010 à 20:46
 Panershrek - 2 juin 2010 à 20:12
Bonjour,

j'aimerais faire un tableau de la facon suivante pour un site de videos:


les + recentes | les mieux notés | les + vues


[liste des vidéos]


je possède deja les scripts php pour organiser les vidéos selon les criteres mais je ne sais pas comment les réunir dans un meme tableau et qui changent selon le choix (avec si possible le type ( +recentes +vues ..etc) en surbrillance.

Merci d'avance.
A voir également:

7 réponses

avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
30 mai 2010 à 22:05
Tu peux passer en argument GET ce par quoi tu veux trier.
Exemples :
- Pour la date : /videos.php?orderby=date
- Pour la note : /videos.php?orderby=note
- Pour le nb. de vues : /videos.php?orderby=vue

À toi d'utiliser la variable $_GET['orderby'] pour trier les résultats dans ta requête SQL (clause « ORDER BY »).
0
briiiiix Messages postés 575 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 1 juin 2010 18
30 mai 2010 à 22:49
C'est une bonne solution si ça ne te dérange pas de rafraichir la page pour changer le critère de tri
Bienjoué avion-f16
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
30 mai 2010 à 23:17
Pour éviter le rafraichissement il y a AJAX.
Mais bon, qu'il fasse déjà sans, ça sera pas mal, sinon il va s'embrouiller.
0
Merci pour vos reponse, mais je ne cherche pas à savoir comment les trier, je ne sais pas si vous avez lu mon post en entier, comme je l'ai dis j'ai deja les scripts ex:

$query = "SELECT moviess.moviesid as id, movies.name as name, AVG(rating) as average FROM moviess LEFT JOIN ratings USING (gameid) WHERE 'display' = '1' GROUP BY ratings.movieid ORDER BY average DESC, movie.plays DESC LIMIT 5";

etc etc

ce que je veux c'est savoir comment creer la table pour les "assembler" et si possible sans avoir à rafraichir la page vu que c'est une petite partie.

Merci encore.
0
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 4 505
30 mai 2010 à 23:41
Il faut gérer le tri avec la clause « ORDER BY ».
Tu as aussi des solutions en Javascript sans AJAX :
https://kryogenix.org/code/browser/sorttable/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
briiiiix Messages postés 575 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 1 juin 2010 18
30 mai 2010 à 23:53
OK, tu peux fournir la structure de tes tables ?
0
Alors voila,

- à la base c'est "figé" et organisé par ordre alphabetique:

<?php
$dl="celll";
$i=0;


$q="SELECT * FROM games WHERE type='" . $type . "' AND 'display' = '1' ORDER BY name ASC LIMIT $true_start, $npp";
$rx=mysql_query($q);
$nr=@mysql_num_rows($rx);

while($row=mysql_fetch_array($rx)){
$game_id=stripslashes($row['gameid']);
$game_title=stripslashes($row['name']);
$game_description=stripslashes($row['description']);
$small_thumbnail=stripslashes($row['sthumb']);

$seoURL = "/game/" . $game_id . "/" . truncateName($row['name']) . ".html";

$i++;


if($i%2==0){
$dl="celll";
}
else{
$dl="celld";
}


if($i%2!=0){
echo "<tr class=$dl >";
}

?>


- et voici le code pour organiser par les + recents:

<?php
$query="SELECT 'gameid', 'name' FROM games WHERE type='$type' ORDER BY 'gameid' DESC LIMIT 5";
$result=mysql_query($query);

while($row=mysql_fetch_array($result)){

if(stripslashes($row['name'])!=""){
echo "\t\t\t\t\t\t\t\t\t\t<li class=\"reverseindent\"><a href=\"game.php?id=" . stripslashes($row['gameid']) . "\" class=\"link\">" . stripslashes($row['name']) . "</a></li>\n";
}

}
?>

- le code pour les mieux notés:

<?php
$query = "SELECT games.gameid as id, games.name as name, games.type, AVG(rating) as average FROM games LEFT JOIN ratings USING (gameid) GROUP BY ratings.gameid HAVING type = '$type' ORDER BY average DESC, games.plays DESC LIMIT 5";
$result = mysql_query($query);
echo mysql_error();

while($row = mysql_fetch_assoc($result))
{
echo "\t\t\t\t\t\t\t\t\t\t<li class=\"reverseindent\"><a href=\"game.php?id=" . stripslashes($row['id']) . "\" class=\"link\">" . stripslashes($row['name']) . "</a></li>\n";
}
?>

- Et enfin pour les + vue:

<?php
$dl="celll";
$i=0;


$q="SELECT * FROM games WHERE 'display' = '1' AND gameid!='".$id."' ORDER BY plays DESC LIMIT 0, 16";
$rx=mysql_query($q);
$nr=@mysql_num_rows($rx);

while($row=mysql_fetch_array($rx)){
$game_id=stripslashes($row['gameid']);
$game_title=stripslashes($row['name']);
$game_description=stripslashes($row['description']);
$small_thumbnail=stripslashes($row['sthumb']);
$large_thumbnail=stripslashes($row1['lthumb']);

$i++;


if($i%8==0){
$dl="celll";
}
else{
$dl="celld";
}


if($i%8!=0){
//echo "<tr class=$dl >";
}

?>


Je ne sais pas comment les reunir sous la forme de la premiere fonction avec choix multiples
0
up
0