[Formulaire] Problème de 2 submit [Résolu/Fermé]

Signaler
Messages postés
7
Date d'inscription
mardi 5 juin 2007
Statut
Membre
Dernière intervention
6 juin 2007
-
 Edouard -
Bonjour,

Je suis en train de créer un formulaire pour poster un article mais aussi une image :
Le problème c'est que j'ai un conflit avec 2 submit, je sais que c'est impossible d'en mettre dans un seul formulaire, c'est pourquoi je cherche une alternative.
Pourriez-vous m'aider svp??

<form method="post" action="{script}?writer">
<input type="hidden" name="{action}" value="1"/>
<input type="hidden" name="filename" value="{filename}"/>
<input type="text" name="title"/> Title&nbsp;&nbsp;
<input type="text" name="namea"/> Name<br />
Content<br/>
<textarea name="content" cols="60" rows="10"></textarea><br />
<b>Browse your computer to add an image </b><em>(.jpg/jpeg, .gif, .png only - 1Mo max.)</em><br/>
<input type="file" name="fichier_upload" size="37" />
<input type="submit" name="add_file" value="add image" />
	
<--Je veux que l'image uploadée s'affiche ici-->	
	
<img src="verif.php" alt="[confirmation code]" align="top"/>&nbsp;&nbsp;
<input type="text" name="verif_code" /> Enter the code <br/><br/>
	
<--Je met un submit qui permettra d'envoyer tout le formulaire ainsi que l'image uploadée-->
<input type="submit" name="submit" value="add"/>
</form>

Je n'ai pas de contraintes au niveau du langage et j'accepte toute proposition de solution.
Merci à tous.

14 réponses

Je te proposerais la solution suivante :

ton script est rechargé après le upload de l'image si je ne me trompe pas puisque tu affiche l'image uploadée.

Dans ce cas, pourquoi tu ne fonctionne pas avec un test if pour afficher l'un ou l'autre des boutons submit.

Il te faut également récupérer les valeurs postées le premier coup et les réinjectées dans les input.

Confirme moi pour le rechargement et on verra si ca répond à ta question.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 62870 internautes nous ont dit merci ce mois-ci

> Edouard
trop cool tu fais le boulôt et le mec se casse, fonctionnaire !

Bon je poste quand même tant pis si y'a des manques

<?php
// on réorient vers l'étape par défaut
if (!isset($_POST['action'])){$action="etape1";} else{$action=$_POST['action'];}
// on récupère les variables si elles sont postées
if (!isset($_POST['fichier_upload'])){$fichier_upload="";} else{$fichier_upload=$_POST['fichier_upload'];}
// il y a peut être d'autres variables à récupérer pour ton upload (n'ai pas lu) notamment le chemin de destination sur ton serveur ?
if (!isset($_POST['title'])){$title="";} else{$title=$_POST['title'];}
if (!isset($_POST['namea'])){$namea="";} else{$namea=$_POST['namea'];}
if (!isset($_POST['content'])){$content="";} else{$content=$_POST['content'];}

// on entre dans la bonne étape de notre processus
if ($action=="etape1"){
// maintenant on va faire l'upload
// pour éviter d'utiliser tout le temps echo on va sortir du script php et utiliser de l'html
?>
<FORM action="tapage.php" ENCTYPE="multipart/form-data" METHOD="POST" name="formetape1">
<!-- ici tu gère vers quelle étape renvoie ce formulaire -->
<INPUT TYPE=HIDDEN NAME="action" value="etape2" />
<!-- fin gestion de l'action -->
<INPUT TYPE=FILE NAME="fichier_upload" value="envoi_image" size="33" />
<INPUT TYPE=SUBMIT name="add_file" value="Add a file" /><br />
<b>Browse your computer to add an image. <em>(2Mo max.)</em></b>
</FORM>
<? // on rerentre dans le script php de l'étape 1
}// fin de l'étape 1

if ($action=="etape2"){
// si tu entre ici c'est que tu a posté le formetape1
// tu peux tester tes variables en mettant des commandes echo de ce type
// echo"$fichier_upload";
// ici tu place ton script d'upload puisqu'il fonctionne
//*********************************************
//************* TRES LONG ******************
//*********************************************
// pour éviter d'utiliser tout le temps echo on va sortir du script php et utiliser de l'html
?>
<FORM action="tapage.php" METHOD="POST" name="formetape2">
<!-- ici tu gère vers quelle étape renvoie ce formulaire -->
<INPUT TYPE=HIDDEN NAME="action" value="etape3" />
<!-- fin gestion de l'action -->
<?
// affichage de l'image avec quelquechose de ce type
echo"<img src=$chemin/$image>" ;
?>
<input type="text" name="title" value=""/><br />
<input type="text" name="namea" value=""/><br />
<textarea name="content" cols="60" rows="10">
> Edouard
voilà la fin du script; putain de faille de sécurité, il est où l'admin ?

<input type="submit" value="ecrire le log" />
</FORM>
<? // on rerentre dans le script php de l'étape 2
}// fin de l'étape 2

