Formulaire avec vérification instantanée [PHP + JS + AJAX] - PHP - Programmation
Marsh Posté le 17-04-2008 à 08:59:02
Oui, très simplement avec du javascript déclenché par un onKeyUp sur l'input correspondant.
Marsh Posté le 17-04-2008 à 09:01:41
Il te faut utiliser du javascript et du php.
Le script javascript :
Code :
|
Le script php
Code :
|
Vlà ! ++
Marsh Posté le 17-04-2008 à 09:06:31
Merci beaucoup pour ces réponses très rapide, j'essaye de suite
Marsh Posté le 17-04-2008 à 09:28:27
Euh ouais faut pas pousser mémé non plus
<input type="text" id="pseudo" onkeydown="verifPseudo(this.value);">
<div id="pseudobox"></div>
Marsh Posté le 17-04-2008 à 09:48:18
Si je puis me permettre deux remarques :
1. Il me semble que l'onKeyUp est plus approprié dans ce cas.
2. Les appelles ajax c'est bien, en abusé ça craint. En l'état, le type qui tape un pseudo de 12 caractères va faire 7 appelles pour rien. Il faudrait faire ça :
Code :
|
avec l'HTML :
<input type="text" id="pseudo" onkeyup="verifLongueur(this.value);">
et dans ton form : onsubmit="return verifPseudo(document.getElementById('pseudo').value);"
PS : Il faudrait aussi prévoir le cas d'un échec de l'appelle ajax mais bon, voilà quoi.
Marsh Posté le 17-04-2008 à 11:08:47
Oki merci beaucoup encore une fois, en fait ca fait longtemps que j'ai arrêté le php donc je suis presque débutant du coup Donc j'ai un peut de mal à voir comment faire les liens entre le html/php/js.
Je ne vois pas trop ou mettre le lien vers le gif ou le png des petites icônes
Ici par exemple si le pseudo est inférieur ou égal à 4 sa affiche :
" '+pseudo+' :</b> n\'est pas assez long. Votre pseudo doit comporter plus de 4 caractères "
On peut mettre une url d'une icône avec la possibilité de la placée avec du css?
Marsh Posté le 17-04-2008 à 11:12:12
Salut,
Je ne vois vraiment pas l'intérêt de faire une requête AJAX sur un évènement onSubmit. Autant vérifier en PHP!
Un bouton ou l'évènement onBlur serait plus approprié.
Code :
|
De plus, je ne vois pas non plus l'intérêt de vérifier une deuxième fois la longueur du pseudo
Enfin, je met en garde contre les dangers de ces solutions : il faut refaire ces vérifs en PHP lors de la validation du formulaire !
Pensez au pauvre internaute qui n'a pas mis a jour son navigateur depuis les années 80 et donc qui ne supportent pas Javascript, ou à ceux qui l'on délibérément désactivé.
Marsh Posté le 17-04-2008 à 11:22:21
Nop, il me faut ce système la, je veut de l'instantané et tant pis pour ceux qui ne gèrent pas js
Marsh Posté le 17-04-2008 à 11:31:52
Melendril a écrit : |
Bin, jusque là, on a juste insulté l'utilisateur en rouge, on lui a pas interdit d'envoyer le formulaire. sinon, pour le onblur, ouai, mais je maintient qu'il n'est pas util de recharger la page pour l'insulter. Un appelle ajax est quand même plus lèger.
Melendril a écrit : |
Toujours !
Marsh Posté le 17-04-2008 à 12:25:26
Bob2024 a écrit :
|
N'est il pas maintenant conseillé d'user plutôt de la fonction encodeURI() en lieu et place de escape() ?
PS: Vous parlez d'ajax pour une requête synchrone, n'est-ce pas déplacé ?
Marsh Posté le 17-04-2008 à 21:57:11
Salut / re tout le monde Voila ou j'en suis: http://aslan.infographie.free.fr/site20/
J'ai utiliser la méthode de Mxtrem (c'est le premier que j'ai essayer dans l'ordre ne le prend pas mal Bob2004).
Mon plus gros problème est que je n'arrive pas à chargé le php, pourtant je remplace bien la ligne qu'il faut. Ici je l'ai remplacé par une phrase qui s'affiche provisoirement.
La fameuse ligne:
Code :
|
sa donne:
Code :
|
mais sa ne marche po
Second problème, c'est au niveau de la vérification du code, je ne trouve pas la syntaxe exacte. Voila le code:
Code :
|
PassV est le passe de Verification. Mais sa ne marche pas non plus.
Vala vala
Marsh Posté le 18-04-2008 à 10:25:49
Bonjour, j'ai recopié ce que vous avez écrit en adaptant les champs à ma base de données mais j'ai une erreur qui s'affiche dans ma console (avec FireBug) à chaque fois que j'appuie sur une touche, qui est la suivante : XML filtering predicate operator called on incompatible HTMLInputElement
(onkeyup(keyup charCode=0, keyCode=68))
Avez-vous une idée pourquoi ça m'affiche cela ?? Parce que j'arrive pas à résoudre le problème.
Merci d'avance pour votre aide.
Marsh Posté le 18-04-2008 à 10:44:58
Maintenant, j'ai cette erreur : pseudo is not a function
onkeyup(keyup charCode=0, keyCode=85)
(je n'ai pourtant rien changé !!)
Mais je n'arrive toujours pas à régler le problème !!
Aidez-moi please !
Marsh Posté le 18-04-2008 à 10:50:27
J'ai trouvé !!!! C'était juste apparament que ma fonction s'appelé pseudo, mon id aussi et le name aussi !!
J'ai donc modifié le nom de la fonction en l'appelant verifpseudo !!
Marsh Posté le 18-04-2008 à 12:13:34
Ca fait 1h que je cherche et je ne trouve pas pourquoi ca me dit tout le temps que le pseudo est libre alors qu'il est déjà pris !!
Quelqu'un a t-il déjà eu ce problème ??
Merci d'avance
Marsh Posté le 18-04-2008 à 12:29:53
Salut dit moi pour remplacé la ligne:
Code :
|
tu as juste remplacé l'adresse? ("http://www.editeurjavascript.com/scripts/exemples/verifpseudo.php" ) en laissant "?pseudo='escape(pseudo)"?
Si oui mon problème vient du fait que j'ai pas encore activé mes bdd...
Mais je suis toujours bloqué à mon second problème
edit: évite les doubles post en faisant des edit ou on ne s'y retrouve plus!
Marsh Posté le 18-04-2008 à 16:08:32
oui, moi j'ai juste remplacé cette ligne pour ton adresse en laissant "?pseudo='escape(pseudo)"
Pour ton 2ème problème, je sais pas ce qui va pas (ca doit etre ton writediv qui merde parce que le reste a l'air tout à fait juste)
Marsh Posté le 19-04-2008 à 14:10:54
Non, je n'arrive pas à résoudre mon problème. J'ai essayé plein de chose mais j'ai toujours mon pseudo qui est libre (même quand il est normalement déjà pris !).
Ca vient surement du fait que ma requete sql me renvoie 0 résultat mais je ne vois pas pourquoi !
($result = mysql_query("SELECT Pseudo FROM `Client` WHERE pseudo='".$_GET["Pseudo"]."'" );
Si quelqu'un a une idée ... je suis preneur !
Merci d'avance
Marsh Posté le 19-04-2008 à 16:13:26
Ne passe pas une variable $_GET comme ca dans une requéte sans la vérifier et la sécuriser mais fait attention au majuscule/miniscule, ta variable $_GET['Pseudo'] a une majuscule alors que ton code plus haut lui passe la variable en minuscule (verifpseudo.php?pseudo=).
Marsh Posté le 19-04-2008 à 16:19:03
http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0
leçon 1
Marsh Posté le 19-04-2008 à 16:49:15
Si c'est pour "sans la vérifier et la sécuriser" dans ma phrase, je t'invite a relire ta leçon
Marsh Posté le 19-04-2008 à 17:33:09
Je viens d'installé FireBug et il dit " texte is not defined " c'est normal?
Marsh Posté le 19-04-2008 à 20:42:21
masterpsx a écrit :
|
point du tout, c'est pour
Citation : Le pseudo doit comporté au moin 5 caractères |
sur la page http://aslan.infographie.free.fr/site20/
Marsh Posté le 19-04-2008 à 20:48:18
Excuse moi alors, comme tu as posté juste après moi, j'avais cru :-)
Marsh Posté le 19-04-2008 à 20:59:45
Bon bah pour moi le code marche nikel, apres avoir installé ma bdd tousa
Sauf que quand je met ce bout de code:
Code :
|
Sa ne marche plus pourtant j'en ai besoin
Marsh Posté le 21-04-2008 à 08:44:08
Bin, la syntaxe de la fonction me parait bonne. Par contre, j'ai pas tout suivi mais j'ai l'impression que tu appelle cette fonction sur un élément dont tu viens de demander la "value" ... C'est un div ou un input ce "passvbox" ?
Marsh Posté le 21-04-2008 à 08:48:01
passv est un imput (une variable), c'est l'entrée du code de vérification.
edit: passvbox est l'id du div, ainsi la ligne qui s'affiche s'affichait dans cette div la
Marsh Posté le 21-04-2008 à 09:05:29
La fonction est bonne ... Faudrait que tu balances ton code en entier + le html qui correspond pour qu'on voit comment tu l'appelles.
Marsh Posté le 21-04-2008 à 09:26:50
Donc voici mon fichier html d'inscription qui est chargé dans mon index.php:
Code :
|
J'ai un autre ptit soucis maintenant, c'est que lorsque j'écrit un pseudo inferieur à 4 lettres sa m'affiche "pseudobox" (et sa l'affiche en dessous de "adresse mail", voici un screen joint: (à la place de "le pseudo est libre" il y a écrit "pseudobox en blanc"
J'ai réussi à bidouillé un verificateur de mail qui marche bien mais je n'arrive pas à bien mettre ceux du pseudo et du mot de pass. Il faut par exemple qu'il n'y ai pas d'espace dans mon pseudo et que seulement les caracteres suivants soit accepté: [AZ] [az] [09] [éè] Pareil pour les pass. J'avais trouvé ce qu'il fallait mais je ne sais pas trop ou le mettre :s
Edit: ma verif de pseudo n'est toujours pas fonctionnel (dailleur c'est du JS je ne sait pas prk je l'ai posté dans php ><, mais j'aurais besoin un peut d'aide surrement pour la verif php aussi
Marsh Posté le 21-04-2008 à 09:49:09
Deux choses déja :
Cette ligne :
Code :
|
n'a pas beaucoup de sens. De plus, tu redéfinis la fonction writediv dans la fontion verifPassv, pourquoi ??
enfin, elle ne risque pas de marcher correctement puisqu'elle est définit deux fois (avec deux comportements) dans le corps du programme.
Marsh Posté le 21-04-2008 à 09:52:29
Arf j'ai oublié d'enlever cette ligne, mais je bidouillais un truc pour avoir la condition: si "passv = pass" alors écrit que c'est bon, elsif écrit que c'est faux
Marsh Posté le 21-04-2008 à 10:47:50
J'y ai repensé à ton truc ... C'est les multiple définitions de la fonction writediv qui foutent le bordel. Supprime les toutes sauf la première. Au cours de l'exécution de ton programme, elle vaut d'abord
Code :
|
= dernière définition du corps du programme.
Puis celles que tu définis dans une les fonction que tu appelles.
Bilan : trois définition qui ne servent jamais plus un comportement totalement non pertinent pour ce que tu veux faire.
=> Une seule définition et toujours la même syntaxe pour l'appeler (i.e. (id_div, texte)).
Marsh Posté le 21-04-2008 à 11:17:47
En fait c'est le premier qui merde, j'ai gerté la vérification du pass pour le moment, le code marche nikel:
1ere problème: les phrases qui indique si le pass est bon ou pas s'affichent à la place de ceux du mail, donc lorsque le pseudo est faux est qu'ensuite le mail est faux, la phrase du pseudo est écrasé par celle du mail.
Il me faudrait un system équivalent pour indiqué les phrases du pseudo à un "id" précis , voici le code après un peut de ménage:
Code :
|
Second probléme, FireBug indique toujours cette erreur: texte is not defined
* else if(texte == 3)
Certes on ne voit pas l'erreur sans fireBug mais je veut un code propre sans erreurs
Marsh Posté le 21-04-2008 à 11:45:53
Le premier problème c'est ça :
Code :
|
Si tu lui demande writediv(id_div, texte), il écrira id_div dans 'mailbox' !
Et non, tu ne peux pas laisser toutes ces déclarations de cette fonction. Tu pourras peut-être arriver à un comportement correcte mais c'est moche, horrible, affreux et illisible ( ). Et mal.
Edit :
Ne laisse que celle-là :
Code :
|
Et seulement dans le corps du programme.
C'est celle qui correspond à tes appels
Marsh Posté le 21-04-2008 à 12:11:29
Oki dac on en revient au point de départ, toutes les phrases s'affiche au même endroit
Marsh Posté le 17-04-2008 à 08:53:15
Salut. J'aimerais crée un formulaire d'inscription et j'aimerais y inclure un système de vérification en direct, je m'explique.
Par exemple lorsque la personne choisit un pseudo, imaginons qu'il doit y avoir au minimum 4 lettres et maximum 12 lettres. Lorsque le pseudo est bon j'aimerais qu'une petite case à coté du champ de saisie devienne verte lorsque le pseudo est bon et rouge inversement. Par exemple lorsque l'utilisateur commence à écrire le pseudo la case doit être rouge (car moins de 4 lettres) et tout sa en direct donc.
Les "cases verte et rouge" correspondaient à des petites icônes en png ou gif.
Est-ce possible?
Message édité par Aslan117 le 21-04-2008 à 11:11:00