Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/06/2011, 10h57   #1
Invité régulier
 
Homme
Développeur informatique
Inscription : avril 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2011
Messages : 24
Points : 6
Points : 6
Par défaut Donnée $_POST "récurrente"

Salut tout le monde !

Voilà, j'ai un problème avec une donnée $_POST "récurrente", j'explique :
J'ai une case à chaque ligne d'un tableau qui contient un formulaire method=POST. Le formulaire appelle une page Html affichant des données en fonction de la variable $_POST. Le tout est géré par le CMS Modx mais je génère le tableau et les formulaires par mon propre code Php pur et dur via un snippet.

Le problème, c'est qu'une fois un formulaire soumis, ma variable $_POST est récurrente, c'est toujours la même quel que soit le formulaire soumis. En gros, ma variable $_POST se prend pour une variable $_SESSION.
J'ai pourtant placé des unset() plusieurs fois dans mon code, et ce n'est qu'en vidant le cache de Modx que je parviens à la supprimer.

Voici le code en question :
Formulaire sur la page1.html :
Code :
1
2
3
4
5
6
7
8
9
10
11
<?php while ($rep_offer=mysql_fetch_array($req_offer)) {
	?>
<tr>
<?php
echo "<form method='post' action='information-de-loffre.html'>
      <input type='hidden' name='info' value=".$rep_offer['id']." />
      <input type='submit' style='background: transparent; border: none;' value='Details' />
</form>";
?>
</td>
</tr>
Affichage de données sur la page2.html :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
require "functions.php";
connection();
	$idInfo = $_POST['info'];
        unset($_POST['info']);
	$req_rec = mysql_query("SELECT * FROM recrut WHERE id = ".$idInfo."");
        unset($idInfo);
	$rep_rec = mysql_fetch_array($req_rec);
	?>
	<center><a href='nos-offres-demploi.html'>Retourner &agrave; la liste des offres</a></center><br />
 
	<p>Intitul&eacute; du poste : 
		<?php if ($rep_rec['offre'] == 0) echo 'Offre1.</p><br />';
		if ($rep_rec['offre'] == 1) echo 'Offre2.</p><br />';
		if ($rep_rec['offre'] == 2) echo 'Offre3.</p><br />'; ?>
 
	<p>Date de d&eacute;but :  <?php echo $rep_rec['date']."."; ?></p>
 
<?php
deconnection();
?>
Merci d'avance.
Redbass est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 11h55   #2
En attente de confirmation mail
 
Étudiant
Inscription : avril 2011
Messages : 19
Détails du profil
Informations personnelles :
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 19
Points : 34
Points : 34
Je ne connais pas ModX par contre dans ton code et plus précisément dans ta conditions while, ne faudrait t'il pas mettre une égalité plutôt qu'une affectation?
Code :
1
2
3
4
5
6
7
8
9
10
11
<?php while ($rep_offer==mysql_fetch_array($req_offer)) {
	?>
<tr>
<?php
echo "<form method='post' action='information-de-loffre.html'>
      <input type='hidden' name='info' value=".$rep_offer['id']." />
      <input type='submit' style='background: transparent; border: none;' value='Details' />
</form>";
?>
</td>
</tr>
Ensuite faire des unset avant d'utiliser la variable en question... c'est à éviter.

Si c'est vraiment un problème de cache, y'a toujours moyen de forcer l'actualisation.

Bon weekend
dev_cisii est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 13h03   #3
Invité régulier
 
Homme
Développeur informatique
Inscription : avril 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2011
Messages : 24
Points : 6
Points : 6
J'ai édité mon code, le unset() était mal placé mais de toute façon ça ne change rien^^'
Ensuite, si je mets une égalité dans mon while, Modx m'affiche une erreur de requête.

Merci quand même !
Redbass est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2011, 13h16   #4
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 128
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 128
Points : 7 269
Points : 7 269
Bonsoir,

Essaie de mettre un echo pour vérifier l'id passé.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?php while ($rep_offer=mysql_fetch_array($req_offer)) {
	?>
<tr>
<?php
echo "<form method='post' action='information-de-loffre.html'> id: ".$rep_offer['id']."
      <input type='hidden' name='info' value=".$rep_offer['id']." />
      <input type='submit' style='background: transparent; border: none;' value='Details' />
</form>";
?>
</td>
</tr>
<?php } ?>
Code :
1
2
3
4
5
6
7
require "functions.php";
connection();
if (isset ($_POST['info'])){
        echo "id :".$_POST['info'];
}else{
        echo "aucun id passé";
}
@dev_cisii
Citation:
Envoyé par dev_cisii
<?php while ($rep_offer==mysql_fetch_array($req_offer))
FAUX.
mysql_fetch_array
Citation:
Retourne un tableau de chaînes qui correspond à la ligne récupérée ou FALSE s'il n'y a plus de lignes.
Quand il n'y a plus de ligne, ça va sortir de la boucle.

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 12h14   #5
Invité régulier
 
Homme
Développeur informatique
Inscription : avril 2011
Messages : 24
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2011
Messages : 24
Points : 6
Points : 6
Salut tout le monde,

Le problème venait du CMS Modx lui-même.
J'avais une option qui me propose pour chaque page de la placer en cache ou non.
En décochant, la valeur de $_POST est modifiée à chaque envoi de formulaire.
Tout simplement !
Redbass est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h48.


 
 
 
 
Partenaires

Hébergement Web