Récupération variables POST Impossible

Bonjour,

C'est la deuxième fois que je post un problème ici, parce que là je bloque complètement.
J'ai un simple formulaire HTML en method post, mais sur le PHP derrière l'action, impossible de récupérer les variables envoyées via méthode post. En effet elle sont complètement vide.

Voici mon code HTML - Je ne mets pas les lignes de code qui sont au milieu sauf un exemple d'un de mes champs input et le bouton submit :

<form id="form_sendDemande" action="control/control_user.php?ac=sendDemande" onsubmit="return verifField()" method="post" >
      <input name="motif" type="text" id="motif" size="40" class="demande_value"/>
      <input type="submit" name="submit" id="submit" value="Envoyer la demande" class="Button" />
</form>


La fonction javascript (le champs group existe mais je ne vous l'ai pas mis au dessus.) :

function verifField()
{
	var ret = true;
	
	if(document.getElementById('group').value == '0')
	{
		alert('Veuillez sélectionner votre service');
		document.getElementById('group').focus();
		ret = false;
	}
	else if(document.getElementById('motif').value == '')
	{
		alert('Veuillez indiquer le motif de votre demande');
		document.getElementById('motif').focus();
		ret = false;
	}
	
	return ret;
}


Le traitement PHP associé :

<?php
echo 'motif: '.$_POST['motif'].' - ac: '.$_GET['ac'];
?>


Et voilà ce qu'il m'affiche :
motif: - ac: sendDemande

J'ai essayé d'enlever la vérification javascript, de même avec le paramètre ac sur l'action, j'obtient toujours le même résultat.

Il n'y a que ce formulaire sur la page j'ai vérifié la source généré.
Il n'y qu'un seul bouton de type submit sur la page, celui que je vous est collé.

Si vous souhaitez que je vous donne plus d'informations demandez.
Configuration: Windows 2000
Internet Explorer 6.0

8 réponses

  • Votes
  • Date
  • Date décroissante
  1. salut,
    bah écoute, de mon côté j'ai essayé ton code tel quel et je récupère bien la valeur de l'input dans le fichier...

    donne nous le code complet de tes deux fichiers (celui du formulaire et le php qui le traite) pour voir...
    1. En le testant séparément du site, ça marche également de mon coté.

      Le fichier php est complet. J'ai tout supprimé pour laisser cette unique ligne pour les tests.
      Je vais mettre le code html de la page complète, mais c'est un peu long pour un copié collé. Je vous l'aurez bien uploadé quelque part mais c'est impossible ici.

      <?php
      $groupList = new GroupList();
      $groupList->selectAll();
      
      $categoryList = new CategoryList();
      $categoryList->selectAll();
      
      /**********************************/
      /* A enlever dans les conditions réelles. */
      //$_SESSION['realname'] = 'STAGETEST';
      //$_SESSION['firstname'] = '';
      /* A enlever dans les conditions réelles. */
      /**********************************/
      ?>
      
      <!-- EN-TETE DE LA PAGE -->
      <div id="header_page">
      <table width="100%" border="0" cellspacing="1" cellpadding="0">
      	<tr >
      		<td align="left" width="70%">
      			<span class="titre_pages">Applications locales </span>
      		</td>
      		<td align="right" width="30%">
      			<input type="button" class="Button" value="Retour aux demandes" id="return" name="return" onclick="redirect('?p=DemandeIntervention')"/>
              </td>
      	</tr>
      </table>	
      </div>
      
      <!-- BLOC CONTENANT LE FORMULAIRE D'ENVOI DE LA DEMANDE  -->
      <div id="send_demande">
      <fieldset class="padding_fieldset">
      <legend class="red">Demande d'intervention Informatique</legend>
      <form id="form_sendDemande" action="control/control_user.php?ac=sendDemande" onsubmit="return verifField()" method="post" >
      <table width="100%" border="0" cellspacing="1" cellpadding="0">
        <tr>
          <td width="15%" height="25" align="left" valign="middle"><span class="demande_label">Demandeur :</span></td>
          <td align="left" valign="middle">
              <span class="demande_value"><?php echo $_SESSION['realname']; ?></span>&nbsp;
              <span class="demande_value"><?php echo $_SESSION['firstname']; ?></span>
          </td>
        </tr>
        <tr>
          <td height="20" align="left" valign="middle"><span class="demande_label">Service :</span>&nbsp;<span class="red">*</span></td>
          <td colspan="2" align="left" valign="middle">
          <div id="groupList_contener">
          <select name="group" id="group" class="demande_value">
          	<option value="0">Selectionner...</option>
      		<?php
                  foreach($groupList->getGroups() as $group)
                  {
                      ?>
                      <option value="<?php echo $group->getID(); ?>"><?php echo $group->getName().' - '.$group->getComments(); ?></option>
                      <?php
                  }
              ?>
          </select>
          <span class="demande_label">
          	(<?php echo sizeof($groupList->getGroups()); ?>)
          </span>
          </div>
          </td>
        </tr>
        <tr>
          <td height="20" align="left" valign="middle">&nbsp;</td>
          <td colspan="2" align="left" valign="middle"><img src="template/default/img/arrow_ltor.gif" alt="Recherche de service"/>&nbsp;<span class="demande_label">Ou rechercher un service :</span>&nbsp;<input type="text" name="rechGroup" id="rechGroup" class="demande_value" onkeyup="rechGroupList()"/></td>
        </tr>
        <tr>
          <td colspan="3" align="center" height="30"><hr class="separator"/></td>
          </tr>
      </table>
      <table width="100%" border="0" cellspacing="1" cellpadding="0">
        <tr>
          <td width="28%" height="20" align="left" valign="middle"><span class="demande_label">Motif de la demande :</span>&nbsp;<span class="red">*</span></td>
          <td align="left" valign="middle">
            <input name="motif" type="text" id="motif" size="40" class="demande_value"/>
          </td>
        </tr>
        <tr>
          <td height="20" align="left" valign="middle"><span class="demande_label">Mise en place souhaité :</span></td>
          <td align="left" valign="middle"><input type="text" name="date_miseEnPlace" id="date_miseEnPlace" class="demande_value" size="40" /></td>
        </tr>
        <tr>
          <td height="20" align="left" valign="middle"><span class="demande_label">Résumé de la demande :</span></td>
          <td align="left" valign="middle">&nbsp;</td>
        </tr>
        <tr>
          <td colspan="2" align="left" valign="middle"><textarea name="contents" id="contents" cols="80" rows="4" class="demande_value"></textarea>
          </td>
          </tr>
        <tr>
          <td height="30" align="left" valign="middle">
            <input type="submit" name="submit" id="submit" value="Envoyer la demande" class="Button" />
          </td>
          <td align="left" valign="middle">&nbsp;</td>
        </tr>
      </table>
      <br />
      <span class="red">* : Champs obligatoires</span>
      </form>
      </fieldset>
      </div>
      


      Je précise que cette page est incluse dans l'index du site.
    2. En le testant séparément du site, ça marche également de mon coté.

      Le fichier php est complet. J'ai tout supprimé pour laisser cette unique ligne pour les tests.
      Je vais mettre le code html de la page complète, mais c'est un peu long pour un copié collé. Je vous l'aurez bien uploadé quelque part mais c'est impossible ici.

      <?php
      $groupList = new GroupList();
      $groupList->selectAll();
      
      $categoryList = new CategoryList();
      $categoryList->selectAll();
      
      /**********************************/
      /* A enlever dans les conditions réelles. */
      //$_SESSION['realname'] = 'STAGETEST';
      //$_SESSION['firstname'] = '';
      /* A enlever dans les conditions réelles. */
      /**********************************/
      ?>
      
      <!-- EN-TETE DE LA PAGE -->
      <div id="header_page">
      <table width="100%" border="0" cellspacing="1" cellpadding="0">
      	<tr >
      		<td align="left" width="70%">
      			<span class="titre_pages">Applications locales </span>
      		</td>
      		<td align="right" width="30%">
      			<input type="button" class="Button" value="Retour aux demandes" id="return" name="return" onclick="redirect('?p=DemandeIntervention')"/>
              </td>
      	</tr>
      </table>	
      </div>
      
      <!-- BLOC CONTENANT LE FORMULAIRE D'ENVOI DE LA DEMANDE  -->
      <div id="send_demande">
      <fieldset class="padding_fieldset">
      <legend class="red">Demande d'intervention Informatique</legend>
      <form id="form_sendDemande" action="control/control_user.php?ac=sendDemande" onsubmit="return verifField()" method="post" >
      <table width="100%" border="0" cellspacing="1" cellpadding="0">
        <tr>
          <td width="15%" height="25" align="left" valign="middle"><span class="demande_label">Demandeur :</span></td>
          <td align="left" valign="middle">
              <span class="demande_value"><?php echo $_SESSION['realname']; ?></span>&nbsp;
              <span class="demande_value"><?php echo $_SESSION['firstname']; ?></span>
          </td>
        </tr>
        <tr>
          <td height="20" align="left" valign="middle"><span class="demande_label">Service :</span>&nbsp;<span class="red">*</span></td>
          <td colspan="2" align="left" valign="middle">
          <div id="groupList_contener">
          <select name="group" id="group" class="demande_value">
          	<option value="0">Selectionner...</option>
      		<?php
                  foreach($groupList->getGroups() as $group)
                  {
                      ?>
                      <option value="<?php echo $group->getID(); ?>"><?php echo $group->getName().' - '.$group->getComments(); ?></option>
                      <?php
                  }
              ?>
          </select>
          <span class="demande_label">
          	(<?php echo sizeof($groupList->getGroups()); ?>)
          </span>
          </div>
          </td>
        </tr>
        <tr>
          <td height="20" align="left" valign="middle">&nbsp;</td>
          <td colspan="2" align="left" valign="middle"><img src="template/default/img/arrow_ltor.gif" alt="Recherche de service"/>&nbsp;<span class="demande_label">Ou rechercher un service :</span>&nbsp;<input type="text" name="rechGroup" id="rechGroup" class="demande_value" onkeyup="rechGroupList()"/></td>
        </tr>
        <tr>
          <td colspan="3" align="center" height="30"><hr class="separator"/></td>
          </tr>
      </table>
      <table width="100%" border="0" cellspacing="1" cellpadding="0">
        <tr>
          <td width="28%" height="20" align="left" valign="middle"><span class="demande_label">Motif de la demande :</span>&nbsp;<span class="red">*</span></td>
          <td align="left" valign="middle">
            <input name="motif" type="text" id="motif" size="40" class="demande_value"/>
          </td>
        </tr>
        <tr>
          <td height="20" align="left" valign="middle"><span class="demande_label">Mise en place souhaité :</span></td>
          <td align="left" valign="middle"><input type="text" name="date_miseEnPlace" id="date_miseEnPlace" class="demande_value" size="40" /></td>
        </tr>
        <tr>
          <td height="20" align="left" valign="middle"><span class="demande_label">Résumé de la demande :</span></td>
          <td align="left" valign="middle">&nbsp;</td>
        </tr>
        <tr>
          <td colspan="2" align="left" valign="middle"><textarea name="contents" id="contents" cols="80" rows="4" class="demande_value"></textarea>
          </td>
          </tr>
        <tr>
          <td height="30" align="left" valign="middle">
            <input type="submit" name="submit" id="submit" value="Envoyer la demande" class="Button" />
          </td>
          <td align="left" valign="middle">&nbsp;</td>
        </tr>
      </table>
      <br />
      <span class="red">* : Champs obligatoires</span>
      </form>
      </fieldset>
      </div>
      


      Je précise que cette page est incluse dans l'index du site.
  2. $groupList = new GroupList();
    $groupList->selectAll();

    $categoryList = new CategoryList();
    $categoryList->selectAll();


    tu utilises des classes GroupList et selectAll

    j'espère que tu fais l'include qq part dans ton script
    1. Pardon pour le double post dessus.

      Finalement il ne reste que :
      $groupList = new GroupList();
      $groupList->selectAll();
      


      L'include est fait dans la page index qui inclu la page avec mon formulaire. Donc pas de souci de ce coté là, ça marche impécable. Il me sélectionne bien tous mes enregistrements dans la base de données pour les afficher dans le select.

      Je cherche toujours, et je comprends toujours pas pourquoi post ne marche pas. Par contre en GET sa marche.
      Mais je n'ai aucune envie de passer en GET.
      1. dans ton script php essayes pour voir ce que le formulaire te renvoie exactement

        <?php
        echo '<pre>';
        print_r($_POST);
        echo '</pre>';

        ?>

        tu va obtenir un array de tous les champs postés
        1. J'ai remplacé mon gros formulaire par un petit que j'avais utilisé pour tester dans un autre dossier et qui marchait.
          Mais ça ne marche toujours pas.
          Par contre si dans l'action, je vais chercher le fichier php dans le dossier test (qui n'est pas celui du site dans lequel se trouve le formulaire) et bien là çà marche !!!

          Donc je comprends pas pourquoi POST ne marche pas dans le dossier du site et ailleur oui.

          Existe-il des choses qui pourrait empecher POST de fonctionner correctement dans le dossier du site ?

          Pour résumé, voilà ce qu'il reste :
          Index :
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          <html xmlns="http://www.w3.org/1999/xhtml">
          <head>
          <title>AHSM - Site intranet</title>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
          </head>
          <body>
              <?php
                  include_once 'template/default/sendDemande.php';
              ?>
          </body>
          </html>
          

          sendDemande.php - control.php à la racine du site avec l'index:
          <form id="form_sendDemande" method="post" action="control.php" >
          <input name="motif" type="text" id="motif" size="40" class="demande_value"/>
          <input type="submit" name="submit" id="submit" value="Envoyer la demande" class="Button">
          </form>
          

          control.php :
          <?php
          echo '<pre>'; 
          print_r($_POST); 
          echo '</pre>'; 
          ?>
          

          Résultat :
          Array
          (
          )
          1. Tout semlble ok,,juste un petit truc qui me chiffonne

            include_once 'template/default/sendDemande.php';

            et plus bas tu mets:

            sendDemande.php - control.php à la racine du site avec l'index:

            donc comment peut fonctionner ton include_once ?
            1. Je viens de faire un essai chez moi ce matin enmettant:

               include_once ('sendDemande.php');


              et les valeurs sont bien reçues avec $_POST vec tes scripts tels qu'ils sont.