Récupération variables POST Impossible

Fermé
alexkidd - 21 avril 2009 à 10:33
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 22 avril 2009 à 08:55
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.
A voir également:

8 réponses

lefadrine Messages postés 28 Date d'inscription vendredi 17 avril 2009 Statut Membre Dernière intervention 20 avril 2010 11
21 avril 2009 à 10:46
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...
0
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.
0
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.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 avril 2009 à 11:30
$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
0
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.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 avril 2009 à 11:44
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
j'obtient ceci :


Array
(
)
0
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
(
)
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
21 avril 2009 à 20:32
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 ?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
22 avril 2009 à 08:55
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.
0