Abécédaire dynamique

Nouveau WRInaute
Bonjour,

Quelqu'un saurait-il comment réaliser un abécédaire dynamique (PHP Mysql) ?
C'est à dire générer l'alphabet et tous les chiffres (chaque lettre et chaque chiffre correspondant à une page dédiée) et avoir sur "la page des a" par exemple uniquement les films (de ma BDD) commençant par "a", tout en évitant les "des", "le", "les" ou "l" au début des titres quand il y en a.


Merci pour votre aide.
 
WRInaute occasionnel
Bonjour,

Pour la liste alpha numérique déjà, tu définis une variable texte qui sera automatiquement un tableau et tu boucles sur la longueur du tableau :

$alpanum = "ABCDEF...Z0123456789";
for($i=0;$i<len($alphanum);$i++) {

}

Pour la requête sur la lettre, en dehors de lister tous les cas possibles, je ne vois pas :

... WHERE champ LIKE 'A%' OR champ LIKE 'Le A%' OR champ LIKE 'Des A%' etc..

Nicolas.
 
WRInaute occasionnel
yazerty a dit:
Faire 2 champs dans ta table : titre_affiche - titre_abecedaire (sans les pouich) :- ?
Si la base est déjà constituée et qu'elle comporte des milliers d'enregistrement, bonjour le boulot :?
Si la base n'est pas faite ou qu'il y a peu d'enregistrement c'est une bonne solution car cela permettrait également de trier les résultats correctement pour une lettre donnée.

Nicolas.
 
Nouveau WRInaute
la base existe déjà !
Impossible de faire ce que vous me conseillez.

Je teste de cette manière :
WHERE titre LIKE '$lettre%' OR titre LIKE 'La $lettre%' OR titre LIKE 'L\'$lettre%' comme décrit plus haut mais pour le titre "La planète des singes" par exemple, il figure sous la lettre P et la lettre L également.

Comment résoudre ce pb ?
 
WRInaute occasionnel
WHERE titre LIKE '$lettre%'

if($lettre != "L") { OR titre LIKE 'La $lettre%' OR titre LIKE 'L\'$lettre%' }
if($lettre != "D") { OR titre LIKE 'Des $lettre%' OR titre LIKE 'D\'$lettre%' }
if($lettre != "U") { OR titre LIKE 'Un $lettre%' OR titre LIKE 'Une $lettre%' }
...
 
WRInaute occasionnel
Oui, pardon, c'est plutôt :

WHERE titre LIKE '$lettre%'

if($lettre == "L") { AND titre NOT LIKE 'La $lettre%' AND titre NOT LIKE 'L\'$lettre%' } else { OR titre LIKE 'La $lettre%' OR titre LIKE 'L\'$lettre%' }
...
 
WRInaute occasionnel
WHERE (champ LIKE 'L%' AND champ NOT LIKE 'La %' AND champ NOT LIKE 'Le %' AND ...) OR champ LIKE 'La L%' OR champ LIKE 'Le L%' OR ...
 
Nouveau WRInaute
Je le teste dans tous les sens mais j'obtiens toujours le même problème.

Voici le code que j'ai mis en place sur vos conseils :

Code:
if ($lettre == "l")
{ $where = " AND titre NOT LIKE 'La $lettre%' AND titre NOT LIKE 'Le $lettre%' AND titre NOT LIKE 'Les $lettre%' AND titre NOT LIKE 'L\'$lettre%'"; }
else 
{ $where = " OR titre LIKE 'La $lettre%' OR titre LIKE 'Le $lettre%' OR titre LIKE 'Les $lettre%' OR titre LIKE 'L\'$lettre%'"; }

$select = "select id_film,titre,description from films WHERE titre LIKE '$lettre%' $where";

Une autre idée peut-être ? :wink:
 
Nouveau WRInaute
Merci Absoluteweb mais avec ce code, seuls les titres commençant vraiment par "L" apparaissent sous toutes les lettres (et aucun autres titres).

C'est vraiment difficile !!

Code:
$where = "WHERE (titre LIKE 'L%' AND titre NOT LIKE 'La %' AND titre NOT LIKE 'Le %' AND titre NOT LIKE 'L\'%') OR titre LIKE 'La L%' OR titre LIKE 'Le L%'";
$selabc = "select id_film,titre,description from films $where";
[/code]
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut