Page 1 sur 1
[résolu] traiter 2 formulaires imbriqués
Posté : 28 sept. 2011, 02:19
par sam12
Bonjour à tous,
Je souhaite après qu'un upload de fichier soit effectué, afficher un formulaire (une sorte de fiche de renseignements). Le probleme est que ce formulaire est dans le isset du $_FILES.
En gros voici le code:
if(isset($_FILES['monfichier']))
{
....
if(!(in_array($extensionFichier, $extensionsAutorisees)))
{
echo "<br/>Le fichier n'a pas l'extension attendue";
}
elseif ($tailleFichier > $maxTaille)
{
echo " <br />Le fichier est trop gros";
}
else
{
echo "Votre fichier a été uploadé avec succès. Merci de remplir ce formulaire.";
?>
<form>....</form>
<?php } } ?>
Je passe les détails. Donc le formulaire étant imbriqué dans le $_FILES, je ne peux pas le traiter.
Avez-vous une solution ou plutôt une alternative à mon probleme?
Merci.
Re: traiter 2 formulaires imbriqués
Posté : 28 sept. 2011, 11:36
par Mazarini
Dans le nouveau formulaire, tu dois préciser le parametre action et traiter le formulaire dans la page PHP associée.
Le plus simple est d'ajouter un input caché "OPERATION" dans tes formulaires et de faire le traitement en fonction de sa valeur.
Re: traiter 2 formulaires imbriqués
Posté : 28 sept. 2011, 13:00
par sam12
Tout d'abord, merci pour ta réponse.
Si je comprends bien, tu veux me faire traiter sur la même page (ou une autre). Je n'ai par contre pas compris le pourquoi de l'input caché.
Si j'ai bien compris, ta solution n'est pas envisageable vu que le form est dans le if(isset($_FILES['monfichier'])) donc pour atteindre le formulaire, il faudrait renvoyer un fichier et en même temps appuyer sur le submit du formulaire (si tu vois ce que je veux dire), solution déjà impossible mais ne marchera pas vu qu'il faut valider toutes les étapes précédentes (fichier existant, taille etc...).
Comme tu peux le voir, le form est dans un else qui vérifie l'extension du fichier.
Re: traiter 2 formulaires imbriqués
Posté : 28 sept. 2011, 20:56
par Cyrano
En HTML, l'imbrication de formulaire est interdite.
La solution serait que le formulaire imbriqué se trouve dans un iframe à l'intérieur de l'autre formulaire, autrement, c'est invalide. Mais de cette manière, le formulaire « imbriqué » serait traité indépendamment.
Re: traiter 2 formulaires imbriqués
Posté : 29 sept. 2011, 02:09
par sam12
On s'est mal compris, ce ne sont pas les formulaires qui sont imbriqués mais leur traitement.
Je pensais que le bout de code était assez explicite
Sinon probleme résolu.
Merci pour vos réponses.
Re: [résolu] traiter 2 formulaires imbriqués
Posté : 30 sept. 2011, 10:00
par Mazarini
La variable cachée permet de savoir ce que tu dois faire pour traiter la réponse de l'utilisateur.
Si la variable caché n'est pas défini : affichage du premier formulaire vide ou avec les valeurs par défaut
Si la variable cachés est "traitement formulaire 1" tu controles la saisie, fait le traitement et réaffiche le formulaire 1 en cas de problème ou si c'est ok, affiche le formulaire 2
Si la variable cachés est "traitement formulaire 2" tu controles la saisie, fait le traitement et affiche le formulaire 2 si problème ou ce que tu veux si tout est ok.
Re: [résolu] traiter 2 formulaires imbriqués
Posté : 30 sept. 2011, 12:49
par sam12
Au fait j'ai vu le probleme autrement.
Vu que le second formulaire apparait que si l'upload réussit, j'ai décidé de traiter le 2nd formulaire sur une autre page, tout en gardant les valeurs entrées par le membre en post.
Donc soit il a tout bon du 1er coup et je rentre les infos dans la bdd, soit je reaffiche les valeurs déjà indiquées et je traite sur la 2nde page.
Le seul inconvénient avec cette méthode est que je suis "obligé" de passer le nom du fichier en hidden.
Sinon je comprends ta solution, merci pour l'explication

Je pense que cette solution n'était pas envisageable dans ma situation. Si je comprends bien cette solution est plutôt pour un traitement sur la même page.
Re: [résolu] traiter 2 formulaires imbriqués
Posté : 30 sept. 2011, 15:40
par Mazarini
Pas sur une même page html, mais par un même script php.
Re: [résolu] traiter 2 formulaires imbriqués
Posté : 30 sept. 2011, 16:22
par sam12
Si tu peux me montrer un exemple, je serais intéressé.
Je ne vois pas comment tu peux rappeler le 2e form si certains champs sont faux, sur la même page. Normalement tu seras bloqué par le fait que tu n'as pas rappelé le 1er form avant.
Peux-tu me mettre un petit bout de code pour que je comprenne mieux? Tu m'intrigues
Merci
