Page 1 sur 1

Condition > Probléme avec un Formulaire

Posté : 16 oct. 2007, 10:55
par kweb
Slt,

j'ai un formulaire qui remonte les informations (Base de Donnée) d'un utilisateur pour une éventuelle modification.
Ce formulaire appel une page "modification.inc.php" qui vas traiter la mise a jour de la BD et la vérification du format de la pièce jointe si elle existe.
voici comment ce présente le code (quelques lignes...)
<form method="post" action="../modification.inc.php">
<input name="id" type="hidden" id="id" value="<?= $affichage['id_utilisateur']; ?>" />
<input name="nom" type="text" id="nom" value="<?= strtoupper ($affichage['nom_utilisateur']); ?>" size="60" />
<input type="submit" name="Submit" value="Enregistrer les modifications" />
</form>
je veux donner la possibilité à l'utilisateur de soumettre ou modifier un fichier PDF.
mon problème commence à partir d'ici
j'ai préparer mon code
<?
/*********************************************************************************
AFFICHAGE DU FICHIER SI IL EXISTE, AVEC POSSIBILTE DE SUPPRIMER/MODIFIER LE FICHIER
**********************************************************************************/
if (!empty($_SESSION['nom_origine']))
{?>
<form id="modification_pdf" name="modification_pdf" method="post" action="modification.php?supprimer_pdf">
<table width="100%" border="0" cellspacing="0" cellpadding="0" >
<tr><td width="150"><a href="<?php echo $_SESSION['pdf'];?>" target="_blank">Fichier PDF</a></td>
<td><label><input type="submit" name="modifier" id="modifier" value="Supprimer" /></label></td></tr></table>
</form>
<?php }

/*******************************************
SUPPRESSION/MODIFICATION DU FICHIER PDF 
********************************************/
elseif (isset($_GET['supprimer_pdf']))
{
$update_pdf = "	UPDATE utilisateur
SET nom_pdf_utilisateur='',poid_pdf_utilisateur='',chemin_pdf_utilisateur='',renommer_pdf_utilisateur='' 
WHERE id_utilisateur= ".$_SESSION['id_utilisateur']." " ;
mysql_query($update_pdf) or die(mysql_error());

unlink($_SESSION['pdf']);
?>
<form action="modification.php?update_pdf" method="post" enctype="multipart/form-data" name="update_pdf" id="update_pdf">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td width="300"><input name="fichier_PDF" type="file" id="fichier_PDF" />
<td valign="top"><input type="submit" name="envoi" id="envoi" value="Ajouter le PDF" /></td>
</tr></table></form>
<?	
}

/*************************************************
AFFICHAGE DU FORMULAIRE SI AUCUN DOCUMENT EXISTE
**************************************************/
else
{ ?>
<form action="modification.php?update_pdf" method="post" enctype="multipart/form-data" name="ajout_pdf" id="ajout_pdf">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td width="300">
<input name="fichier_PDF" type="file" id="fichier_PDF" />
<td valign="top"><input type="submit" name="envoi" id="envoi" value="Ajouter le PDF" /></td>
</tr></table></form>
<?php }?>
j'ai donc voulu placer cette partie de code à l'intérieur de mon <form> de départ et je me suis vite rendu compte que j'étais entraint d'insérer un formulaire dans un autre formulaire.... :non: pas bon du tout.
J'ai quand même tester, pour voir l'effet KissCool et en faite il prend comme action, celle du formulaire principale. Ce qui ne m'arrange pas du tout, car je ne peux pas mettre a jour la pièce jointe (avec ma méthode)

Je n'arrive pas a trouver la logique ! de savoir ou je dois placer le code ? dans la page de mon form ou dans la page modification.inc.php ????
Si quelqu'un pourrais me donner des conseils. merci

Posté : 16 oct. 2007, 11:07
par Ryle
Plutôt compliqué ce code, et franchement pas très pratique à mon avis...

Modifies simplement ton formulaire et ton traitement comme ceci :
- ajoute dans la balise form l'enctype qui te permet d'envoyer un fichier
- ajoute dans ton formulaire un champ de type file pour transférer un fichier
- si lorsque tu affiches le formulaire, un fichier a déjà été envoyé, propose en plus une case à cocher permettant de le supprimer.
- enfin, dans ton traitement php, si la case est cochée, tu supprimes le fichier et si un fichier est spécifié, tu l'enregistres, quitte à écraser le précédent s'il existe

Et pis vala, pas besoin de 3 formulaires, de liens, de boutons, et de bizareries à tout va :)

Posté : 16 oct. 2007, 11:49
par kweb
Effectivement, ta façon de voir les choses et beaucoup plus simple...
je vais essayé de le faire....
je laisse le post ouvert, car a mon avis je pense que je reviendrais :lol: pour une petite aide... enfin j'espère pas !!
Et pas de soucis, je le mets en résolu et bien des que mon <form> fonctionnera
merci :D

Posté : 16 oct. 2007, 17:14
par kweb
Quelques question quand même sur ton principe
Dans la cas ou un fichier existe déjà et que je souhaite le remplacer
je vais cocher la case "suppimer" et valider l'intégralité du formulaire pour qu'il puisse étres supprimer ?
sa vas donc mettre a jour tous les éléments du formulaire avant même que je puisse remettre le nouveau fichier ?

Pour plus de précision dans ce que je souhaite
qu'il puisse supprimer et uploader le nouveau fichier autant de fois qu'il veut avant de valider la totalité du formulaire

Posté : 22 oct. 2007, 11:21
par kweb
Toujours aucune réponse....
Dommage.
Si par hasard quelqu'un aurais un exemple de gestion de fichier a me montrer... cela me ferrais avancé.

merci a vous

Posté : 22 oct. 2007, 11:42
par Ryle
En fait, lorsque je gère un fichier, la case à cocher ne sert qu'à le supprimer dans le but de le retirer (et non pas de le remplacer). Elle apparait donc en complément du champ de type file qui lui permet d'envoyer un nouveau fichier qui écrasera le précédent.

En gros l'utilisateur qui souhaite mettre à jour le fichier spécifiera le chemin du nouveau (cochera ou non la case supprimer, ça n'a aucune importance, dans tous les cas le précédent fichier sera supprimé et remplacé par le nouveau si renseigné). Le traitement sera fait lorsqu'il validera le formulaire (après avoir tout renseigné)

Les deux cas à gérer sont donc :
- Il n'y a pas de fichier => un simple champ file pour ajouter un nouveau fichier
- Il y a déjà un fichier => un champ file pour modifier le fichier, un case à cocher pour seulement supprimer le fichier, éventuellement un lien pour le consulter

Côté traitement :
- Si le fichier n'existe pas, tu reçois donc un nouveau fichier que tu enregistre.
- Si le fichier existe et que la case est cochée, tu supprimes le fichier.
- Si le fichier existe et qu'il y a un nouveau fichier, tu supprimes le fichier précédent (case cochée ou non) et tu enregistres le nouveau à la place.
- Sinon, bah pas de modification au niveau du fichier...

HTH :)

Posté : 22 oct. 2007, 11:46
par kweb
Merci de ces explications....
je me penche sur le problème tout de suite......
En espèrent revenir pour passer ce post en résolu. :wink: