IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

transmission d'une chaine vide à partir d'une fonction


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut transmission d'une chaine vide à partir d'une fonction
    Bonjour
    Si vous trouvez un meilleur titre, n'hésitez pas ...

    page formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $formulaire =  array("jour" => "validation_date_rencontre","mois"=>"validation_date_rencontre");
    $from = "rempli";
    VerifremplissageChamps($formulaire,$from);

    page fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function VerifremplissageChamps($formulaire,$from)
    {
    	foreach ($formulaire as $champ =>$validation)
    			{	
    				if( (!isset($_POST[$champ]) || empty($_POST[$champ])) && $from == "rempli" )
    				{
    					global $erreur;
    					array_push($erreur, "<script type=\"text/javascript\">document.getElementById('".$validation."').innerHTML += 'champ à remplir'</script>");
    				}
    				else
    				{
    					global $field;
    					global $$champ;
    					array_push($field, "<script type=\"text/javascript\">document.getElementById('".$champ."').value = '".$_POST[$champ]."'</script>");
    					$$champ = addcslashes(mysql_real_escape_string(ucwords(strtolower ($_POST[$champ]))),'%_');
    				}
    			}
    }
    Explications : j'ai recensé les champs de mon formulaire dans un array ($formulaire) pour vérifier s'ils sont vides ou pas, grâce à ma fonction. S'il y a en a un qui l'est, un message d'erreur est transmis, sinon le champ saisi est conservé dans un tableau $field.
    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 :
    Avertissement*: Une chaîne vide a été transmise à getElementById().
    Erreur*: document.getElementById("") is null
    Même si cela ne perturbe pas le fonctionnement de la fonction, j'aimerai savoir pourquoi cette chaîne vide apparaît.

    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

    Content pas content de ma réponse? N'hésitez pas votez !!

  2. #2
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    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 -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  3. #3
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    Citation Envoyé par Yoteco Voir le message
    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 !
    Normalement, on devrait pouvoir retourner les différentes variables créées grâce à return, mais je n'ai jamais réussi à le faire fonctionner. Pourquoi? je ne sais pas. je retourne des variables pour pouvoir les tester après (pour qu'elles répondent à différents critères) Pour le mot-clef, tu as entièrement raison, désolé.
    _____________________________________________
    Tours Football Club - Turonorum Civitas Libera

    Content pas content de ma réponse? N'hésitez pas votez !!

  4. #4
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Points : 2 498
    Points
    2 498
    Par défaut
    Euh ton histoire de return est effectivement bizarre... Car il n'y a pas plus simple !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function maFonction()
    {
        return 'Salut';
    }
     
    echo maFonction();
    Par contre est-ce que sa fonctionne si tu fais le changement que je t'ai demandé de faire ?
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

  5. #5
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    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

    Content pas content de ma réponse? N'hésitez pas votez !!

  6. #6
    Membre actif Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Points : 204
    Points
    204
    Par défaut for plutôt que foreach
    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"

  7. #7
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    On m'a toujours conseiller d'utiliser foreach, car elle était plus rapide ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    foreach ($formulaire as $champ =>$validation)
    			{	
    				if( (!isset($_POST[$champ]) || empty($_POST[$champ])) && $from == "rempli" )
    				{
    					array_push($erreur, "<script type=\"text/javascript\">document.getElementById('".$validation."').innerHTML += 'champ à remplir'</script>");
    					return $erreur;//j'essaye de retourner mon array
    				}
    				else
    				{
    					global $field;
    					global $$champ;
    					array_push($field, "<script type=\"text/javascript\">document.getElementById('".$champ."').value = '".$_POST[$champ]."'</script>");
    					$$champ = addcslashes(mysql_real_escape_string(ucwords(strtolower ($_POST[$champ]))),'%_');
    				}
    			}
    C'est bien comme ça que l'on utilise return? J'ai tout essayer, je n'ai pas réussi
    Merci d'avance
    _____________________________________________
    Tours Football Club - Turonorum Civitas Libera

    Content pas content de ma réponse? N'hésitez pas votez !!

  8. #8
    Membre confirmé Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Points : 540
    Points
    540
    Par défaut
    essaye avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $erreur[] = "<script type=\"text/javascript\">document.getElementById('".$champ."').value = '".$_POST[$champ]."'</script>";
    plutôt que array_push() pour voir. Sinon oui oui, c'est bien comme ça qu'on utilise return.
    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

  9. #9
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $formulaire =  array("jour" => "validation_date_rencontre","mois"=>"validation_date_rencontre");
    $from = "rempli";
    VerifremplissageChamps($formulaire,$from);
    
    print_r($erreur); //est vide
    _____________________________________________
    Tours Football Club - Turonorum Civitas Libera

    Content pas content de ma réponse? N'hésitez pas votez !!

  10. #10
    Membre confirmé Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Points : 540
    Points
    540
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $erreur[] = htmlentities("<script type=\"text/javascript\">document.getElementById('".$champ."').value = '".$_POST[$champ]."'</script>");
    Et en version plus "propre":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $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

  11. #11
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    Citation Envoyé par radicaldreamer Voir le message
    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.
    Si c'est interpréter pourquoi cela ne change pas les div? J'utilise pourtant foreach couplé à un echo pour faire afficher le javascript.

    Par contre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $erreur[] = "<script type=\"text/javascript\">document.getElementById('".$champ."').value = '".$_POST[$champ]."'</script>";
    me renvoi toujours une chaine vide à a fin ...
    _____________________________________________
    Tours Football Club - Turonorum Civitas Libera

    Content pas content de ma réponse? N'hésitez pas votez !!

  12. #12
    Membre confirmé Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Points : 540
    Points
    540
    Par défaut
    J'ai testé exactement le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $erreur[] = "<script type=\"text/javascript\">document.getElementById('".$champ."').value = '".$_POST[$champ]."'</script>";
    Et ça fonctionne. certes c'est "vide" comme tu dis. Mais ça ne l'est pas... c'est pas "vide" c'est "non affiché"... Affiche la source de ta page après le print_r($erreur); tu verras...

    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

  13. #13
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.forms['form_nom'].elements['element_nom'].value = 'Une valeur';
    Par contre, si le but est de modifier le contenu d'une DIV, il faudrait plutôt faire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementById('UnID').innerHTML = 'Contenu de la DIV';
    En somme, ...blablabla.value recherche l'attribut VALUE de l'élément que l'on tente d'atteindre et de changer sa valeur, et non le contenu entre la balise.

    En gros, ne pas confondre ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" name="un_nom" value"Une valeur" />
    et ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <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]

  14. #14
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    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).
    Je serai très heureux d'apprendre comment changer le contenu d'une div en passant uniquement par php, sans JavaScript. J'ai cherché (surement mal), mais je n'ai pas trouvé)

    Citation Envoyé par RunCodePhp Voir le message
    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).
    Quand je passe par le serveur, je vérifie tout d'un coup, la forme et le fond ( donc interrogation de la BDD) Je ne fais pas de vérification
    _____________________________________________
    Tours Football Club - Turonorum Civitas Libera

    Content pas content de ma réponse? N'hésitez pas votez !!

  15. #15
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 383
    Points : 10 411
    Points
    10 411
    Par défaut
    Citation Envoyé par ledisciple Voir le message
    1/ Je serai très heureux d'apprendre comment changer le contenu d'une div en passant uniquement par php, sans JavaScript. J'ai cherché (surement mal), mais je n'ai pas trouvé)

    2/ Quand je passe par le serveur, je vérifie tout d'un coup, la forme et le fond ( donc interrogation de la BDD) Je ne fais pas de vérification
    1/ ??? ça sert à quoi php sinon de faire afficher finalement du contenu dans des div ?

    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.

  16. #16
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    Citation Envoyé par ABCIWEB Voir le message
    1/ ??? ça sert à quoi php sinon de faire afficher finalement du contenu dans des div ?
    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

    Content pas content de ma réponse? N'hésitez pas votez !!

  17. #17
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Citation Envoyé par ledisciple
    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 ?
    Comment fait tu alors pour distinguer un lien plutôt qu'un autre ?
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    <?php
    // PARTIE TRAITEMENTS (vérif formulaire)
    // On initialise les données nécessaires
    $login = '';
    $pass = '';
    $erreur = FALSE;
    $msg_erreur = array();
     
    if (isset($_POST['envoyer'], $_POST['login'], $_POST['pass'])) {
        $login = $_POST['login'];
        $pass = $_POST['pass'];
     
        // On vérififie que la personne existe dans la BDD table "users"
        // SELECT COUNT(*) AS total, login, pass FROM users WHERE login= $login && pass = $pass
        $user = mysql_fetch_array($rs_user);
     
        if ((int)$user['total'] > 0) {
            // OK, le user existe : Partie identification
            // ... etc ...
        }
        else {
            $erreur = TRUE;
            $msg_erreur[] = 'Veuillez saisir une identification valide.';
        }
    }
     
     
     
    // PARTIE HTML (message d'erreurs / formulaire)
    // On ré-insert les données en cas d'erreur
    ?>
    <!DOCTYPE ...etc...>
    <html>
    <head>
        <title>IDENTIFICATION</title>
    </head>
    <body>
    <?php
    if ($erreur === TRUE && !empty($msg_erreur)) {
        echo '--- ERREUR ---<br />';
        foreach ($msg_erreur as $msg) {
            echo $msg.'<br />';
        }
    }
    ?>
     
    <form name="form_login" action="indentification.php" method="post">
        <input type="text" name="login" value="<?php echo $login ?>" /><br />
        <input type="text" name="pass" value="<?php echo $pass ?>" /><br />
        <input type="submit" name="sub" value="envoyer" />
    </form>
     
    </body>
    </html>
    Tout ceci n'est qu'un exemple (pas testé), mais malgré tout, toutes les vérifications ce font coté serveur.
    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]

  18. #18
    Membre éclairé Avatar de ledisciple
    Homme Profil pro
    observateur de nuage niveau 2.3
    Inscrit en
    Août 2008
    Messages
    860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : observateur de nuage niveau 2.3

    Informations forums :
    Inscription : Août 2008
    Messages : 860
    Points : 723
    Points
    723
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    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.

    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 ) génère un message d'erreur dans une div situer à côté du input sans passé par javascript.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <div class ="contenaire_form">
    		<div class="champ_area">
    			Numéro : <input name="numrencontresaisie" id="numrencontresaisie" onchange="VerifNumRencontre()"  size="8" type="text" value="" maxlength="8" />
    		</div>
    		<div class="validation_form_javascript" id="validation_num_rencontre">message d'erreur éventuel</div>
    	</div>
    Je sais maintenant que c'est impossible
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    array_push($field, "<script type=\"text/javascript\">document.getElementById('".$champ."').value = '".$_POST[$champ]."'</script>");
    En tout cas merci beacoup à tous
    _____________________________________________
    Tours Football Club - Turonorum Civitas Libera

    Content pas content de ma réponse? N'hésitez pas votez !!

  19. #19
    Membre confirmé Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Points : 540
    Points
    540
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
      $erreur[] = '<script type="text/javascript">alert("lol");</script>';
      print_r($erreur);
    ?>
    Maintenant pour ta ligne $erreur[], met celle ci et fait un return de erreur[]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $erreur[] = "<script type=\"text/javascript\">document.getElementById('".$champ."').innerHTML = '".$_POST[$champ]."'</script>";
    Et test pour voir.
    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

  20. #20
    Membre confirmé Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Points : 540
    Points
    540
    Par défaut
    Preuve encore plus flagrante que ça marche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     <div id="lol">
     TRUCMUCHE
     </div>
     
    <?php
      $erreur[] = '<script type="text/javascript">window.document.getElementById("lol").innerHTML = "lol";</script>';
      echo $erreur[0];
    ?>
    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

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Extraction d'une adresse email à partir d'une chaine - Java
    Par Forkeep dans le forum Général Java
    Réponses: 8
    Dernier message: 22/04/2010, 14h29
  2. Réponses: 4
    Dernier message: 18/03/2009, 08h46
  3. Réponses: 6
    Dernier message: 08/08/2008, 11h20
  4. Retrouver la chaine originale à partir d'une chaine md5
    Par othmane126 dans le forum Langage
    Réponses: 6
    Dernier message: 14/05/2008, 13h45
  5. Réponses: 2
    Dernier message: 06/02/2008, 22h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo