Des villes en doubles

Eléphant du PHP | 216 Messages

18 sept. 2009, 13:53

bonjour,

j'ai un formulaire avec le nom de tous les pays et je laisse
les internautes mettre le nom de la ville.
Mon souci c'est que je crains de me retrouver avec plein de doublons dans ma table
à partir du moment ou je laisse le champ libre aux internautes.

J'aimerais savoir comment éviter tous ces doublons, sachant que les mots

Vendée
vendee
vendée

ne sont pas de vrais doublons.

Je peux donc me retrouver avec 3 orthographes différentes pour une même ville.

Merci pour votre aide.

Mammouth du PHP | 686 Messages

18 sept. 2009, 14:11

Peut etre en enlevant les accents de tes villes

Eléphant du PHP | 216 Messages

18 sept. 2009, 14:35

et la casse ?

Mammouth du PHP | 686 Messages

18 sept. 2009, 15:31

ce que je veut dire, c'est que tu fait ta requete et tout ton tableau tu lui enlève les accent, ensuite tu supprime les doublons

Eléphant du PHP | 199 Messages

18 sept. 2009, 15:50

Tu fais une fonction validation avant l'insertion dans la base de donnée.
Dans cette fonction:
-tu mets tout en minuscule
-tu enlèves les accents.


Tu fais une liste blanche. Cette liste comportera les noms des départements francais.
Tu vérifies que la saisie est dans la liste et ensuite on fait l'insertion.

L'intérêt?
Impossible de mettre des départements qui n'existent pas.
De plus ca fait de la sécurité pour éviter de l'injection sql.

Eléphant du PHP | 216 Messages

18 sept. 2009, 16:15

En ce qui concerne la liste blanche, je ne peux car il faudrait que je mettre les villes de tous les pays du monde...

Je vais me contenter de retirer les accent et les majuscules.

Par contre je ne serais pas à l'abri de faute d'orthographe...

Mammouth du PHP | 686 Messages

18 sept. 2009, 20:15

Pourquoi ne fais tu pas un truc du genre
Selectionnez votre ville dans la liste déroulante et si elle y est pas saisissez là.
Comme ca ta base sera mise à jour par les utilisateurs qui ne trouvent pas leur ville et dans la liste deroulante tu les mets en majuscules

la ferté saint cyr deviendra LA FERTE SAINT CYR
Comme ca pas besoin des accents
Après il peut y avoir le problème des tirets donc pour cela tu fais la même operation
car : la ferté saint-cyr ... ba tout le monde va pas mettre de tiret !

Eléphant du PHP | 199 Messages

19 sept. 2009, 13:09

[quote="sylvaing26"][/quote]

Je ne suis pas d'accord avec toi.
En effet ta solution ne marche pas si les utilisateurs mettent des villes
bidons ou font des erreurs.
Après la base de donnée serait fausse.

Mammouth du PHP | 686 Messages

19 sept. 2009, 13:10


Je ne suis pas d'accord avec toi.
En effet ta solution ne marche pas si les utilisateurs mettent des villes
bidons ou font des erreurs.
Après la base de donnée serait fausse.
Exact mais dans son cas c'est bien ce qu'il se passe
En ce qui concerne la liste blanche, je ne peux car il faudrait que je mettre les villes de tous les pays du monde...

Eléphant du PHP | 199 Messages

19 sept. 2009, 13:24

C'est pour ca que j'avais proposé la liste blanche.
Après il existe peut-être un document texte quelque part regroupant les noms des villes qu'on peut importer.
Sinon tu vas avoir du travail.

Mammouth du PHP | 985 Messages

19 sept. 2009, 13:33

Tu peux aussi en plus des solutions citées plus haut, demander le code postal.
Ensuite cela te permet éventuellement de comparer et/ou corriger, un code postal déjà existant correspondant à une ville avec une orthographe différente...
Et aussi peut-être utiliser les codes postaux comme champ de tris au lieu des villes, éliminant ainsi le problème des différentes orthographes...
Ce n'est surement pas suffisant, mais cela peut aider...
Modifié en dernier par Dr@ke le 19 sept. 2009, 13:34, modifié 1 fois.
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Mammouth du PHP | 686 Messages

19 sept. 2009, 13:34

Ba sinon il reste l'option "avoir confiance aux internautes"
Ils sont pas fous, si ils trouvent leur ville ils vont pas s'amuser a en mettre une fausse.
Et même avec la liste deroulante il peuvent mettre une ville bidon !

Eléphant du PHP | 199 Messages

19 sept. 2009, 14:32

Je ne te conseille pas de penser tout rose par rapport aux utilisateurs.
Il faut être paranoïaque, car parmi les utilisateurs de ton site il y a aura toujours 1% qui fera
en sorte de mettre le bazar sur ton site web.
Après fait comme tu veux mais c'est important de ne pas avoir confiance aux utilisateurs.

Eléphant du PHP | 224 Messages

19 sept. 2009, 15:44

Bonjour à tous :)
Après fait comme tu veux mais c'est important de ne pas avoir confiance aux utilisateurs.
Je me dois de réagir à cette recommandation, je dirais justement le contraire, il faut faire confiance aux utilisateurs.

Le principe est simple : un utilisateur qui rempli et valide un formulaire avec des données personnelles, c'est qu'il est intéressé par ce que le site propose en terme de services ou d'avantages par cette opération, sinon pourquoi perdrait-il son temps ?

Le problème est que, avec des données aussi variables et nombreuses, tels que le nom de toutes les villes de tous les pays, avec ce que ça suppose comme variantes orthographiques possibles (sans parler des particularités de chaque langue), il est pratiquement mission impossible de mettre un système d'analyse et de vérification assurant une parfaite cohérence de toutes ces informations, surtout si l'utilisateur a la possibilité d'entrer librement les données de son choix.

Bref, à mon avis, pour des problématiques de ce type, le mieux est justement de faire confiance à l'utilisateur, tout en lui proposant une aide, sous forme de menus dynamiques par exemple, et aussi, surtout, en le guidant dans les différentes étapes, par des simples textes explicatifs permettant de bien clarifier ce qu'on attends comme information sur chaque partie du formulaire.

Par exemple, pour un champ "Ville", il est possible de mettre un libellé disant : "Merci de bien inscrire le nom de votre ville tout en majuscules, sans accents et sans ponctuations (virgules, traits d'union, etc.)".

C'est simple, facilement adaptable à toutes les langues et, àmha, largement suffisant pour minimiser les erreurs et doublons.

Bien-sûr, ce n'est pas parfait, il y aura toujours des approximations et des données fausses, mais, encore une fois, si l'utilisateur souhaite réellement bénéficier du service proposé par le site, ce n'est pas dans son intérêt de fournir des mauvaises informations ou non conformes aux règles de composition exposées.

Enfin, des systèmes de d'analyse et de vérification peuvent toujours être ajoutés, partiellement du moins, car je ne pense pas qu'ils puissent être 100% efficaces dans tous les cas de figure (ce problème du nom des villes en est un exemple)...

C'est juste mon avis... :)
Fredo d;o)
"Un pas à la fois me suffit..." (Gandhi)

Mammouth du PHP | 686 Messages

20 sept. 2009, 00:34

=D> Paratage le même avis de FredoMkb
Un utilisateur sera tout de même libre de choisir une ville bidon parmis la liste, ca reviendrai au même qu'il en rentre une fausse.