Un $_POST qui ne fonctionne pas....

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Un $_POST qui ne fonctionne pas....

par guilt92 » 05 juin 2008, 16:28

:)

oublie pas le tag "résolu".

Sinon conseil pour le future, hésite pas à utiliser ce code dans une page "qui recoit des valeurs"
<pre>
<?php echo var_dump($_POST);?>
</pre>
tu verras tout ce que ta page recoit...

par matthieu44 » 05 juin 2008, 16:20

euh comment dire....

Tu es un Dieu! :D Moi qui me brulais les yeux a vérifier chaque parenthèse, chaque guillemet manquante, je ne regarde même pas leur contenu....

Honte à moi, gloire à toi (chacun son truc)

MERCi ça fonctionne! :)


P.S.: quelqu'un a t il une corde ? :x

par guilt92 » 05 juin 2008, 16:13

j'ai compris ! :d

<input size="80" name="description " type="text" value="<?php echo $legende; ?>" maxLength="64">

Le problème c'est que ton nom c'est "description " ce qui est différent de "description"

tu mets un espace apres les noms avant la fin du " donc $_POST["description"] n'existe pas, par contre $_POST["description "] oui....

tu fais ca un peu partout... si tu corriges les name="" en enlevant les espace ca devrait beaucoup mieux marcher...

exemple : si tu fais var_dump($_POST) sur ta page de résultat tu verras toutes tes valeurs (et les indices et le type...)

Aussi au passage ton code n'est absolument pas conforme aux normes, notamment sur l'utilisation de majuscules dans les attributs (c pas maxLength c'est maxlength, pas OPTION mais option), sur les balises (non pas </br> mais <br/>, et enfin un attribut qui n'a pas de balise fermante (<form></form> balise fermante mais par exemple <input> non) doit avoir un /> à la fin

<input type="...."/>

Autant s'habituer aux normes tout de suite plutot que de corriger tout après ;)

par matthieu44 » 05 juin 2008, 16:02

oui c'est exactement ça.... :cry:

par guilt92 » 05 juin 2008, 15:52

Aussi je pense qu'il faut un "action" dans le submit pour lui dire quelle page charger non?
Le submit s'applique au formulaire dans lequel il est contenu, donc il applique l'action du <form action=""> mais lui n'a pas besoin de cet attribut.

Donc à l'heure actuelle sur la page de resultat tu as chemin = la_bonne_valeur mais pas les autres ?

par matthieu44 » 05 juin 2008, 15:34

oui d'ailleurs je viens d'essayer avec un isset, et il m'indique que les autres valeurs sont vides ( a part $_POST['chemin'])

Pourtant les valeurs ne sont pas vides! je les modifies dans les input! :evil:

C'est peut etre un probleme avec le submit dans ces cas là qui viderait les variables....?

Aussi je pense qu'il faut un "action" dans le submit pour lui dire quelle page charger non?

par guilt92 » 05 juin 2008, 15:28

A première vue rien de choquant, a part peut etre le submit.

L'attribut action n'existe pas sur un submit à ma connaissance, peut etre que ca le perturbe, puis il est toujours mieux d'utiliser des " " autour des attributs :

Code : Tout sélectionner

<input type= submit name="submit" value="Valider les données" action = "module_ecriture_iptc.php">
devrait être :

Code : Tout sélectionner

<input type="submit" name="submit" value="Valider les données"/>
Enfin de là à dire que ca va corriger le problème ça je ne sais pas...

Aussi je conseille toujours de tester avec if(isset()) la totalité des variables avant l'affectation, soit une par une soit
if(isset($_POST["variable"]) && isset($_POST["variable2"])....)
Cela étant le code fonctionne chez moi donc ca doit venir d'ailleurs... La page module_ecriture_iptc.php est bien dans le meme répertoire ? L'autre page est bien en extension .php ? Le serveur apache est actif ?

par matthieu44 » 05 juin 2008, 15:06

Le voici! :P

la page envoyant :
<?php
$titre        = '';					//IPTC -> Object Name
$auteur       = ''; 					//IPTC -> Creator
$legende      = '';					//IPTC -> Caption
$motscles     = '';					//IPTC -> keywords
$departement  = ''; 					//IPTC -> city
$region       = 'Pays de la Loire'; //IPTC -> state
$pays    	  = 'France';			//IPTC -> country
$organisme    = 'C.R.P.F. des Pays de la Loire - 44800 St Herblain'; //IPTC -> Source
$essence      = '';  				//IPTC -> special instructions
$categorie    = '';          //IPTC -> Original transmission reference
$reportage    = '';          //IPTC -> Titre
?>
Chemin image :                
<form action="module_ecriture_iptc.php" method="post">
<input size="80" name="chemin" type="text" value="<?php echo $photo; ?>" maxLength="256"></br>
Titre :
<input size="80" name="titre " type="text" value="<?php echo $titre; ?>" maxLength="64"><?php echo $titre;?></br>
Description :
<input size="80" name="description " type="text" value="<?php echo $legende; ?>" maxLength="64"></br>
Reportage :
<input size="80" name="reportage " type="text" value="<?php echo $reportage; ?>" maxLength="64"></br>
Essence :
<input size="80" name="essence " type="text" value="<?php echo $essence; ?>" maxLength="64"></br>
Catégorie : 
<SELECT size=1 name="categorie" value = "<?php echo $categorie; ?>" >
	<OPTION value="ACCUE" selected>Accueuil</OPTION>
	<OPTION value="AMBIA">Ambiance</OPTION>
	<OPTION value="REMAR">Arbres remarquables</OPTION>
	<OPTION value="BOTA">Botanique</OPTION>
	<OPTION value="TEMPE">Chablis, tempête</OPTION>
	<OPTION value="CHASS">Chasse</OPTION>
	<OPTION value="DIV">Diversification forestière</OPTION>
	<OPTION value="EQUIP">Equipement, routes</OPTION>
	<OPTION value="EXPLO">Exploitation forestière</OPTION>
	<OPTION value="FAUNE">Faune, Insectes</OPTION>
	<OPTION value="SYLV">Sylviculture</OPTION>
	<OPTION value="FILBO">Filière Bois</OPTION>
	<OPTION value="HAIE">Haie, bocage</OPTION>
	<OPTION value="QUALI">Qualité du bois</OPTION>
	<OPTION value="REUNI">Réunions, personnalités</OPTION>
	<OPTION value="PATHO">Santé des forêts, pathologie</OPTION>
	<OPTION value="STATI">Stations forestières, ripisylves</OPTION>
</SELECT></br>
Auteur : 
<input size="80" name="auteur " type="text" value="<?php echo $auteur; ?>" maxLength="64"></br>
Organisme :
<input size="80" name="organisme " type="text" value="<?php echo $organisme; ?>" maxLength="64"></br>
Département :
<input size="80" name="departement " type="text" value="<?php echo $departement; ?>" maxLength="64"></br>
Région :
<input size="80" name="region " type="text" value="<?php echo $region; ?>" maxLength="64"></br>
Pays :
<input size="80" name="pays " type="text" value="<?php echo $pays; ?>" maxLength="64"></br> 

<input type= submit name="submit" value="Valider les données" action = "module_ecriture_iptc.php"></br>

</form>

<input type="button" value="Fermer la fenêtre" onClick = "window.close()" name="button">
et la page recevant :
<?php
$titre = $_POST['titre'];
$description = $_POST['description'];
$reportage = $_POST['reportage'];
$essence = $_POST['essence'];
$categorie = $_POST['categorie'];
$auteur = $_POST['auteur'];
$organisme = 'C.R.P.F. des Pays de la Loire - 44800 St Herblain';
$departement = $_POST['département'];
$region = 'Pays de la Loire';
$pays = 'France';
$motscles = "";
	
echo "chemin = ".$nom."</br>";
echo "titre = ".$titre."</br>";
echo "description = ". $description."</br>";
echo "reportage = ". $reportage."</br>";
echo "essence = ". $essence."</br>";
echo "categorie = ". $categorie."</br>";
echo "auteur = ". $auteur."</br>";
echo "organisme". $organisme."</br>";
echo "departement = ". $departement."</br>";
echo "region = ". $region."</br>";
echo "pays = ". $pays."</br>";
?>
voila à vous de me dire ce qui cloche....

Merci en tout cas de vous pencher là dessus! :)

