Abécédaire dynamique

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.
 
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.
 
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.
 
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 ?
 
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%' }
...
 
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%' }
...
 
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 ...
 
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:
 
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