|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | |||||
|
Membre éclairé
![]() François observateur de nuage niveau 2.3 Inscription : août 2008 Messages : 546 ![]() |
Bonjour
Si vous trouvez un meilleur titre, n'hésitez pas ... page formulaire : Code :
page fonction : Code :
La fonction ... fonctionne sauf qu'il transmet en plus des erreurs et des champs remplis, une chaine vide supplémentaire à la fin. Je site le validateur : Citation:
Ps: quand je mets la fonction dans la page du formulaire aucune chaîne vide n'est transmise. Merci beaucoup pour votre réponse
__________________
_____________________________________________ Tours Football Club - Turonorum Civitas Libera
|
|||||
|
|
00
|
|
|
#2 |
![]() ![]() Alain Sahli Ingénieur développement logiciels Inscription : décembre 2004 Messages : 1 086 ![]() |
Salut,
Essaye de définir ta variable $$champ globale après le array_push. Par contre je ne vois pas tout le projet mais je peux te dire de manière plus ou moins sûre que ta façon d'utiliser des variables globales n'est pas correct. Normalement c'est vraiment un mot-clé à éviter... Y a d'autres manières bien plus propres. Bonne journée !
__________________
Blog - Mon espace developpez - Vous voulez un site internet ? eZ Publish Certified developer |
|
00
|
|
|
#3 | |
|
Membre éclairé
![]() François observateur de nuage niveau 2.3 Inscription : août 2008 Messages : 546 ![]() |
Citation:
__________________
_____________________________________________ Tours Football Club - Turonorum Civitas Libera
|
|
|
|
00
|
|
|
#4 | ||
![]() ![]() Alain Sahli Ingénieur développement logiciels Inscription : décembre 2004 Messages : 1 086 ![]() |
Euh ton histoire de return est effectivement bizarre... Car il n'y a pas plus simple !
Code :
__________________
Blog - Mon espace developpez - Vous voulez un site internet ? eZ Publish Certified developer |
||
|
00
|
|
|
#5 |
|
Membre éclairé
![]() François observateur de nuage niveau 2.3 Inscription : août 2008 Messages : 546 ![]() |
oui, j'ai bien essayé, mais il me rajoute une toujours une chaine vide en plus ...
Pour le return, je n'y arrive vraiment pas.
__________________
_____________________________________________ Tours Football Club - Turonorum Civitas Libera
|
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() |
Bonjour,
Et tu ne préférerais pas utiliser la boucle for plutôt que foreach ? J'ai toujours eu le sentiment qu'on maîtrisait mieux ce qui se passait dans la boucle...
__________________
"n'imprimez ces messages que si nécessaire... Préservez notre planète"
|
|
01
|
|
|
#7 | ||
|
Membre éclairé
![]() François observateur de nuage niveau 2.3 Inscription : août 2008 Messages : 546 ![]() |
On m'a toujours conseiller d'utiliser foreach, car elle était plus rapide ...
Code :
Merci d'avance
__________________
_____________________________________________ Tours Football Club - Turonorum Civitas Libera
|
||
|
|
00
|
|
|
#8 | ||
|
Membre éprouvé
![]() Guillaume Développeur Web Inscription : décembre 2007 Messages : 353 ![]() |
essaye avec
Code :
__________________
Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi. - Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre
|
||
|
00
|
|
|
#9 | ||
|
Membre éclairé
![]() François observateur de nuage niveau 2.3 Inscription : août 2008 Messages : 546 ![]() |
Merci pour le bout de code que tu m'as donné radicaldreamer, c'est vrai que c'est mieux comme ça.
Par contre je ne comprend pas pourquoi mon array est vide suite à la fonction. Page formulaire Code :
__________________
_____________________________________________ Tours Football Club - Turonorum Civitas Libera
|
||
|
|
00
|
|
|
#10 |
|
Membre éprouvé
![]() Guillaume Développeur Web Inscription : décembre 2007 Messages : 353 ![]() |
Ca n'est pas vide..
C'est juste que tu affiches ce qu'il y a dans ton tableau... Et vu que c'est du JS, bah c'est pas affiché mais interprété en JS. Alors ça serait plutot du genre: Code :
$erreur[] = htmlentities("<script type=\"text/javascript\">document.getElementById('".$champ."').value = '".$_POST[$champ]."'</script>"); Code :
$erreur[] = htmlentities('<script type="text/javascript">document.getElementById("'.$champ.'").value = "'.$_POST[$champ].'"</script>');
__________________
Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi. - Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre
|
|
00
|
|
|
#11 | |
|
Membre éclairé
![]() François observateur de nuage niveau 2.3 Inscription : août 2008 Messages : 546 ![]() |
Citation:
Par contre Code :
$erreur[] = "<script type=\"text/javascript\">document.getElementById('".$champ."').value = '".$_POST[$champ]."'</script>";
__________________
_____________________________________________ Tours Football Club - Turonorum Civitas Libera
|
|
|
|
00
|
|
|
#12 |
|
Membre éprouvé
![]() Guillaume Développeur Web Inscription : décembre 2007 Messages : 353 ![]() |
J'ai testé exactement le code
Code :
$erreur[] = "<script type=\"text/javascript\">document.getElementById('".$champ."').value = '".$_POST[$champ]."'</script>"; Maintenant, si ça ne te change pas les div c'est que peut-être pour changer le contenu d'une div il faut utiliser ".innerHtml" et non ".value". Le ".value" étant pour les champs input si j'me souviens bien. Cordialement, Guillaume.
__________________
Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi. - Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre
|
|
00
|
|
|
#13 | ||||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 700 ![]() |
Salut
Une suggestion comme ça. Au lieu de crée un code Javascript généré en Php qui une fois interprété par le navigateur aura pour but de modifier le contenu d'une DIV, pourquoi ne pas modifier directement le contenu en Php, tout court ? Si lors d'une vérif faite en Php on a détecté une erreur, alors on sait à l'avance qu'il y a erreur. De plus, si selon l'erreur on a une autre proposition de valur à proposer, là aussi on sait à l'avance la nouvelle valeur. Donc tout ça avant de s'occuper de la partie cliente (HTML,Javascript). Autant générer le HTML avec une valeur plus adéquat en cas d'erreur, ou tout simplement remettre la même valeur erronée en rajoutant un message invitant l'utilisateur à la corriger. Franchement, il y a aucun intérêt de le faire en JS, ce n'est qu'une sur-couche supplémentaire dans un cas comme celui-ci, sans compter que c'est se compliquer la vie. Au niveau Javascript et en se qui concerne les vérifications de formulaire, le principal intérêt c'est lorsque les vérifs sont effectuées sans qu'il y ait un rechargement de page, donc $_POST, ne peu pas intervenir dans ce cas là, car $_POST sera connu après validation et une fois arrivée sur le serveur. Donc tout l'art est de créer des vérifs qui pourront être prévues sans avoir à interroger sa Bdd par exemple. Si ce n'est pas possible, Javascript ne peu pas intervenir (sauf genre Ajax, et encore que là ça se discute). Mise à par ça, la façon qui me semble la plus simple lorsqu'il faut agir sur des éléments dans un formulaire en Javascript, c'est justement exploiter le formulaire plutôt que getElementById(). En gros : Un formulaire doit avoir un nom unique, donc faire référence à son nom. Puis chaque nom des éléments (genre INPUT, SELECT, etc ...) dans un formulaire doivent être uniques aussi. Du coup, on peu faire comme ceci : Code :
Code :
En gros, ne pas confondre ceci : Code :
<input type="text" name="un_nom" value"Une valeur" /> Code :
<div id="UnID">Contenu de la DIV</div>
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
||||
|
|
00
|
|
|
#14 | ||
|
Membre éclairé
![]() François observateur de nuage niveau 2.3 Inscription : août 2008 Messages : 546 ![]() |
Citation:
Citation:
__________________
_____________________________________________ Tours Football Club - Turonorum Civitas Libera
|
||
|
|
00
|
|
|
#15 | |
|
Membre Expert
![]() Inscription : septembre 2010 Messages : 1 234 ![]() |
Citation:
2/ Ben ... ta fonction "VerifremplissageChamps" on dirait bien une fonction de vérification en php, et php passe nécessairement par le serveur... Si tu fais afficher des messages d'erreurs php par javascript le visiteur n'aura aucune information de retour si js est désactivé... alors qu'il est facile de faire autrement. On fait normalement tout le script complet en php (avec renvoi des messages d'erreurs) et ensuite pour le confort du visiteur et diminuer un peu la charge du serveur, on double par un contrôle javascript indépendant qui sera fait avant la requête au serveur (comme déjà expliqué par RunCodePhp). De cette façon ton script fonctionne avec ou sans js activé et est optimisé si js est activé. Concernant les fonctions php, le return ne peut retourner qu'une variable, pas plusieurs, mais cette variable peut être un tableau. |
|
|
|
00
|
|
|
#16 |
|
Membre éclairé
![]() François observateur de nuage niveau 2.3 Inscription : août 2008 Messages : 546 ![]() |
Je vais peut-être passer pour un sot, mais comment demandes-tu au serveur, d'écrire par exemple "voila" dans la div a plutôt que dans la div b ?
__________________
_____________________________________________ Tours Football Club - Turonorum Civitas Libera
|
|
|
00
|
|
|
#17 | |||
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 700 ![]() |
Citation:
De même que quand tu crée ton formulaire, tu crée bien 2 champs INPUT de type TEXT avec un nom genre "login" et "mot_de_passe", non ? En tout cas, le serveur n'écrit rien, c'est toi et ton code qui va permettre de généré un contenu HTML (voir Javascript, c'est pareil), au bout, ce contenu sera renvoyé vers le client. Donc tout ce qu'on génère est connu d'avance. A mon avis, c'est comment les choses se déroulent qui n'est pas très clair de ton coté, tu ne visualise pas bien. Mais encore une fois : Si la personne valide le formulaire (submit), une requête HTTP est envoyée vers le serveur avec le contenu du formulaire, c'est ce qu'il y a dans le $_POST. Ces données sont connues dès la 1ère ligne de code dans sa page, ce qui veut dire qu'on a tout le loisir de générer un contenu HTML en réponse adapté selon la situation. Donc si on souhaite remettre le même contenu, même erroné comme un mauvais mot de passe, on peu le faire, il n'y a pas besoin de JS pour ça. Exemple simple : (page identification.php) Code :
Il alors possible de ré-insérer les données saisies par l'utilisateur, même erroné, de même que générer un message d'erreur dans le contenu de la page. Donc le contenu de la page s'adapte bien selon la situation et sans avoir besoin de désigner quoi que ce soit, non ? Tout ça, sans l'ombre d'un bout de code Javascript. Maintenant, il est pratique de prévoir, donc faire quelques vérifications en Javascript simples, comme par exemple vérifier que les champs login/pass ne sont pas vide, où/et qu'il y a eu un certain nombre minimum de caractères de saisies. Si ce n'est pas le cas, on afficher une boite d'alert avec un message qui va bien, et surtout le formulaire ne sera pas validé (soumis) tant que ce minima est invalide. Mais ici, on reste totalement coté client, et il ne sera pas possible de récupérer une donnée dans $_POST par exemple vu qu'on est pas coté serveur, c'est là la grosse différence.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|||
|
|
00
|
|
|
#18 | |||
|
Membre éclairé
![]() François observateur de nuage niveau 2.3 Inscription : août 2008 Messages : 546 ![]() |
Citation:
ah sisi t'inquiète pas, je vois très bien ce qu'il se passe, sauf que tu ne réponds pas à ma question : J'aurai eu envie q'un message s'affiche dans une div indépendante(en cas d'erreur), après la validation du formulaire, bref que php ( je fais un raccourci : je sais que c'est nous qui programmons Code :
Pour return, j'ai abandonné, je n'arrive pas à le faire fonctionner. Sinon pour mon problème de chaine vide, cela venant d'une autre fonction qui doublait cette commande : Code :
array_push($field, "<script type=\"text/javascript\">document.getElementById('".$champ."').value = '".$_POST[$champ]."'</script>");
__________________
_____________________________________________ Tours Football Club - Turonorum Civitas Libera
|
|||
|
|
00
|
|
|
#19 | ||
|
Membre éprouvé
![]() Guillaume Développeur Web Inscription : décembre 2007 Messages : 353 ![]() |
ledisciple, je te répète que ton return fonctionne mais qu'il interprète la valeur en tant que JAVASCRIPT, donc il l'affiche pas sur la page mais regarde correctement ton code source...
Pour preuve, fait une page test.php et fous-y Code :
Code :
$erreur[] = "<script type=\"text/javascript\">document.getElementById('".$champ."').innerHTML = '".$_POST[$champ]."'</script>";
__________________
Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi. - Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre
|
||
|
00
|
|
|
#20 | ||
|
Membre éprouvé
![]() Guillaume Développeur Web Inscription : décembre 2007 Messages : 353 ![]() |
Preuve encore plus flagrante que ça marche:
Code :
__________________
Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi. - Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre
|
||
|
00
|
Copyright © 2000-2012 - www.developpez.com