PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 06-05-2010 15:00:14

debe
Membre
Inscription : 25-06-2009
Messages : 87

[Résolu] majuscules et minuscules sql

bonjour
sur cette page,
http://www.cyberacteurs.org/actions/lis … .php?id=92
ma requete me renvoie deux ordre alphabétique apparemment si la première lettre du nom est en majuscule ou minuscule

ma requete se termien par
ORDER BY ltrim(signataires.nom) ASC

ltrim car lorsque la personne met un espace devant son nom, l'ordre alpha ne fonctionne plus

comment faire en sorte que l'ordre soit respecté même si minuscule ou majuscule ?

Hors ligne

#2 06-05-2010 15:32:22

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : [Résolu] majuscules et minuscules sql

tu forces la majuscule OU la minuscule rien que dans la recherche ^^

strtolower() / strtoupper()

--> ORDER BY ltrim(strtolower(signataires.nom)) ASC par ex


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#3 06-05-2010 15:44:05

debe
Membre
Inscription : 25-06-2009
Messages : 87

Re : [Résolu] majuscules et minuscules sql

pb, j'ai une  erreur sql

Erreur SQL !
SELECT signataires.nom AS nom,signataires.prenom AS prenom,signataires.profession AS profession, signataires.cp AS cp, signataires.ville AS ville,signataires.pays AS pays FROM signataires INNER JOIN verif_petition WHERE id_petition LIKE '92' && verif_petition.id_signataire = signataires.id_signataire ORDER BY ltrim(strtoupper(signataires.nom)) ASC
FUNCTION cyber_2.strtoupper does not exist

cette fonction ne semble pas fonctionner dans une requete sql

Hors ligne

#4 06-05-2010 16:10:36

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : [Résolu] majuscules et minuscules sql

il te manque déjà la jonction ON de ton INNER JOIN ....,et le(s) % de ton LIKE...


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#5 06-05-2010 16:11:32

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : [Résolu] majuscules et minuscules sql

comme ca, ca devrai mieux fonctionner wink

LTRIM(UPCASE(signataires.nom))

a++

Hors ligne

#6 06-05-2010 16:33:43

debe
Membre
Inscription : 25-06-2009
Messages : 87

Re : [Résolu] majuscules et minuscules sql

même erreur
FUNCTION cyber_2.UPCASE does not exist


Erreur SQL !
SELECT signataires.nom AS nom,signataires.prenom AS prenom,signataires.profession AS profession, signataires.cp AS cp, signataires.ville AS ville,signataires.pays AS pays FROM signataires INNER JOIN verif_petition ON signataires.id_signataire = verif_petition.id_signataire WHERE id_petition LIKE '%92%' && verif_petition.id_signataire = signataires.id_signataire ORDER BY ltrim(upcase(signataires.nom)) ASC
FUNCTION cyber_2.upcase does not exist

j'ai ajouté les % et le on

Hors ligne

#7 06-05-2010 16:38:04

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : [Résolu] majuscules et minuscules sql

