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 :

$_POST non complété


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut $_POST non complété
    Bonjour,

    Je tombe sur un problème qui me laisse très perplexe : depuis un formulaire classique, j'envoie des données à un script php via la méthode post. Cependant, il n'y a que le premier champ de mon formulaire qui complète mon tableau $_POST, même si les autres ont étés remplis. La seule différence entre ce premier champ et les autres, c'est que les autres sont contenus dans une ligne de tableau qui est soumise à une visibilité conditionnelle (visibility=true ou false)par un javascript.

    Voici le début du code de mon formulaire :

    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
    echo "  <div id='hauteur45NoScroll'>
     <form name='enregEnvoiEmail' method='post' action=\"javascript:enregistrerEnvoiEmail();\">
      <table id='tcontenu'>
    	 <tr>
    		<td id='tdcontenu' width='45%'>Envoyer email de confirmation de rendez-vous*</td>
    		<td id='tdcontenu' width='45%'><input type='checkbox' name='requiredEnvoiEmail' id='envoiEmail' tabindex='4'";
     
    if($envoiEmail == 1)
     echo " checked";
     
    echo " onClick=\"monterParamEmail(document.getElementById('envoiEmail').checked);\"></td>
        <td id='tdcontenu' width='10%'>&nbsp;</td>
    	 </tr>
       <tr id='trEmail'>
    		<td id='tdcontenu' width='45%'>Adresse email d'envoi*</td>
    		<td id='tdcontenu' width='45%'><input type='text' name='requiredAdrEmail' id='adrEmail' tabindex='5'";
     
    if(!empty($adrEmail))
     echo " value='" . $adrEmail . "'";
     
    echo " onblur=\"this.style.backgroundColor = '#FFFFFF'; if(verifMail('adrEmail')) this.style.backgroundColor = '#F3C200'\"></td>
        <td id='tdcontenu' width='10%'>&nbsp;</td>
       </tr>
    ...
    Voici le début de mon code dans le script de traitement de mon formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $tab['envoiEmail'] = $_POST['envoiEmail'];
    $tab['adrEmail'] = $_POST['adrEmail'];
    $tab['adrEmailRep'] = $_POST['adrEmailRep'];
    $tab['sujetEmail'] = $_POST['sujetEmail'];
    $tab['msgEmail'] = $_POST['msgEmail'];
    Lorsque j'y fais un var_dump($_POST), j'obtiens array(1) { ["envoiEmail"]=> string(1) "1" }

    Quelqu'un aurait une idée?

    Merci d'avance

  2. #2
    Membre chevronné Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Par défaut
    tu as bien une balise </form> :-)

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    Bonjour et merci de m'avoir rejoint dans cet univers mystérieux...

    Oui, j'ai bien cette balise en fin de formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    echo "</textarea></td>
    		 <td id='tdcontenu' width='10%'><input type='submit' value='Enregistrer'></td>
    	  </tr>
    	 </table>
     </form>
    </div>";
    .

    Petite remarque au passage : j'ai dû utiliser la propriété visibility plutôt que display (ce qui ne m'arrange pas) car, en utilisant le display, ma mise en page explosait lors de l'affichage des lignes (toutes mes cellules se mettaient au niveau de la première cellule de la dernière ligne non soumise au display.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    Je viens de faire un test en désactivant le script qui agit sur la visibilité des lignes, mais ça ne change rien. Donc, apparemment, le problème ne vient pas de là.

  5. #5
    Membre chevronné Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Par défaut
    Comme ca je vois pas grand chose...
    Il faudra debugguer pas a pas ...
    Essaye ton form sans js puis dump

    sinon tu peux poster le code html genere pour voir plus clair.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    J'ai déjà fait tout ça...

  7. #7
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    Pour info, voici une partie du code source généré :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     <form name="enregEnvoiEmail" method="post" action="javascript:enregistrerEnvoiEmail();">
      <table id="tcontenu">
    	 <tbody><tr>
    		<td id="tdcontenu" width="45%">Envoyer email de confirmation de rendez-vous*</td>
    		<td id="tdcontenu" width="45%"><input name="requiredEnvoiEmail" id="envoiEmail" tabindex="4" onclick="monterParamEmail(document.getElementById('envoiEmail').checked);" type="checkbox"></td>
        <td id="tdcontenu" width="10%">&nbsp;</td>
    	 </tr>
       <tr style="visibility: visible;" id="trEmail">
     
    		<td id="tdcontenu" width="45%">Adresse email d'envoi*</td>
    		<td id="tdcontenu" width="45%"><input name="requiredAdrEmail" id="adrEmail" tabindex="5" onblur="this.style.backgroundColor = '#FFFFFF'; if(verifMail('adrEmail')) this.style.backgroundColor = '#F3C200'" type="text"></td>
        <td id="tdcontenu" width="10%">&nbsp;</td>
    	 </tr>

  8. #8
    Membre chevronné Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Par défaut
    pas de value a tes input et une balise fermante <input />... Je penses pas que ca vienne de la mais bon...

    sinon j'avoue ne rien voir dans ton html generer, mise a part un possible bug dans tes fonction js je vois pas dsl :-(

  9. #9
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    Ce que je trouve étrange c'est que $_POST['envoiEmail'] soit défini.

    Ce devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $tab['envoiEmail']	= $_POST['requiredEnvoiEmail'];	// <input name="requiredEnvoiEmail"	...>
    $tab['adrEmail']	= $_POST['requiredAdrEmail'];	// <input name="requiredAdrEmail"	...>
    // etc..
    Non ?

  10. #10
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    Concernant les value, c'est normal vu que l'affichage de celle-ci est conditionné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(!empty($adrEmail))
     echo " value='" . $adrEmail . "'";
    Par contre, je ne vois pas ce que tu veux dire par "et une balise fermante <input />"...

    En ce qui concerne le js, ca ne change rien, qu'il soit exécuté ou non (j'avais fais le test en ne l'éxécutant pas). En voici d'aiileurs le code :

    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
    function monterParamEmail(valeur)
     {
      if(valeur)
       {
        document.getElementById('trEmail').style.visibility = 'visible';
        document.getElementById('trEmailRep').style.visibility = 'visible';
        document.getElementById('trSujetEmail').style.visibility = 'visible';
        document.getElementById('trMsgEmail').style.visibility = 'visible';
       }
      else
       {
        document.getElementById('trEmail').style.visibility = 'hidden';
        document.getElementById('trEmailRep').style.visibility = 'hidden';
        document.getElementById('trSujetEmail').style.visibility = 'hidden';
        document.getElementById('trMsgEmail').style.visibility = 'hidden';
       }
     }

  11. #11
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    Mille coups de fouet pour moi!!!

    C'est un code que je retravaille et auquel je n'avais plus touché depuis longtemps.

    L'action de ce formulaire pointe vers une fonction javaScript et non un fichier php. En fait, le fichier php de traitement est appelé par cette fonction js (AJAX) et, dans cette fonction AJAX, je ne récupère pas les valeurs ni ne les envoie vers le script Php.!

  12. #12
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    C'était bien cela...

    Merci beaucoup pour votre aide et désolé...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Binding sur hierarchie non complète
    Par adrienfehr dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 13/03/2009, 16h32
  2. [MySQL] Requête MySQL non complétée
    Par accoustic dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 09/04/2007, 23h36
  3. [Tableaux] pb avec isset et formulaire non complété
    Par PuppeT mAsTer dans le forum Langage
    Réponses: 5
    Dernier message: 11/06/2006, 13h31
  4. [Regex] reconnaitre une chaîne non complète
    Par EdoBvD dans le forum Collection et Stream
    Réponses: 19
    Dernier message: 13/07/2004, 18h14
  5. [TComPort] -> Pb de trame non complète ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 2
    Dernier message: 09/04/2004, 15h22

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