par guilt92 » 05 juin 2008, 14:43

Fais voir le code s'il te plait :)

par matthieu44 » 05 juin 2008, 14:18

j'ai fait comme cela,

tous les input text et submit sont dans le meme form que j'ai refermé ensuite

mais quand j'essai un echo sur les différentes valeur récupérées en POST, je ne peux qu'afficher la premiere des input.... :(

par guilt92 » 05 juin 2008, 14:02

Si toutes tes valeurs sont dans le même formulaire cela ne pose aucun problème, du moment que chacun a un attribut "name" différent.

Exemple :

Code : Tout sélectionner

<form action="module_ecriture_iptc.php" method="post"> <input type="text" name="val1"/> <input type="text" name="val2"/> <input type="text" name="val3"/> <input type="submit" value="Envoyer"/> </form>
tu peux ensuite récupérer ces valeurs avec $_POST["val1"], $_POST["val2"]...

Par contre pour récupérer des valeurs de plusieurs formulaires sur une page c'est plus compliqué, tu peux passer par des champs de type hidden qui sont cachés et inclus dans le formulaire que tu envoies enfin après ca dépend de ton besoin....

par matthieu44 » 05 juin 2008, 13:38

Je ne sais pas vraiment ce que j'ai bidouillé, mais ça marche ipec' maintentant! :?

Mon gros problème est le multi postage, je m'explique :

Est il possible avec un seul bouton de type submit de faire plusieurs POST différents, pour envoyer plusieurs valeurs différentes?

Merci! :)

par guilt92 » 05 juin 2008, 11:39

Dans ce cas crée un nouveau fichier dans le même répertoire que module_ecriture_iptc.php dans lequel tu crées simplement un formulaire comme ca :
<?php $photo = "image1.jpg";?>
<form action="module_ecriture_iptc.php" method="post"> 
<input size="80" name="chemin" type="text" value="<?php echo $photo; ?>" maxlength="256"/> 
<input type="submit" value="Envoyer"/>
</form> 
Et tu cliques sur envoyer et vois le résultat....

Si ca fonctionne ca veut dire que le probleme vient bien de la page appelante...

par vince_weed » 05 juin 2008, 11:13

Qu'appel tu beaucoup trop long (combien de champs)?

par matthieu44 » 05 juin 2008, 11:09

Tes modifications sont justes! mais toujours le même résultat...

et je ne crois pas avoir le droit de poster mon formulaire entier, il est bien trop long... :roll: