Problème envoi données via formulaire

Mammouth du PHP | 531 Messages

17 oct. 2007, 12:25

Bonjour,

Je butte sur un truc de débutant voire pire :lol:
Depuis que j'ai mis $_POST['action'] pour récupérer ma variable envoyé par Action du formulaire, plus rien ne marche.
Pour débugger j'ai mis un echo 'toto', qui évidement n'affiche pas toto...
Pourtant mon formulaire est en POST donc je ne vois pas le problème...
switch($_POST['action']) {
case 'ajout' :
echo 'toto';
  $alerte= champs_page($champsvides_page,$_POST['nom'],$_POST['lien']); // APPEL DE LA FONCTION DE TEST DES CHAMPS VIDES
  if (empty($alerte)) { // SI PAS DE MESSAGE ERREUR, ENREGISTREMENT
	 $req_ajout= mysql_query("INSERT INTO bloom_pages (id,nom,contenu,nom_lien,pos_lien,visible) VALUES ('','{$_POST[nom]}','{$_POST[elm1]}','{$_POST[nom_lien]}','{$_POST[pos_lien]}','{$_POST[visible]}')");
	}

Code : Tout sélectionner

<form method="post" action="administration.php?page=pages&action=ajout"> <p><label>Nom de la page : </label><input type="text" name="nom" maxlength="25" /></p> <p><label>Contenu : </label></p> <p class="alaligne"><textarea id="elm1" name="elm1" rows="35" cols="70"><p></p></textarea></p> <p><label>Nom du lien : </label><input type="text" name="nom_lien" maxlength="50" /></p> <p><label>Position du lien : </label> <select name="pos_lien"> <?php for($i=0; $i<51; $i++) { echo '<option value="'.$i.'">'.$i.'</option>'; } ?> </select> Positions déjà utilisés : <?php echo implode(',',$pos_liens); ?> </p> <p><input type="submit" value="OK" /></p> </form>

ViPHP
ViPHP | 2287 Messages

17 oct. 2007, 12:32

Tu mélanges un peu tout là. ton erreur se situe ici :

Code : Tout sélectionner

<form method="post" action="administration.php?page=pages&action=ajout">
Vu que tu essayes d'envoyer la variable en GET, pas besoin de la chercher dans $_POST en php, tu ne la trouveras pas :-)

la solution passerait plutôt par un champ caché dans le formulaire :

Code : Tout sélectionner

<input type="hidden" name="action" value="ajout" />
De cette manière, ta variable arrivera bien là ou tu l'attends.
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Mammouth du PHP | 531 Messages

17 oct. 2007, 12:44

Oui en fait je me suis mélangé les pinceaux.
Et la c'est pareil sur une fonction :

$champsvides_page= 'blabla'

$alerte= champs_page($champsvides_page,$_POST['nom'],$_POST['lien']); // APPEL DE LA FONCTION DE TEST DES CHAMPS VIDES

function champs_page($champsvides_page) { // VERIFICATIONS DES CHAMPS VIDES
  if (empty($_POST['nom']) || empty($_POST['nom_lien'])) {
			$alerte= $champsvides_pages;
			return $alerte;
  }
}

echo $alerte;
Je comprend pas pourquoi j'ai écris ce genre de chose. je passe toutes les variables quand j'appelle la fonction
Et dans la fonction je fait : function champs_page($champsvides_page)

Bref nimporte quoi. le soucis c'est que à un endroit ça marche, je me suis dit bon ben y'a pas d'erreur mais à un autre endroit ça marche pas... du coup je sais pas si c'est faux ou juste

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 oct. 2007, 12:57

A noter qu'il n'est pas recommandé d'utiliser le nom "action" pour un champ d'un formulaire html ... la confusion avec l'attribut "action" du formulaire (humainement mais également javascriptement si tu venais à faire appel à "document.formulaire.action" )

De la même manière, je trouve pas judicieux de mélanger données en GET et en POST dans un formulaire. Mieux vaut passer les paramètres de l'url dans des champs hidden pour tout récupérer de la même manière :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 531 Messages

17 oct. 2007, 14:53

A noter qu'il n'est pas recommandé d'utiliser le nom "action" pour un champ d'un formulaire html ... la confusion avec l'attribut "action" du formulaire (humainement mais également javascriptement si tu venais à faire appel à "document.formulaire.action" )

De la même manière, je trouve pas judicieux de mélanger données en GET et en POST dans un formulaire. Mieux vaut passer les paramètres de l'url dans des champs hidden pour tout récupérer de la même manière :)
Ayé je modifi tout ça.

Par contre j'ai un problème : On peut passer des argument provenant d'une formulaire dans une fonction ?
$alerte= champs_page($champsvides_page, $_POST['nom'], $_POST['nom_lien']);

function champs_page($champsvides_page, $_POST['nom'], $_POST['nom_lien']) { // VERIFICATIONS DES CHAMPS VIDES
  if (empty($_POST['nom']) || empty($_POST['nom_lien'])) {
			$alerte= $champsvides_pages;
			return $alerte;
  }
Ce code me retourne une erreur Parse error: syntax error, unexpected '[', expecting ')' in... :shock:

d0m
Mammouth du PHP | 1141 Messages

17 oct. 2007, 14:57

la déclaration de ta fonction est fausse :

tu définis le 2e et 3e paramètres comme des tableau $_POST alors qu'il faut les définir comme des variables.
C'est dans l'appel à la fonction que tu peux utiliser $_POST.
$alerte= champs_page($champsvides_page, $_POST['nom'], $_POST['nom_lien']);

function champs_page($champsvides_page,$nom, $nom_lien) { // VERIFICATIONS DES CHAMPS VIDES
  if (empty($nom) || empty($nom_lien)) {
            $alerte= $champsvides_pages;
            return $alerte;
  }

Mammouth du PHP | 531 Messages

17 oct. 2007, 15:00

la déclaration de ta fonction est fausse :

tu définis le 2e et 3e paramètres comme des tableau $_POST alors qu'il faut les définir comme des variables.
C'est dans l'appel à la fonction que tu peux utiliser $_POST.
$alerte= champs_page($champsvides_page, $_POST['nom'], $_POST['nom_lien']);

function champs_page($champsvides_page,$nom, $nom_lien) { // VERIFICATIONS DES CHAMPS VIDES
  if (empty($nom) || empty($nom_lien)) {
            $alerte= $champsvides_pages;
            return $alerte;
  }
Ah ok je comprend
J'ai lu un chapitre sur les fonctions mais rie nne vaut une explication claire :wink:

Eléphant du PHP | 53 Messages

17 oct. 2007, 19:31

Merci pour cette bonne adresse je lis le site et je commence a comprendre le Regex :)

Merci
www.theitalianblog.com tout pour Nokia Symbian

Mammouth du PHP | 531 Messages

17 oct. 2007, 19:35

Merci pour cette bonne adresse je lis le site et je commence a comprendre le Regex :)

Merci
Ca fait deux fois que je vois que des post se balladent sur des mauvais topic. Y'a pas comme une C.....E dans le paté ? :D