if ($action=="etape3"){
// ici on complète le fichier log
//***************************************************************
//************* LA TU METS LE CODE POUR LE LOG ******************
//***************************************************************

// là tu le remercies
echo "l\'upload a été réalisé avec succès!";
}// fin de l'étape 3
crunchla
Messages postés
7
Date d'inscription
mardi 5 juin 2007
Statut
Membre
Dernière intervention
6 juin 2007
> Edouard
MDR!
Merci pour t'être penché sur mon problème.
Je ne suis pas connectée tout le temps sur CCM, désolée de ne pas avoir répondu plus tôt.
Je verrai ça demain au boulot. (jsuis en stage, donc encore un peu novice dans ce domaine)

Pour la sécurité, c'est un autre problème.J'ai une partie admin mais je ne l'ai pas mis ici car le code est déjà TRES LONG, je sais!

Merci en tout cas pour ton investissement!!

Bonne soirée.
Crunchla<-
crunchla
Messages postés
7
Date d'inscription
mardi 5 juin 2007
Statut
Membre
Dernière intervention
6 juin 2007
> Edouard
Bonjour!

Voilà, j'ai recodé tout mon code avec la méthode d'Edouard (c'est vrai que c'est plus facile avec des étapes!) et ça marche nickel!
Merci pour ton aide!

Je récapitule en gros :
	<?
	// on réoriente vers l'étape par défaut
	if (!isset($_POST['action']))
		{$action="etape1";} 
	else{$action=$_POST['action'];}

	// on récupère les variables si elles sont postées
	//fichier upload
	if (!isset($_POST['fichier_upload'])){$fichier_upload="";}else{$fichier_upload=$_POST['fichier_upload'];}
	//autres variables
	if (!isset($_POST['***'])){$***="";} else{$***=$_POST['***'];}
	...
	
// on entre dans la bonne étape de notre processus
	if ($action=="etape1"){
	// maintenant on va faire l'upload
	// pour éviter d'utiliser tout le temps echo on va sortir du script php et utiliser de l'html
	?>
	<FORM action="index.php?writer" ENCTYPE="multipart/form-data" METHOD="POST" name="formetape1">
	<INPUT TYPE=HIDDEN NAME="action" value="etape2" />
	<INPUT TYPE=FILE NAME="fichier_upload" value="envoi_image" size="33" />
	<INPUT TYPE=SUBMIT name="add_file" value="Add a file" />
	</FORM>;
	<?
	// on rerentre dans le script php de l'étape 1
	}// fin de l'étape 1
Partie 2
	if ($action=="etape2"){
	// si tu entre ici c'est que tu a posté le formetape1
	// tu peux tester tes variables en mettant des commandes echo de ce type
	// echo"$fichier_upload";
	
	/*
	//SCRIPT UPLOAD D'IMAGES !
	*/

	// pour éviter d'utiliser tout le temps echo on va sortir du script php et utiliser de l'html
	//affichage de l'image où vous voulez dans le formulaire
	?><FORM action="index.php?writer" METHOD="POST" name="formetape2">
	<INPUT TYPE=HIDDEN NAME="action" value="etape3" /><br/>
	<input type="text" name="title" value=""/> Title
	<input type="text" name="namea" value=""/> Your Name<br />
	Content<br/>
	<textarea name="content" cols="60" rows="10"><?/*moi j'ai mis le chemin dans le content*/ echo $lienimg?></textarea><br/>
	<input type="submit" value="ajouter article (log)" />
	</FORM>
	<?
	// on rerentre dans le script php de l'étape 2
	}// fin de l'étape 2
Partie 3
	if ($action=="etape3"){
	// ici on complète le fichier log
		if(isset($_POST["title"])&&isset($_POST["namea"])&&isset($_POST["content"])) {
		// enregistrer votre formulaire
		/*
		CODE POUR LOG
		*/
		// là tu le remercies
		echo "Ajouté, BRAVO!";
		}
	}// fin de l'étape 3
	?>


Voilà, envore merci à Edouard.

A bientot!
> crunchla
Messages postés
7
Date d'inscription
mardi 5 juin 2007
Statut
Membre
Dernière intervention
6 juin 2007

Algorithme quand tu nous tiens, l'essentiel c'est que tu ai compris la technique.
A+