Php "automatique" d'un formulaire

Résolu
maxhazard
Messages postés
6
Date d'inscription
lundi 19 décembre 2011
Statut
Membre
Dernière intervention
28 décembre 2011
- 18 juin 2009 à 17:57
cs_TropNul
Messages postés
340
Date d'inscription
dimanche 18 septembre 2005
Statut
Membre
Dernière intervention
22 octobre 2009
- 19 juin 2009 à 21:35
Bonjour à tous

Je suis débutant sur php et je bloque sur un point qui vous paraitra peut être facile(enfin je pense).
Je cherche à récolter les réponses saisies sur des formulaires par la méthode post ( beaucoup même ). Donc il faudrait que j'adapte le moins possible mon fichier php qui traite les reponses aux differents formulaire.

Voici 2 fonctions pour recuperer les données d'un formulaire à 5 champs
La premiere , "champs()", est la partie qui est specifique au formulaire, constituée des questions du formulaire.
La deuxieme, "reponses()", est celle qui recolte les réponses du souscrivant.
Mais la verification du contenu de chaque element de "reponses()" est decevante.
En fait ma question est peux t'on reconstituer le nom d'une variable (ici $_POST['nom'] par exemple) pour ensuite voir ce qu'elle contient? (c'est du  francais ?)

Voila comment je m'y suis pris:

function champs()
    {       
           
            $champs=array();                          // voici un la fontion champs specifique au formulaire qui demande
            $champs[0]='nom';                        //le nom, le prenom, le pseudo, le sexe,le mot de passe ( 5 champs donc)
            $champs[1]='prenom';
            $champs[2]='pseudo';
            $champs[3]='sexe';
            $champs[4]='mot_de_passe';
            return $champs or die(mysql_error());;
    }
   
    function reponses($champs)
    {       
            $reponses = array();
            $nombrechamps=count($champs);
            for($i=0;$i<$nombrechamps;$i++)
            {           
            $reponses[$i] = '$_POST['.$champs[$i].']';            //ici a partir de la valeur du champs du formulaire                                                                                                 //je recrée le nom de la variable qui est envoyé par le     //formulaire
            $transit="$reponses[$i]";                                         //tentative infructueuse pour recuperer la valeur de $_post
            $reponses[$i] = "$transit";                                     
            echo($reponses[$i]);
            }
        return $reponses or die(mysql_error());
    }
Je vous remercie si vous pouvez m'aider et aussi aux autres qui font bien fonctionner ce site super .

3 réponses

cs_TropNul
Messages postés
340
Date d'inscription
dimanche 18 septembre 2005
Statut
Membre
Dernière intervention
22 octobre 2009

18 juin 2009 à 21:01
Bonjour,

Tu peux remplacer

$champs[0]='nom';                        //le nom, le prenom, le pseudo, le sexe,le mot de passe ( 5 champs donc)
            $champs[1]='prenom';
            $champs[2]='pseudo';
            $champs[3]='sexe';
            $champs[4]='mot_de_passe';

par
$champs (0> 'nom', 1 => 'prenom', 2 => 'pseudo', 3 => 'sexe', 4 => 'mot_de_passe');

et après tu peux parser directement avec un foreach :

reponses = array();
foreach ($champs as $cle => $champ) {
  reponses[$cle]=$_POST['.$champ.'];
}
return reponses;

Normalement, ça devrait fonctionner. Je n'ai pas eu le temps tester. Désolé.

Cordialement

nb : Je n'ai pas compris le " or die(mysql_error());; " lors de chaque return...
3
cs_TropNul
Messages postés
340
Date d'inscription
dimanche 18 septembre 2005
Statut
Membre
Dernière intervention
22 octobre 2009

19 juin 2009 à 21:35
De rien.

nb : dans le but d'aider un maximum de gens et pour changer l'état de ce thread, peux-tu cliquer sur "réponse acceptée"

Cordialement
3
maxhazard
Messages postés
6
Date d'inscription
lundi 19 décembre 2011
Statut
Membre
Dernière intervention
28 décembre 2011

19 juin 2009 à 16:20
Merci à toi Tropnul c'est bien plus simple et surtout ça fonctionne!
Mise à part la declaration de reponses en array qui n'est pas necessaire dans ma version.
Ok donc pour les tableaux c'est foreach et pas for ^^' c'est mieux.
0