Page 1 sur 1

Update images

Posté : 02 févr. 2012, 22:08
par Teenoo
Bonjour,

j'ai un petit soucis sur une partie modification d'un article. Concernant les textes et la gestion UPDATE sql pas de soucis tout se met à jour dans la BDD. J'ai par contre quelques soucis à gérer mes images.

Dans le formulaire de modif, il est donné le choix de modifier ou non les images en important depuis l'ordi une nouvelle image. Je me mélange un peu dans mon code, et j'y ai passé tellement de temps à le visualisé que je ne vois plus quelles peuvent être mes erreurs. En fait le soucis est que je ne peux pas importer de nouvelle image dans mon dossier.

Ci-joint le code
if(isset($_POST['modif2'])){

	$id=$_POST['id'];
	$titre=$_POST['titre'];
	$partie=$_POST['partie'];
	$contenu=addslashes($_POST['actu']);
	$montrer=$_POST['afficher'];
		
	$tmp_file = $_FILES['fichier']['tmp_name'];
	$tmp_file2 = $_FILES['fichier2']['tmp_name'];
	
	if (!is_uploaded_file($tmp_file) && !is_uploaded_file($tmp_file2))
	{
	mysql_query("UPDATE actu SET titre='$titre', news='$contenu', partie='$partie', Afficher='$montrer' WHERE id='$id'") or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); ;
	Header("Location: ajout_news.php");
	exit();
	} 
	
	else {
	
	$type_file = $_FILES['fichier']['type'];
	$type_file2 = $_FILES['fichier2']['type'];
	
	
	$img_une = $_FILES['fichier']['name'];
	$img_art = $_FILES['fichier2']['name'];
	
	if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $img_une))
		{
			exit("Nom de fichier non valide");
		}
			else if(!move_uploaded_file($tmp_file, $dest . $img_une))
		{
			exit("Impossible de copier le fichier dans $dest");
		}
		
	if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $img_art))
		{
			exit("Nom de fichier non valide");
		}
			else if(!move_uploaded_file($tmp_file2, $dest . $img_art))
		{
			exit("Impossible de copier le fichier2 dans $dest");
		}
	
	mysql_query("UPDATE actu SET titre='$titre', img_art='$img_art', img_une='$img_une', partie='$partie', news='$contenu', Afficher='$montrer' WHERE id='$id'") or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); ;
	Header("Location: ajout_news.php");
	exit();
	}

}
A savoir que j'attribue la valeur de base de l'image dans le formulaire de modif. Ex :

Code : Tout sélectionner

<label for="fichier">Image à la une</label><br /> <img src="../album/<?php echo $aff['img_une'] ?>" width="200"> <input type="hidden" name="MAX_FILE_SIZE" value="250000" /> <input type="file" name="fichier" size="50" value="<?php echo $aff['img_une'] ?>">
Merci de votre aide, car je m'en sors pas trop...

Re: Update images

Posté : 02 févr. 2012, 22:12
par xTG
$aff['img_une'] n'est à mon avis aucunement le chemin du fichier à uploader.
C'est plutôt l'adresse du fichier déjà uploadé non ?
Dans ce cas faut pas la remplir... Et si jamais le champ est vide tu fais rien, mais si il est rempli c'est que ton utilisateur veut remplacer l'image.

Re: Update images

Posté : 03 févr. 2012, 09:50
par Teenoo
Donc j'enlève le value du formulaire. Là où ça se corse c'est que j'ai 2 images modifiables. Je fais un if pour chaque image pour faire comprendre s'il y a une nouvelle image ?

Je sais pas si j'arrive à me faire comprendre

Re: Update images

Posté : 03 févr. 2012, 11:15
par xTG
Oui c'est ça, tu regardes le contenu de $_FILES lorsque le formulaire a été soumis.
S'il n'y a rien => aucune mise à jour
Sinon tu uploades et fait la mise à jour en question.

Re: Update images

Posté : 13 févr. 2012, 15:27
par Teenoo
Après de valeureux tests, j'obtiens toujours "Impossible de copier le fichier dans /album/" à savoir que ce fichier n'est même pas demandé à être changé. Si vous pouviez jeter un oeil à mon code pour me dire que ce qui pêche...

