variable remplie d'espace

Eléphanteau du PHP | 45 Messages

20 déc. 2011, 12:07

Bonjour
J'ai créé un formulaire sur lequel les abonnés d'un site peuvent entrer plusieurs de leurs caractéristiques (c'est un site annuaire d'artistes).
Un site "vitrine" présente ensuite ces artistes selon plusieurs critères, etc. Un truc classique quoi !
Mon problème, c'est que je me suis aperçu que certains des abonnés, lorsqu'ils remplissaient le formulaire, ne laissaient pas tranquille les champs qui devaient rester vide et les remplissaient parfois... d'espace.
Je m'explique. Lorsqu'il il y a un champs "langues étrangères" à remplir, certains abonnés, au lieu de ne rien remplir s'il ne parle aucune langue, mettent des "espaces". Je pense qu'ils se retrouvent par erreur de clic sur ce champs et ne savent pas comment en sortir, appuie sur la barre d'espacement et après comprennent qu'il faut cliquer sur le champs suivant =D> .
Resultat, sur mon site "vitrine" qui présente ce artistes, j'ai en prog
if ($langues_etrangeres) { echo "langues étrangère".$langues_etrangères; }
Et donc à l'affichage, lorsque mon abonné a rempli son champs d'espace, ça m'affiche "langues étrangères" avec... des espaces derrière.
J'ai évidemment tenté le
if if ($langues_etrangeres != ' ') { echo "langues étrangère".$langues_etrangères; }
Mais certains abonnés ont saisi plusieurs espaces. Donc, faudrait que je fasse un test avec un espace, deux espaces, trois espaces, etc... enfin, le truc impossible !

Ma question donc (j'y viens enfin !) : est-ce qu'il est possible d'avoir un test sur un champs rempli de vrai caractères plutôt qu'un champs rempli d'espaces (bien que les espaces soient des caractères, je sais...) ?

Merci de votre aide !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

20 déc. 2011, 15:01

salut,

Deux choses :
-if ($langues_etrangeres) est une façon de faire à bannir, utilise isset ou une comparaison plutot que cela vu que ce n'est pas un booleen (c'est d'ailleurs la source de ton problème).
- utilise la fonction trim pour supprimer les espaces, avant insertion dans la base de donnée !

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 45 Messages

20 déc. 2011, 15:37

Hello Moogli
Merci pour ta réponse.
Pour la fonction trim, je ne vois pas comment je pourrais l'utiliser car dans le champs langues_etrangeres, les abonnés peuvent en mettre 2, genre "anglais allemand" et du coup faudrait pas que je supprime l'espace... A moins que j'ai un moyen de supprimer les espaces "en trop" et surtout pas ceux entre les mots. Mais là, je ne suis pas sûr de savoir comment il faudrait que je fasse !
Par ailleurs, je ne savais pas que if ($blabla) banir et ça me contrarie parce que j'en ai mis plein partout...
C'est quoi le problème ? les risques encourus ? A venir ?...
En tous les cas, je vais essayer pour ce cas précis le isset et peut-être que ça résoudra mon problème...
Je te tiens au courant :)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

20 déc. 2011, 15:45

a tu lu la doc de la fonction ?

suis le lien et tu aura une réponse à ta question.

je vois aussi un défaut de conception, ceci devrait être dans une liste déroulante à choix multiple et non laissé libre à l'utilisateur (après tu est lié au fait que les n'écrivent pas tous pareils. commetn va tu faire la différence entre Anglais ANGLAIS anglais english etc etc).

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 45 Messages

20 déc. 2011, 21:39

Oui, j'ai vu la fonction "trim", et d'un premier coup d'oeil, j'avais pas tout compris.
Mais, finalement, j'ai relu tout ça avec plus d'attention (fin de journée, pas dérangé !) et je vois mieux ce que je peux faire.
Je vois donc comment je peux supprimer un espace en début de ligne. A voir si je peux supprimer tous les espaces d'un coup.
Par ailleurs concernant la conception, non, je ne peux pas imaginer de liste, parce que j'ai des artistes qui parle le bambara ou des dialectes bretons ou je ne sais quoi. J'en ai qui saisissent "Anglais (accent New-Yorkais)", d'autres qui écrivent "Anglais (accent Londres et Cockney)". Bref, je ne pourrai jamais tout prévoir. Cette solution est la seule qui puisse être envisagée (malheureusement).

Mammouth du PHP | 2278 Messages

20 déc. 2011, 22:33

Mais il y a moyen de créer une liste déroulante amplifiable qui présentera par la suite la liste enrichie de la langue ajoutée. J'ai exposé tous les détails sur ce site, mais j'ai la flemme de chercher où.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 45 Messages

21 déc. 2011, 03:10

De la langue ajoutée certes mais pour les abonnés suivant ça va être un enfer de sélectionner ce qui leur correspond ! Et puis je risque d'avoir des doublons du genre "anglais allemand espagnol" puis "espagnol allemand anglais." Le système de liste ne me semble pas être approprié... mais je jetterais volontiers un oeil sur ton script déjà parce que je suis curieux et ensuite parce que ça pourrait me servir pour plus tard :-) dès que je retrouve le lien je te fais signe !
Par contre bien réussi à supprimer un espace mais pas tous les espaces sans savoir combien il y en a ... faudrait peut être que je fasse un boucle "while".mais ça me semble être une usine à gaz... Z'en pensez quoi ? bon j'essaierai de m'y coller demain. pas sur d'avoir le temps :-(

Eléphanteau du PHP | 45 Messages

22 déc. 2011, 23:18

Pardon mon dernier message n'est pas bien sorti ! Je l'ai envoyé depuis mon portable et visiblement il y a eu un bug...

Pour vous donner des news et pour les prochains que ça peut intéresser, j'ai trouvé la solution. Plutôt que de chercher ou vouloir supprimer les espaces, j'ai opté pour la vérification qu'il y ait bien des caractères de a à z. S'il n'y a pas de caractère, alors ne pas afficher le contenu des variables...
Pour ça j'ai utilisé l'expression régulière ereg, et mon code est devenu
if (ereg("[a-z]",$langues_etrangeres )){echo 'langues étrangères :'.$langues_etrangeres'; }


J'ai trouvé plein d'infos concernant les expressions régulières, que je maitrise pas bien (mais maintenant, ça va mieux :D ) ici :
http://www.commentcamarche.net/contents/php/phpreg.php3

Voilà. Merci pour votre coup de main qui m'a donné du courage !