en dehors du pb : a quoi te sert : " && verif_petition.id_signataire = signataires.id_signataire " (vu que c'est obligatoirement le cas avec le inner join)


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#8 06-05-2010 16:56:36

debe
Membre
Inscription : 25-06-2009
Messages : 87

Re : [Résolu] majuscules et minuscules sql

ouais, en fait, il faut que je revoie tous mes inner join car je ne metait pas de on mais j'inclait la comparaison dans le where, d'ou ce code

maintenant que j'ai mis on, je pense que je peux effectivement virer celui la

mais cela ne résoudra pas mon pb.  j'ai essayé
ltrim(lower(signataires.nom))
pas de messages d'erreur, mais cela ne répare rien, l'ordre alphabétique n'est toujours pas bon

Hors ligne

#9 06-05-2010 17:00:55

debe
Membre
Inscription : 25-06-2009
Messages : 87

Re : [Résolu] majuscules et minuscules sql

ça marche avec cela

ltrim(upper(signataires.nom))

merci de vos coup de main

Hors ligne

#10 06-05-2010 21:56:18

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : [Résolu] majuscules et minuscules sql

Bonsoir,

Sinon dans ton charset, choisi en un qui est insensible à la casse, sa simplifie les choses notamment sur les recherches indexées sur un gros volume d'enregistrement, quand celui qui a développé l'application qui exploite la base a eu la fainéantise de ne pas normaliser la saisie des champs et que ceux ci sont enregistrés tel quels dans la base.


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#11 06-05-2010 22:31:49

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : [Résolu] majuscules et minuscules sql

Re,

J'ai oublié un truc, je voulais profiter de l'occasion pour demander quelque chose à debe. Dans ta requête, le premier champ dans ton SELECT s'appele signataires.nom . En général on mets le nom de la table devant le champ par obligation pour bien spécifier à quel table on fait référence et éviter une erreur mysql lors de l'éxécution du a un conflit de nom de champ (même nom de champ en référence dans la requête dans une autre table). Donc à ce stade, notre champ est différencié pour que la requête fonctionne. Là où je ne comprends plus, et c'est un phénomène généralisé ou presque, pourquoi rajouter un alias sur le champ pour remettre l'ambiguïté en le nommant pareil que le champ avec la même casse? : nom .

Rappel : Un alias sert à renommer un champ pour le différencier distinctement des autres.

Moi je dit : Ne vous étonnez pas à force si vos requêtes génèrent des erreurs à tire larigot^^.

Dernière modification par Jc (06-05-2010 23:18:30)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#12 07-05-2010 08:09:09

Alnoss
Modérateur absent
Lieu : 06 - PACA
Inscription : 11-05-2009
Messages : 541
Site Web

Re : [Résolu] majuscules et minuscules sql

pour avoir vu pas mal de débutant l'utiliser à tort, je pense que c'est par un soucis de connaissance des bases...
Ils ont souvent tendance à hésiter entre $row['champ'] et $row->champ et font un copier/coller d'exemple plus compliqué (sans intérêt ici)


MERCI de lire le mode d'emploi avant de poster !!

Hors ligne

#13 07-05-2010 08:25:01

debe
Membre
Inscription : 25-06-2009
Messages : 87

Re : [Résolu] majuscules et minuscules sql

pour ma part, je pensais (je n'ai pas eu le temps de tester ce matin) que pour recupérer signataires.nom, il aurait fallut faire $row['signataires.nom'] donc l'alias me servait a faire uniquement $row['nom']

mais apparemment, je me suis trompé, je dois pouvoir mettre $row['nom'] même sans alias et je corrigerai cela, sur cette page et ... sur les autres. de même, je mettrais ON a mes inner join (et pas cette comparaison dans WHERE) . merci bien :un simple question m'a fait voir plusieurs erreurs.

j'ai pas bien compris l'histoire du charset. pour les nom, j'utilise varchar(35)      latin1_bin
que me conseilles-tu ?

Moi je dit : Ne vous étonnez pas à force si vos requêtes génèrent des erreurs à tire larigot^^.

Moi je dis : Ne vous étonnez pas que l'on fasse des connerie si on poste sur phpDEBUTANT big_smile .

Hors ligne

#14 07-05-2010 11:13:23

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] majuscules et minuscules sql

SAluton,
En SQL  le ET logique se traduit par AND et non par &&


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#15 07-05-2010 13:05:24

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : [Résolu] majuscules et minuscules sql

Je n'ai pas de conseil à te donner, si ce n'est peut être d'utiliser UTF-8 car cela permet à ton applicatif de rester compatible avec une globalisation généralisée (ca englobe tous les alphabets mondiaux niveau codage) et c'est le standard sur tous les nouveaux applicatifs. Pour que ton codage soit insensible à la casse suffit d'en choisir un en _ci (case insensitive).


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#16 07-05-2010 13:11:28

debe
Membre
Inscription : 25-06-2009
Messages : 87

Re : [Résolu] majuscules et minuscules sql

ok, merci bien. je ne pensais pas avoir tout cela comme défaut pour un script qui fonctionnait !!

je m'en vais coriger tout cela ... sur cette page et bien d'autre. merci les gars pour le boulot sad

Hors ligne

#17 09-05-2010 09:17:52

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : [Résolu] majuscules et minuscules sql

Bonjour,

debe a écrit :

pour ma part, je pensais (je n'ai pas eu le temps de tester ce matin) que pour recupérer signataires.nom, il aurait fallut faire $row['signataires.nom'] donc l'alias me servait a faire uniquement $row['nom']

Je vais quand même t'apporter une précision sur ce point. Tu as raison sur le fait que l'alias te permets de faire $row['nomalias"], mais il ne faut pas oublier la logique de la requête pour autant. Si tu veux mettre un alias (tu en as le droit), et par rapport à mon précédent post, mets par exemple sign_nom en alias ou n'importe quel autre du moment ou il ne crée par d'ambiguïté au niveau de ta requête.
Moi perso j'utilise mysql_fetch_row(), moins gourmand en ressources et la numérotation de tes colonnes se fait de 0 à nbcol-1, et tu n'as pas besoin de te préocupper du nom de tes champs. Pourtant j'utilise quand même assez régulièrement les noms d'alias dans mes requêtes.


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#18 19-05-2010 14:54:51

debe
Membre
Inscription : 25-06-2009
Messages : 87

Re : [Résolu] majuscules et minuscules sql

merci pour ces précisions. .. j'ai du boulot pour être propre et efficace!!

Hors ligne

Pied de page des forums