Page 1 sur 1

Upload - comment dissiocier le code en 2 partie ?

Posté : 14 févr. 2007, 17:43
par kweb
Bonjour,
je suis toujours entraint de comprendre le fonctionnement de l'upload.

dans le tuto qu'il y a sur le site, tout le code qui génere l'upload (la vérification de l'extension, le poids etc... et l'envoi du fichier)
sont intégrer a meme la page car l'action du formulaire pointe sur lui meme.

Dans mon cas, j'ai créé un formulaire qui est composé de deux pages.
1er page (formulaire.php) :
j'ai un formulaire tout simple avec un input type="files", l'action du form pointe sur la deuxieme page (confirmation_ajout.php)
ci-joint le code

Code : Tout sélectionner

<form action="confirmation_ajout.php" method="post" enctype="multipart/form-data"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td valign="top"><p><strong>NOM DU CONGRES :</strong> <br /> <input name="congres" type="text" id="congres" size="60" /> <br /> <span class="legende_petit">Ecrire en MAJUSCULE</span></p> <p> <strong><br /> SELECTIONNER LE MOIS DU CONGRES <br /> </strong><span class="date_debut"> </span> <select name="mois" id="mois"> <option value="Janvier" selected="selected">Janvier</option> <option value="F&eacute;vrier">F&eacute;vrier</option> <option value="Mars">Mars</option> <option value="Avril">Avril</option> <option value="Mai">Mai</option> <option value="Juin">Juin</option> <option value="Juillet">Juillet</option> <option value="Aout">Aout</option> <option value="Septembre">Septembre</option> <option value="Novembre">Novembre</option> <option value="D&eacute;cembre">D&eacute;cembre</option> </select> <br /> <br /> </p> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td><strong>VILLE</strong><br /> <input name="ville" type="text" /></td> <td><strong>PAYS</strong><br /> <input name="pays" type="text" /></td> </tr> </table></td> <td width="200" valign="top"><br /> <br /> <div align="right"> <table width="100%" height="170" border="0" cellpadding="10" cellspacing="1" bgcolor="#C1DCE8"> <tr> <td valign="top" bgcolor="#F1F7FA"><div align="center"><img src="../images/tirte/debut_congres_modifier.gif" alt="date debut" width="157" height="22" /> <input name="date_debut" type="text" id="date_debut" value="--/--/----" maxlength="10" /> <strong><span class="legende_petit"><br /> Jour/Mois/Ann&eacute;e</span><br /> <br /> <hr align="center" /> <br /> <img src="../images/tirte/fin_congres_modifier.gif" alt="fin congres" width="135" height="22" /> <input name="date_fin" type="text" id="date_fin" value="--/--/----" maxlength="10" /> <br /> <span class="legende_petit">Jour/Mois/Ann&eacute;e</span><br /> </strong> </div></td> </tr> </table> </div></td> </tr> </table> <br /> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="250"><strong>BUDGET</strong><br /> <textarea name="budget" cols="25" id="budget"></textarea> </td> <td valign="bottom" class="legende"><strong>Veuillez inserer le nom des personnes qui g&eacute;re le buget .</strong><br /> <span class="legende_petit">Attention, lorsque vous inserez des noms, ne faite pas de retour chariot mais ecrivez tout &agrave; la suite<br /> (expl: stephane, julie, etienne....) </span></td> </tr> </table> <br /> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="250"><strong>COMMERCIAL<br /> </strong> <textarea name="commercial" cols="25"></textarea></td> <td valign="bottom" class="legende"><strong>Veuillez inserer le nom des commerciaux qui g&eacute;re le congr&egrave;s.</strong><br /> <span class="legende_petit">Attention, lorsque vous inserez des noms, ne faite pas de retour chariot mais ecrivez tout &agrave; la suite<br /> (expl: stephane, julie, etienne....) </span></td> </tr> </table> <br /> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="250"><strong>INSCRIPTION</strong><br /> <textarea name="inscription" cols="25"></textarea></td> <td valign="bottom" class="legende"><strong>Veuillez inserer le nom des personnes qui g&eacute;re les inscriptions du congr&egrave;s.</strong><br /> <span class="legende_petit">Attention, lorsque vous inserez des noms, ne faite pas de "retour chariot" mais ecrivez tout &agrave; la suite<br /> (expl: stephane, julie, etienne....) </span></td> </tr> </table> <br /> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="250"><strong>CONFERENCIER</strong><br /> <textarea name="conferencier" cols="25" id="conferencier"></textarea></td> <td valign="bottom" class="legende"><strong>Veuillez inserer le nom des personnes qui g&eacute;re les conf&eacute;renciers du congr&egrave;s.</strong><br /> <span class="legende_petit">Attention, lorsque vous inserez des noms, ne faite pas de retour chariot mais ecrivez tout &agrave; la suite<br /> (expl: stephane, julie, etienne....) </span></td> </tr> </table> <br /> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="250"><strong>PRESSE</strong><br /> <textarea name="presse" cols="25"></textarea></td> <td valign="bottom" class="legende"><strong>Veuillez inserer le nom des personnes qui g&eacute;re la presse sur le congr&egrave;s.</strong><br /> <span class="legende_petit">Attention, lorsque vous inserez des noms, ne faite pas de retour chariot mais ecrivez tout &agrave; la suite<br /> (expl: stephane, julie, etienne....) </span></td> </tr> </table> <br /> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="250"><strong>SOUTIEN</strong><br /> <textarea name="soutien" cols="25" id="soutien"></textarea></td> <td valign="bottom" class="legende"><strong>Veuillez inserer le nom des personnes qui aiderons sur le congr&egrave;s.</strong><br /> <span class="legende_petit">Attention, lorsque vous inserez des noms, ne faite pas de retour chariot mais ecrivez tout &agrave; la suite<br /> (expl: stephane, julie, etienne....) </span></td> </tr> </table> <p> <!-- Limiter la taille des fichiers PDF à 500Ko --> <label><strong>PROGRAMME PDF</strong><br /> <input name="PDF" type="file" id="PDF" /> </label> <span class="clignotant"> <?php /******************************************************/ if(isset($erreur)) // si la variable erreur existe { echo '<p>', $erreur ,'</p>'; //affiche le contenu de la variable } /******************************************************/ ?> </span></p> <span class="Text_Titre_Orange2">Validation</span> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td bgcolor="#e4e4e4"><img src="../images/pixel_gris.gif" width="1" height="1" /></td> </tr> </table> <input type="submit" name="Submit" value="Enregistrer le nouveau congr&egrave;s" /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="reset" name="Submit" value="Effacer le formulaire" onclick="javascript:window.back();"/> </form>
2éme page (confirmation_ajout.php): vas affiché un message confirmant l'intergration des element en base de donnée. elle contient donc le code suivant
<?
// connection a la base de donnée
include ("../include/connectBD.inc.php");

