8797 sujets

Développement web côté serveur, CMS

Bonjour à tous,

J'aurais 3 questions :

J'ai un formulaire en plusieurs étapes.

1) Pour faire passer les données, il vaut mieux utiliser la méthode POST ou SESSION ?

2) Sur la premiere étape (1ere etape), le nombre de champs de texte n'est pas défini. En effet, la personne peut ajouter des champs...
Donc : pour faire passer les données comment puis je faire ? Puisque par defaut je compte utiliser $_POST[''];

3) Je rajoute des champs dans mon formulaire. Je passe à l'étape 2 (page deux). Si je fais precedent, mon formulaire s'affiche bien mais tous les champs rajoutés se sont effacés.
(Pour l'ajout de champs, j'ai utilisé la méthode : http://www.editeurjavascript.com/scripts/scripts_formulaires_3_653.php )

Merci de votre aide !! Smiley biggrin
Bonjour,

a écrit :
1) Pour faire passer les données, il vaut mieux utiliser la méthode POST ou SESSION ?


Les formulaire n'ont pas de méthode "session", il ne possède que les méthodes "post" ou "get". Pour le passage d'informations, la méthode "post" est conseillée.

a écrit :
2) Sur la premiere étape (1ere etape), le nombre de champs de texte n'est pas défini. En effet, la personne peut ajouter des champs...
Donc : pour faire passer les données comment puis je faire ? Puisque par defaut je compte utiliser $_POST[''];


Il faut que tes champs possède un attribut "name" et qu'il n'y en ai pas 2 identique :


<input type="text" name="info1" />
<input type="text" name="info2" />... etc


Du coté PHP tu les récupère par :


$info1 = $_POST["info1"];
$info2 = $_POST["info2"]; // ...etc


a écrit :
3) Je rajoute des champs dans mon formulaire. Je passe à l'étape 2 (page deux). Si je fais precedent, mon formulaire s'affiche bien mais tous les champs rajoutés se sont effacés.


C'est normal, tes champs ont été généré en javascript, le navigateur ne peut donc pas les généré par magie. Il faudrait le gérer en PHP mais apparement tu es encore trop jeune développeur pour le faire. Je te renvoi donc aux tutoriels et cours en PHP.

Cordialement,
Polo
Ok merci j'ai bien compris,

Par contre sur la partie " tu dois recuperer les données", comment puis je recuperer des données que je ne connais pas ?

Par exemple :

$info1 = $_POST["info1"];
$info2 = $_POST["info2"]; // ...etc

Mais comment savoir si y en aura 2 ou 17 ?

Tel est mon soucis, puisque l'utilisateur pourra rajouter le nombre de champs qu'il souhaite...

Merci
salut,

j'ai regardé le script que tu utilises pour rajouter des input.

bon tu utilises du js c'est pas génial, ( car certain navigateur,utlisateur peuvent ne pas avoir ).

mais j'avoue que pour la réactiviter recharger la page a chaque ajout. ça peut être un peu lent.

par contre as-tu compris comment il fonctionnait?

celui utilise un compteur qui s'incremente a chaque ajout. c'est le nbre de input Smiley cligne

il suffit au moment ou tu incrementes le compteur de mettre aussi
a jour un champ caché


var i2 = i + 1;
document.getElementById('idchampcache'). value = i2;


eventuellement si tu limites a 10 comme là fais un test pour ne pas renvoyer 11 dans certain cas. ou interpretre 11 comme valant 10 aprés.

dans le html crée un input type="hidden" avec le name et le id, que là pour l'exemple j'ai appelé idchampcache.

et tu auras le nbre de input texte dans la valeur $_POST['idchampcache'] !

même sans l'idée de champs cachés:

tu peux savoir combien d'element post on été envoyé en demandant le nombre d'element du tableau $_POST.

tu aurais pu en tiré des conclusions. a condition de n'avoir qu'un type de champ a nbre variable bien sur
Modifié par CPascal (06 Mar 2008 - 18:46)
Plus simple, tu modifie le script Javascript pour avoir ça :


<script>
function create_champ(i) {

var i2 = i + 1;

document.getElementById('leschamps_'+i).innerHTML = '<input type="file" name="fichier[]"></span>';
document.getElementById('leschamps_'+i).innerHTML += (i <= 10) ? '<br /><span id="leschamps_'+i2+'"><a href="javascript:create_champ('+i2+')">Ajouter un champs</a></span>' : '';


}
</script>


Ensuite du coté PHP tu récupère tous ça dans $_POST["fichier"] qui est un Array. Donc pour le traitement tu peux les récupérer comme ça :


// Si tu veux connaitre le nombre de fichiers
$nbFichiers = count($_POST["fichier"]);

// Tu parcours la liste des fichiers
foreach($_POST["fichier"] as $fichier)
{
  echo $fichier;
}


Voilou !

Cordialement,
Polo