if(isset($_POST['modif2'])){

	$id=$_POST['id'];
	$titre=$_POST['titre'];
	$partie=$_POST['partie'];
	$contenu=addslashes($_POST['actu']);
	$montrer=$_POST['afficher'];
		
	$tmp_file = $_FILES['fichier']['tmp_name'];
	$tmp_file2 = $_FILES['fichier2']['tmp_name'];
	
	$img_une=$_FILES['fichier']['name'];
	$img_art=$_FILES['fichier2']['name'];
	
	$type_file = strrchr($_FILES['fichier']['name'],'.');
	$type_file2 = strrchr($_FILES['fichier2']['name'],'.');
	
	$taille_maxi = 100000;
	
	if (!empty($img_une) && !empty($img_art))
	{
	mysql_query("UPDATE actu SET titre='$titre', news='$contenu', partie='$partie', Afficher='$montrer' WHERE id='$id'") or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
	Header("Location: ajout_news.php");
	exit();
	}
	
	else if (empty($img_une) && !empty($img_art))
	{
	mysql_query("UPDATE actu SET titre='$titre', img_une='$img_une', partie='$partie', news='$contenu', Afficher='$montrer' WHERE id='$id'") or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
	if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $img_une))
		{
			exit("Nom de fichier non valide");
		}
			else if(!move_uploaded_file($tmp_file, $dest . $img_une))
		{
			exit("Impossible de copier le fichier dans $dest");
		}
		
	}
	
	else if (!empty($img_une) && empty($img_art))
	{
	mysql_query("UPDATE actu SET titre='$titre', img_art='$img_art', partie='$partie', news='$contenu', Afficher='$montrer' WHERE id='$id'") or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
		if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $img_art))
		{
			exit("Nom de fichier non valide");
		}
			else if(!move_uploaded_file($tmp_file2, $dest . $img_art))
		{
			exit("Impossible de copier le fichier2 dans $dest");
		}

	}
	
	else if (empty($img_une) && empty($img_art))
	{
	mysql_query("UPDATE actu SET titre='$titre', img_art='$img_art', img_une='$img_une', partie='$partie', news='$contenu', Afficher='$montrer' WHERE id='$id'") or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
	if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $img_une))
		{
			exit("Nom de fichier non valide");
		}
			else if(!move_uploaded_file($tmp_file, $dest . $img_une))
		{
			exit("Impossible de copier le fichier dans $dest");
		}
		
	if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $img_art))
		{
			exit("Nom de fichier non valide");
		}
			else if(!move_uploaded_file($tmp_file2, $dest . $img_art))
		{
			exit("Impossible de copier le fichier2 dans $dest");
		}
	}
	
	Header("Location: ajout_news.php");
	exit();
	}

Re: Update images

Posté : 13 févr. 2012, 16:44
par xTG
Ton dernier elseif vérifie qu'aucune image n'a été uploadée.
Et tu mets dedans un code de mise à jour et d'upload... ;)

Re: Update images

Posté : 13 févr. 2012, 18:08
par Teenoo
'fectivement si j'avais pas inversé :| En tout cas merci beaucoup, ça marche nickel! :D

[Resolu] Re: Update images

Posté : 13 févr. 2012, 18:08
par Teenoo
Bonjour,

j'ai un petit soucis sur une partie modification d'un article. Concernant les textes et la gestion UPDATE sql pas de soucis tout se met à jour dans la BDD. J'ai par contre quelques soucis à gérer mes images.

Dans le formulaire de modif, il est donné le choix de modifier ou non les images en important depuis l'ordi une nouvelle image. Je me mélange un peu dans mon code, et j'y ai passé tellement de temps à le visualisé que je ne vois plus quelles peuvent être mes erreurs. En fait le soucis est que je ne peux pas importer de nouvelle image dans mon dossier.

Ci-joint le code
if(isset($_POST['modif2'])){

	$id=$_POST['id'];
	$titre=$_POST['titre'];
	$partie=$_POST['partie'];
	$contenu=addslashes($_POST['actu']);
	$montrer=$_POST['afficher'];
		
	$tmp_file = $_FILES['fichier']['tmp_name'];
	$tmp_file2 = $_FILES['fichier2']['tmp_name'];
	
	if (!is_uploaded_file($tmp_file) && !is_uploaded_file($tmp_file2))
	{
	mysql_query("UPDATE actu SET titre='$titre', news='$contenu', partie='$partie', Afficher='$montrer' WHERE id='$id'") or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); ;
	Header("Location: ajout_news.php");
	exit();
	} 
	
	else {
	
	$type_file = $_FILES['fichier']['type'];
	$type_file2 = $_FILES['fichier2']['type'];
	
	
	$img_une = $_FILES['fichier']['name'];
	$img_art = $_FILES['fichier2']['name'];
	
	if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $img_une))
		{
			exit("Nom de fichier non valide");
		}
			else if(!move_uploaded_file($tmp_file, $dest . $img_une))
		{
			exit("Impossible de copier le fichier dans $dest");
		}
		
	if( preg_match('#[\x00-\x1F\x7F-\x9F/\\\\]#', $img_art))
		{
			exit("Nom de fichier non valide");
		}
			else if(!move_uploaded_file($tmp_file2, $dest . $img_art))
		{
			exit("Impossible de copier le fichier2 dans $dest");
		}
	
	mysql_query("UPDATE actu SET titre='$titre', img_art='$img_art', img_une='$img_une', partie='$partie', news='$contenu', Afficher='$montrer' WHERE id='$id'") or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); ;
	Header("Location: ajout_news.php");
	exit();
	}

}
A savoir que j'attribue la valeur de base de l'image dans le formulaire de modif. Ex :

Code : Tout sélectionner

<label for="fichier">Image à la une</label><br /> <img src="../album/<?php echo $aff['img_une'] ?>" width="200"> <input type="hidden" name="MAX_FILE_SIZE" value="250000" /> <input type="file" name="fichier" size="50" value="<?php echo $aff['img_une'] ?>">
Merci de votre aide, car je m'en sors pas trop...