Page 1 sur 1

Liste d'enregistrement de A à H, de I à P et Q à Z

Posté : 15 avr. 2013, 16:29
par greglebelge
Bonjour,
J'ai un problème de liste d'enregistrements.
Voilà mon exposé:
J'ai une table contenant des enregistrements.
Dans cette table seul le champs "title" m’intéresse.
Le contenu de ces champs sont du style:

- La salle du rempart
- La salle du reposoir
- La salle du haut Bakin
- La salle du livago
Etc....

Je souhaiterai lister les résultats par ordre alphabétique en 3 pages (une avec A-H, I-P, Q-Z). Ordre alphabétique établi sur base du nom de la salle (rempart, reposoir, haut bakin,....).
Autrement dis ne pas tenir compte du "La salle du" de mes enregistrements pour lister le resultat.

Je ne sais pas si une requete SQL est possible ou si je dois combiner SQL et PHP....je patauge..

Pour l'instant, je teste avec
cette requete
SELECT SUBSTR(title, 9) AS colonne_sans FROM syair_kdata ORDER BY title ASC"

Ca me donne uen liste de A à Z avec juste le nom....
mais maintenant je coince.
Merci de vos lumières.

Re: Liste d'enregistrement de A à H, de I à P et Q à Z

Posté : 18 avr. 2013, 12:48
par Dimitri69
Bonjour,

Tout aurait été bien plus simple si tu avais une colonne "nom" (rempart, reposoir, ...) et une autre "prefixe_nom" (par exemple, avec La salle du, etc.) ou une colonne de type BOOL qui indique s'il s'agit d'une salle, ou encore une saisie dans la colonne nom du type "rempart (salle du)"... Peut-être peux-tu faire une moulinette pour organiser tes données différemment et ainsi optimiser tes recherches ?

Parce que le souci, avec ta requête, c'est que si une erreur de saisie fait qu'il manque un espace dans le nom, tu n'auras pas le résultat attendu car tu enlèves toujours le même nombre de caractères pour trouver le nom "utile".

Sinon, pour diviser en 3 ta liste de noms, un simple foreach() sur ta liste de noms, avec à chaque itération une vérification de la première lettre du nom (substr et in_array avec 3 tableaux contenant les lettres à regrouper) devrait le faire. Ou alors récupérer le code ASCII de la première lettre du nom à chaque itération pour savoir à quelle intervalle (A-H, I-P et Q-Z). Car les codes suivent l'alphabet.

Re: Liste d'enregistrement de A à H, de I à P et Q à Z

Posté : 18 avr. 2013, 14:16
par ctzwayna
Bjr,

tu peux faire ça avec les moyen du bord genre

"SELECT title FROM syair_kdata WHERE SUBSTR(title, 9,1) <I ORDER BY title ASC" // selectionne la 9e lettre inférieur à I (i maj) donc les nom des salles de A à H

"SELECT title FROM syair_kdata WHERE SUBSTR(title, 9,1) >I and SUBSTR(title, 9,1) < q ORDER BY title ASC" //nom des salles de I à P

"SELECT title FROM syair_kdata WHERE SUBSTR(title, 9,1) >p ORDER BY title ASC" //nom des salles de Q à Z