Un $_POST qui ne fonctionne pas....

Eléphanteau du PHP | 24 Messages

05 juin 2008, 10:28

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! :)
Galère en php....

Mammouth du PHP | 1353 Messages

05 juin 2008, 10:35

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...
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphanteau du PHP | 24 Messages

05 juin 2008, 10:58

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! :)
Galère en php....

Mammouth du PHP | 1353 Messages

05 juin 2008, 11:01

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.
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphanteau du PHP | 24 Messages

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:
Galère en php....

Eléphant du PHP | 67 Messages

05 juin 2008, 11:13

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

Mammouth du PHP | 1353 Messages

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...
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphanteau du PHP | 24 Messages

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! :)
Galère en php....

Mammouth du PHP | 1353 Messages

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....
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphanteau du PHP | 24 Messages

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.... :(
Galère en php....

Mammouth du PHP | 1353 Messages

05 juin 2008, 14:43

Fais voir le code s'il te plait :)
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphanteau du PHP | 24 Messages

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! :)
Galère en php....

Mammouth du PHP | 1353 Messages

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 ?
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphanteau du PHP | 24 Messages

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?
Galère en php....

Mammouth du PHP | 1353 Messages

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 ?
Tell me and I forget. Teach me and I remember. Involve me and I learn.