// création des variable depuis le formulaire de saisie
$congres = strtoupper($_POST['congres']);
$mois =$_POST['mois'];
$debut =$_POST['date_debut'];
$fin =$_POST['date_fin'];
$ville =$_POST['ville'];
$pays =$_POST['pays'];
$commercial =$_POST['commercial'];
$inscription =$_POST['inscription'];
$budget =$_POST['budget'];
$conferencier =$_POST['conferencier'];
$presse =$_POST['presse'];
$soutien =$_POST['soutien'];

// Convertion de la date debut
  $date_fr_debut = $debut;
  $date_us_debut = implode('-',array_reverse  (explode('/',$date_fr_debut)));
  
// Convertion de la date fin 
  $date_fr_fin = $fin;
  $date_us_fin = implode('-',array_reverse  (explode('/',$date_fr_fin)));




// creation d'une variable qui demande d'inserer les donnée dans la BD 
$sql = "INSERT INTO agenda
		VALUES
		('','$congres','$mois','$date_us_debut','$date_us_fin','$ville','$pays','$commercial','$inscription','$budget','$conferencier','$presse','$soutien')";
		
//// Envoie une requête SQL à un serveur MySQL 
mysql_query ($sql);

?>
MA QUESTION :
je ne peux pas procéder comme dans le tuto car tout le code de vérification et d'envoie se trouve sur la meme page.
moi je voudrais que la vérification se fasse sur ma page index.php et que l'upload se fasse sur la page confirmation_ajout.php
Cela est il possible ?
si oui, comment faut il découpé le code car j'ai essayé plusieurs truc mais sans résultat.
merci de votre aide

PS, voici le code du tuto
// ENVOIE DU FICHIER PDF DU PROGRAMME

if(isset($_FILES['PDF'])) // si la variable PDF existe
{
	// parametre
	unset($erreur);                         // Detruire la variable $erreur (ne pas affiché la variable)
	$extensions_ok = array('pdf');          // Autorisé juste les fichiers PDF
	$taille_max = 2000000;                   // avec un poid MAXIMUM de 4Mo (1Mo = 1000000)
	$dest_dossier = 'PDF_programme/';       // Chemin du dossier qui vas recevoir les PDF... utilisez également des slashes sous windows : $dest_dossier = 'd:/damien/photos/';
	
		// vérifications
		if( !in_array( substr(strrchr($_FILES['PDF']['name'], '.'), 1), $extensions_ok ) )
			{
			$erreur = 'Vous ne pourvez soumettre qu\'un fichier PDF, merci !';
			}
			
		elseif( file_exists($_FILES['PDF']['tmp_name'])and filesize($_FILES['PDF']['tmp_name']) > $taille_max)
			{
			$erreur = 'Votre fichier PDF doit faire moins de 4 Méga !';
			}
	
	
		// copie du fichier
		
		if(!isset($erreur))
			{
			$dest_fichier = basename($_FILES['PDF']['name']);
			// formatage nom fichier
			// enlever les accents
			$dest_fichier = strtr($dest_fichier,
			'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
			'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
			
			// remplacer les caracteres autres que lettres, chiffres et point par _
			$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
			// copie du fichier
			move_uploaded_file($_FILES['PDF']['tmp_name'], $dest_dossier . $dest_fichier);
			}
}