Classement par lettre [PHP/MySQL ] - PHP - Programmation
Marsh Posté le 26-01-2003 à 12:25:59
WHERE nom LIKE 'A%' te sort tous les films commençant par A.
Pour faire ta liste de lettres un truc comme ça (que tu peux améliorer ensuite pour pas avoir de '-' à la fin ou pour ne pas avoir de lien sur la lettre où tu es déjà) :
Code :
|
Marsh Posté le 26-01-2003 à 13:27:08
ok merci bcp, mais je suis newbies et je dois t'avouer que ta boucle for je pige pas trop ce que tu fais dedans mdr, tu peux me la commenter ?
Marsh Posté le 26-01-2003 à 13:31:10
Ha ben en incluant le code dans une page j'ai tout de suite compris
Merci
Marsh Posté le 26-01-2003 à 13:37:42
Encore une question, si le titre ne commence pas par une lettre mais par une chiffre ou peu importe, comment regrouper tout les titre qui ne commencent pas par une lettre ?
Marsh Posté le 26-01-2003 à 13:55:57
J'ai déja modifier comme çA :
Code :
|
Voila
Marsh Posté le 26-01-2003 à 17:27:52
Je repose ma question, comment sélectionner un groupe de titre de film qui ne commencent pas par une lettre ?
Je fais comme ça :
Code :
|
Ce que je ne sait pas c'est comment donner les valeurs de 0 - 9 pour la variable $initiale en une seule fois, pas la valeur 1 et ensuite 2 etc..
Marsh Posté le 26-01-2003 à 18:01:03
Bonne question
Ca fait un peu bidouillage mais peut être un truc comme ca :
WHERE (titre < 'aaaaa' AND (titre > 'zzzzz'
Marsh Posté le 26-01-2003 à 18:23:49
mrBebert a écrit : Bonne question |
Huhu pas convaincu.. Je dois te dire que la je suis un peu paumé
Marsh Posté le 26-01-2003 à 18:37:11
L0k a écrit : Encore une question, si le titre ne commence pas par une lettre mais par une chiffre ou peu importe, comment regrouper tout les titre qui ne commencent pas par une lettre ? |
Ce que tu peux faire c'est dans ta boucle for, un truc du genre :
$cond .= "AND titre NOT LIKE '".$c."%'";
Au final $cond vaudra :
"AND titre NOT LIKE 'A%' AND titre NOT LIKE 'B%' AND titre NOT LIKE 'C%'.........."
S'il a choisi une initiale "spéciale" tu rajoutes $cond dans ta requête et valà. Si y'a pas déjà un WHERE dans ta requête faut rajouter WHERE 1 avant, par contre.
Marsh Posté le 26-01-2003 à 18:39:30
L0k a écrit : |
Par ordre alphabétique, les titres ne commençant pas par une lettre seront soit < 'a' soit > 'zzzzz' (à moins que tu n'ais un titre commençant par 5 z )
Marsh Posté le 26-01-2003 à 18:39:47
Sielfried a écrit : |
T'aurais pas le temps de me modifier ma boucle en dessus comme example parce que la je commence a fatiguer je crois.. Niveau compréhension je suis plus au top.
Marsh Posté le 26-01-2003 à 18:42:26
mrBebert a écrit : Par ordre alphabétique, les titres ne commençant pas par une lettre seront soit < 'a' soit > 'zzzzz' (à moins que tu n'ais un titre commençant par 5 z ) |
Ouaip j'ai compris ce que tu voualis faire, l'idée est pas bête sur le principe ça marche, mais g encore quelques problèmes, mais je pense réussir, en fait en plus de la condition que seuls les films commençant par une lettre s'affiche je crée encore plusieurs page si jamais il y a bcp de film et c la qui a 2 3 problèmes mais je pense pouvoir corriger..
Marsh Posté le 26-01-2003 à 18:50:07
L0k a écrit : |
A priori, ca peut se faire avec 2 paramètres pour la page.
- lettre : qui contient la première lettre. (avec le cas particulier de ceux qui ne commencent pas par une lettre, par exemple, en passant le paramètre "0" ).
- le numéro de page.
Dans ton script, tu génère la condition WHERE de ta requête en fonction de la lettre, et le LIMIT en fonction du numéro de page.
Marsh Posté le 26-01-2003 à 18:50:21
if ($initiale == "noin" )
{
print("<font color=\"#FF0000\"># " );
}
else
{
print("<a class=small href=\"mapage.php?initiale=noin\"><font color=\"#FF0000\">#</a> " );
}
for ($i = 65; $i < 91; $i++)
{
$c = chr($i);
$cond .= "AND titre NOT LIKE '".$c."'";
if ($initiale == $c)
{
print("<font color=\"#FF0000\">$c " );
}
else
{
print("<a class=small href=\"mapage.php?initiale=$c\"><font color=\"#FF0000\">$c</a> " );
}
}
Dans ta requête :
$query = "SELECT * FROM $table WHERE ".($initiale == "noin" ? "1 ".$cond : "titre LIKE '$initiale%'" );
Marsh Posté le 26-01-2003 à 18:51:24
mrBebert a écrit : Par ordre alphabétique, les titres ne commençant pas par une lettre seront soit < 'a' soit > 'zzzzz' (à moins que tu n'ais un titre commençant par 5 z ) |
< et > marchent avec des chaînes ? C'est sûr ?
Marsh Posté le 26-01-2003 à 18:51:59
voila un de mes problèmes :
Pour le code :
Code :
|
J'ai l'erreur : Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp\www\test.php on line 53
Par contre le code :
Code :
|
Marche très bien
Marsh Posté le 26-01-2003 à 18:52:19
Sielfried a écrit : |
non
Faudrait tester mais j'ai la flemme d'installer mysql là tout de suite
Marsh Posté le 26-01-2003 à 18:54:09
L0k a écrit : $query = "SELECT * FROM $table WHERE titre (titre < 'A' OR (titre > 'zzzzz'"; |
Marsh Posté le 26-01-2003 à 18:57:39
mrBebert a écrit : non |
Ca marche
Et dire que je me faisais chier avec mes 26 WHERE NOT LIKE
Marsh Posté le 26-01-2003 à 19:07:11
C'est tout bon j'ai enfin réussi a faire ce que je voulais merci les gars
Marsh Posté le 26-01-2003 à 10:56:44
Je dois gérer un grand nombre de titres de film, et il faudrait que je puisse afficher tout les films commençant par la lettre a, b, etc dans une page différente les noms de films sortent d'une base de donnée MySQL. Comment feriez vous ça?