Page 1 sur 1

Recherche un script pour afficher la liste des enregistremen

Posté : 01 sept. 2005, 22:22
par Geckco
Bonjour,

J'aimerais afficher sur une page la liste de toutes les lettres de l'alphabet permettant d'afficher tous les enregistrements commençant par celle-ci par un click sur la lettre.

La lettre affichée devraient être un lien que si la table contenant les enregistrements en contient au moins un qui commence par "la dite" lettre.

Quelqu'un peut il m'aider ?

Merci d'avance

Posté : 01 sept. 2005, 22:28
par Cyrano
Dans un premier temps, il te faut faire une requête SQL listant tous les mots par ordre alphabétique.

Ensuite, tu fais le tour de la liste des mots pour créer un tableau indexé contenant la première lettre de chaque mot en sauntant le tour si la lettre est déjà présente (inutile d'enregistrer les doublons dans le tableau).

Dans un second temps, tu construis un tableau indexé avec toutes les lettres de l'alphabet:

Tu crée ta liste de lettres pour l'affichage et tu vérifie pour chacune d'elle si elle est présente dans le tableau créé avec la liste de mots: si tu la trouves, tu fais un lien hyper-texte, sinon, tu affiches la lettre normalement.

Est-ce que ce schéma te semble logique ?

Posté : 01 sept. 2005, 22:45
par Geckco
Le shèma me semble correct, mais le problème est que je ne sais pas faire tout ce que tu décris.

Je suis un néophite en PhP et je bricole, mais là visiblement cela dépasse mes ompétences !!

Merci de votre petite aide

Posté : 01 sept. 2005, 23:31
par Cyrano
Dans un premier temps alors, déménagement du sujet vers le forum approprié :arrow: "Débuter en PHP".

Ici, il faut un minimum de connaissances de base, c,est pour ça que je n'ai pas détaillé davantage.

Posté : 01 sept. 2005, 23:31
par Cyrano
As-tu codé quelque chose qu,'on ait une base de départ ?

Posté : 01 sept. 2005, 23:37
par Geckco
Voici mon début de code, mais cela ne renvoie pas les lettres, cela m'affiche juste "Array - ".

J'ai été un peu aidé sur ce coup là
$req = "SELECT DISTINCT UCASE(SUBSTRING(Nom,0,1)) as PremiereLettreEnMajuscule FROM Clients ORDER BY PremiereLettreEnMajuscule";
$result = @mysql_query($req);
//.....execution et recuperation
//while ($resultat= fetch(...)) {
while ($resultat = mysql_fetch_array($result)) {
    echo "<a href='mapage.php?lettre=$resultat'>$resultat</a>  -   ";
}
echo "<br>"

//if (isset($_POST['lettre'])) {
//    $req = "SELECT * FROM Clients WHERE Nom LIKE '" . $_POST['lettre'] . "%'";
    //... affichage du resultat
//}
?>
// les dernières lignes sont en commentaires car je n'ai pas encor testé cela.

Posté : 02 sept. 2005, 08:08
par Cyrano
Intéressant : j'ai fait quelques tests sur la requête pour en arriver à un résultat en mettant la position de départ à 1 et non à 0, ce qui donnerait :

Code : Tout sélectionner

SELECT DISTINCT(UCASE(SUBSTRING(Nom,1,1))) as PremiereLettreEnMajuscule FROM Clients ORDER BY PremiereLettreEnMajuscule ;

Posté : 02 sept. 2005, 09:20
par Geckco
Merci beaucoup c'est parfait car cela fonctionne !!!