Controler champ fichier dans formulaire ?
kalimbra
Messages postés
546
Statut
Membre
-
kalimbra Messages postés 546 Statut Membre -
kalimbra Messages postés 546 Statut Membre -
Bonjour,
j'ai un formulaire avec un champ fichier (pour une image). Ce formulaire sert à modifier des données. Je voudrais que lorsque qu'on ne touche pas au champ fichier, l'image reste en place. Ca j'arrive . Par contre au contraire quand le champ est rempli il faut updater la base et uploader le nouveau fichier. Et ça ne fonctionne pas..
Voici mon code :
j'ai un formulaire avec un champ fichier (pour une image). Ce formulaire sert à modifier des données. Je voudrais que lorsque qu'on ne touche pas au champ fichier, l'image reste en place. Ca j'arrive . Par contre au contraire quand le champ est rempli il faut updater la base et uploader le nouveau fichier. Et ça ne fonctionne pas..
Voici mon code :
//vérification si changement image
// si champ image vide, form = old photo
if ($_POST['photo_pers']==""){
$_FILES['photo_pers']['name']=$_POST['Old_Photo'];
$NoUpload="yes";
}
// fin de vérification
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "Moders")) {
$updateSQL = sprintf("UPDATE Personnel SET nom_perso=%s, prenom_perso=%s, titre_pers_FR=%s, titre_pers_DE=%s, titre_pers_EN=%s, photo_pers=%s, id_cat_equipe=%s WHERE id_personnel=%s",
GetSQLValueString($_POST['nom_perso'], "text"),
GetSQLValueString($_POST['prenom_perso'], "text"),
GetSQLValueString($_POST['titre_pers_FR'], "text"),
GetSQLValueString($_POST['titre_pers_DE'], "text"),
GetSQLValueString($_POST['titre_pers_EN'], "text"),
GetSQLValueString($_FILES['photo_pers']['name'], "text"),
GetSQLValueString($_POST['id_cat_equipe'], "int"),
GetSQLValueString($_POST['id_personnel'], "int"));
mysql_select_db($database_IFBL, $IFBL);
$Result1 = mysql_query($updateSQL, $IFBL) or die(mysql_error());
//upload du fichier
// vérification si nécessaire uploader nouvelle photo
if ($NoUpload !="yes"){
$destination ='../Imgs';
$tmp_name=$_FILES['photo_pers']['tmp_name'];
$nom_fichier=$_FILES['photo_pers']['name'];
move_uploaded_file($tmp_name, "$destination/$nom_fichier");
// on efface aussi la vieille photo
//suppression du fichier sur le serveur
/* $FileToDelete = $_POST['OldPhoto'];
$old = getcwd(); // Save the current directory
chdir('/var/www/ifbl-test/Imgs/');
if (is_file($FileToDelete)){
unlink ($FileToDelete);
chdir($old); // Restore the old working directory
*/
}
// fin de suppression
//fin upload
A voir également:
- Controler champ fichier dans formulaire ?
- Whatsapp formulaire opposition - Guide
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
3 réponses
je vais préciser ce que je veux faire. Au moment du traitement du formulaire je voudrais vérifier le champ fichier .
s'il est vide, je récupère l'ancienne valeur pour remplacer le $_FILES['form']['name'], je soumets le form.
s'il est rempli, c'est que l'on modifie le fichier uploader. Du coup j'upload le nouveau fichier, j'efface l'ancien et je mets à jour l'enregistrement dans la base.
Le problème vient du if.. si je prends un $_post['form'], ça fonctionne si c'est vide. Ca ne repère pas que le champ a été rempli. Si je teste le $_FILES, que ce soit le name, size ou autre ça ne fonctionne pas non plus.
J'ai testé avec un if ($_POSTOUFILES) =="", isset, rien n'y fait.
Dans les deux cas la requète est unique, seule la valeur des champs changent (enfin d'un champ)
s'il est vide, je récupère l'ancienne valeur pour remplacer le $_FILES['form']['name'], je soumets le form.
s'il est rempli, c'est que l'on modifie le fichier uploader. Du coup j'upload le nouveau fichier, j'efface l'ancien et je mets à jour l'enregistrement dans la base.
Le problème vient du if.. si je prends un $_post['form'], ça fonctionne si c'est vide. Ca ne repère pas que le champ a été rempli. Si je teste le $_FILES, que ce soit le name, size ou autre ça ne fonctionne pas non plus.
J'ai testé avec un if ($_POSTOUFILES) =="", isset, rien n'y fait.
Dans les deux cas la requète est unique, seule la valeur des champs changent (enfin d'un champ)