Page 1 sur 2

Un $_POST qui ne fonctionne pas....

Posté : 05 juin 2008, 10:28
par matthieu44
Bonjour à tous!

J'ai malheureusement un post qui ne fonctionne pas... :(
Pourtant je ne voi pas mon erreur :

extrait de la page envoyant :
<form action="module_ecriture_iptc.php" method="post">
<input size="80" name="chemin" type="text" value="<?php echo $photo ?>" maxLength="256">
</form>
extrait de la page recevant (module_ecriture_iptc.php) :

Code : Tout sélectionner

$nom = $_POST['chemin']; echo $nom;
Pourtant module_ecriture_iptc m'affiche une page vierge.... voyez vous le problème?

Merci à tous! :)

Posté : 05 juin 2008, 10:35
par guilt92
Bonjour,

Vois tu la valeur de "photo" à la base dans ton input sur la page "envoyant" ?
Comment fais tu ton submit ?
peut etre que tu as une fonction de verification qui efface la valeur...


Aussi sur les pages "recevantes" je te conseille d'utiliser les fonctions isset() ou empty() pour éviter de traiter sur des variables qui n'existerait pas...

Posté : 05 juin 2008, 10:58
par matthieu44
Merci beaucoup de ta réponse, vraiment,

car grace à
<?php
$nom = $_POST['chemin'];
   if (isset($nom)){
      echo $nom;
   }else{
      echo "vide";
   }
?>
ma page recevant affiche désormais "vide".
Pourtant, il n'y a aucune modification de $photo durant l'execution de la page envoyant.... :(
j'ai bien vérifié, mais je revérifie encore...

Pour toute hypothèse, je suis preneur! :)

Posté : 05 juin 2008, 11:01
par guilt92
Post éventuellement la totalité du formulaire...

Sinon petite remarque sur ton code :
$nom = $_POST['chemin']; 
   if (isset($nom))....
Cela veut quand même dire que tu affecte une variable $nom à quelque chose qui peut ne pas exister. Je pense qu'il est plus "logique" d'utiliser :
   if (isset($_POST['chemin'])){ 
     $nom = $_POST['chemin']; 
      echo $nom; 
   }
   else{ 
      echo "vide"; 
   } 
;)

Aussi je précise pour la suite qu'une valeur vide est considérée comme existante (par exemple si $_POST["chemin"]="" alors la fonction isset sera "true". La fonction empty() sera "true" si la variable n'existe pas ou si la variable est vide.

Donc dans ton cas si le isset() est false alors le problème vient effectivement du formulaire.

Posté : 05 juin 2008, 11:09
par matthieu44
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:

Posté : 05 juin 2008, 11:13
par vince_weed
Qu'appel tu beaucoup trop long (combien de champs)?

Posté : 05 juin 2008, 11:39
par guilt92
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...

Posté : 05 juin 2008, 13:38
par matthieu44
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! :)

Posté : 05 juin 2008, 14:02
par guilt92
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....

Posté : 05 juin 2008, 14:18
par matthieu44
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.... :(

Posté : 05 juin 2008, 14:43
par guilt92
Fais voir le code s'il te plait :)

Posté : 05 juin 2008, 15:06
par matthieu44
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! :)

Posté : 05 juin 2008, 15:28
par guilt92
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 ?

Posté : 05 juin 2008, 15:34
par matthieu44
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?

Posté : 05 juin 2008, 15:52
par guilt92
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 ?