Page 1 sur 2

Modifier un fichier uploadé

Posté : 27 mai 2013, 13:40
par neokrios
Bonjour,


Je reviens vers vous toujours avec mes problèmes d'upload.
J'ai donc un formulaire ou on rentre le nom et prénom de la personne ainsi que ses pièces jointes comme photocopie de la carte d'identité .... , les pièces jointes sont stocké dans un fichier qui porte le nom de la personne et le chemin de l'image est stockée dans la base de donnée.
Je voudrais maintenant que la personne puisse modifier ses informations pour changer son nom et autre information c'est simple je fais une requête update mais pour modifier un fichier uploadé j'ai plus de mal j'arrive a mettre le bon chemin dans la bdd mais j'arrive pas a mettre l'image là ou elle devrait être.
Si quelqu'un peu m'aider ou me donner des pistes.

Merci

Re: Modifier un fichier uploadé

Posté : 27 mai 2013, 13:51
par J-oxi
Salut, tu devrais posté ton code.

Re: Modifier un fichier uploadé

Posté : 27 mai 2013, 13:58
par ghost5922
Bonjour,

tu fais comme pour l'insert une verification de chaque champ puis juste avant l'upload de l'image un unlink(); pour efface l'image avant de la reup

Re: Modifier un fichier uploadé

Posté : 27 mai 2013, 14:12
par neokrios
Voici mon pour l'insertion concrètement tu peux me montrer comment utiliser unlik dans mon code et ou le placer et merci de vos réponse :D
<?php 
	function upload($fichier, $prenomauditeur, $nomauditeur)
{

	

	$nom = "auditeur/".$nomauditeur."_".$prenomauditeur."/";
	
	
	
	
	
	// vérifie si le répertoire existe pas :
		if (!is_dir($nom)) 
		{
			mkdir($nom);
		}
		


	$fcv = basename($_FILES[$fichier]['name']);
	$taille_maxi = 100000;
	$taille = filesize($_FILES[$fichier]['tmp_name']);
	$extensions = array('.png', '.gif', '.jpg', '.jpeg');
	$extension = strrchr($_FILES[$fichier]['name'], '.'); 
	//Début des vérifications de sécurité...
	
		if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
		{
			$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
		}
		
		if($taille>$taille_maxi)
		{
			$erreur = 'Le fichier est trop gros...';
		}
		
		if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
		{
			//On formate le nom du fichier ici...
			$fcv = strtr($fcv, 
			  'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
			  'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
			$cv = preg_replace('/([^.a-z0-9]+)/i', '-', $fcv);
			if(move_uploaded_file($_FILES[$fichier]['tmp_name'], $nom . $fcv)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
				{
					return true;
				}
			else
				{
					return false;
				}

		}
		
			if (empty($FILES[$fichier])) 
		{
		return true;
		}	
}



//récupération des valeurs des champs:
//nom:
	$nomauditeur     = $_POST["nomauditeur"] ;
//prenom:
	$prenomauditeur = $_POST["prenomauditeur"] ;
//code:
	$codeauditeur = $_POST["codeauditeur"] ;
	


if (upload('cv', $prenomauditeur, $nomauditeur) && upload('carte', $prenomauditeur, $nomauditeur) && upload('cartevitale', $prenomauditeur, $nomauditeur) && upload('rib', $prenomauditeur, $nomauditeur) && upload('bac', $prenomauditeur, $nomauditeur) && upload('lettre', $prenomauditeur, $nomauditeur) && upload('contrat', $prenomauditeur, $nomauditeur)) 
	{
		//connection au serveur
			$cnx = mysql_connect( "localhost", "root", "" ) ;
 
		//sélection de la base de données:
			$db  = mysql_select_db( "dematerialisation" ) ;
 
		//récupération des valeurs des champs:
		
		
		// Fichier auditeur
		
	if (isset($_FILES['cv']['name']) and !empty($_FILES['cv']['name']))
		{
		$fcv = basename($_FILES['cv']['name']);
		$cv = "auditeur/".$nomauditeur."_".$prenomauditeur."/".$fcv; 
		}	
		
		else
		{
		$fcv='';
		$cv='';
		}
		
	if (isset($_FILES['carte']['name']) and !empty($_FILES['carte']['name']))
		{
		$fcarte = basename($_FILES['carte']['name']);             
		$carte = "auditeur/".$nomauditeur."_".$prenomauditeur."/".$fcarte; 
		}
		
		else
		{
		$fcarte='';
		$carte='';
		}
		
		if (isset($_FILES['cartevitale']['name']) and !empty($_FILES['cartevitale']['name']))
			{
			$fcartevit = basename($_FILES['cartevitale']['name']);
			$cartevitale = "auditeur/".$nomauditeur."_".$prenomauditeur."/".$fcartevit;
			}
			
			else
		{
		$fcartevit='';
		$cartevitale='';
		}
		
		if (isset($_FILES['rib']['name']) and !empty($_FILES['rib']['name']))
			{
			$frib = basename($_FILES['rib']['name']);
			$rib = "auditeur/".$nomauditeur."_".$prenomauditeur."/".$frib;
			}
			
			else
		{
		$frib='';
		$rib='';
		}
		
		if (isset($_FILES['bac']['name']) and !empty($_FILES['bac']['name']))
			{
			$fresultat = basename($_FILES['bac']['name']);
			$bac = "auditeur/".$nomauditeur."_".$prenomauditeur."/".$fresultat;
			}
			
			else
		{
		$fresultat='';
		$bac='';
		}
		
		if (isset($_FILES['lettre']['name']) and !empty($_FILES['lettre']['name']))
			{
			$flettre = basename($_FILES['lettre']['name']);
			$lettre = "auditeur/".$nomauditeur."_".$prenomauditeur."/".$flettre;
			}
			
			else
		{
		$flettre='';
		$lettre='';
		}
		
		if (isset($_FILES['contrat']['name']) and !empty($_FILES['contrat']['name']))
			{
			$fcontrat = basename($_FILES['contrat']['name']);
			$contrat = "auditeur/".$nomauditeur."_".$prenomauditeur."/".$fcontrat;
			}
			
			else
		{
		$fcontrat='';
		$contrat='';
		}
			
			$chemin = "auditeur/".$nomauditeur."_".$prenomauditeur."/";
		// on encapsule le répertoire et le nom du fichier pour avoir le chemin complet
			

 
		//création de la requête SQL:
			$sql = 	"INSERT  INTO auditeur (nomauditeur, prenomauditeur, codeauditeur, cv, carteidentite, cartevital, rib, resultatbac, lettremotivation, contratpro, chemin)  
							VALUES ( '$nomauditeur', '$prenomauditeur', '$codeauditeur', '$cv', '$carte', '$cartevitale', '$rib', '$bac', '$lettre', '$contrat', '$chemin') " ; 
 
		//exécution de la requête SQL:
			$requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
 
		//affichage des résultats, pour savoir si l'insertion a marchée:
			if($requete)
				{
					echo("Insertion éffectué") ;
				}	
			else
				{
					echo("L'insertion à échouée</br>") ;
				}
		//fin insertion auditeur et début création d'un répertoire 
		
	}
		
?>

Re: Modifier un fichier uploadé

Posté : 27 mai 2013, 14:23
par ghost5922
voila mais pas tester :)

<?php 
        function upload($fichier, $prenomauditeur, $nomauditeur)
{

        

        $nom = "auditeur/".$nomauditeur."_".$prenomauditeur."/";
        
        
        
        
        
        // vérifie si le répertoire existe pas :
                if (!is_dir($nom)) 
                {
                        mkdir($nom);
                }
                


        $fcv = basename($_FILES[$fichier]['name']);
        $taille_maxi = 100000;
        $taille = filesize($_FILES[$fichier]['tmp_name']);
        $extensions = array('.png', '.gif', '.jpg', '.jpeg');
        $extension = strrchr($_FILES[$fichier]['name'], '.'); 
        //Début des vérifications de sécurité...
        
                if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
                {
                        $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
                }
                
                if($taille>$taille_maxi)
                {
                        $erreur = 'Le fichier est trop gros...';
                }
                
                if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
                {
                        //On formate le nom du fichier ici...
                        $fcv = strtr($fcv, 
                          'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
                          'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
                        $cv = preg_replace('/([^.a-z0-9]+)/i', '-', $fcv);
						if (file_exists($nom . $fcv)) {//on verifie que le fichier existe
							unlink($nom . $fcv);//on lefface
						}
                        if(move_uploaded_file($_FILES[$fichier]['tmp_name'], $nom . $fcv)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
                                {
                                        return true;
                                }
                        else
                                {
                                        return false;
                                }

                }
                
                        if (empty($FILES[$fichier])) 
                {
                return true;
                }       
}



//récupération des valeurs des champs:
//nom:
        $nomauditeur     = $_POST["nomauditeur"] ;
//prenom:
        $prenomauditeur = $_POST["prenomauditeur"] ;
//code:
        $codeauditeur = $_POST["codeauditeur"] ;
        


if (upload('cv', $prenomauditeur, $nomauditeur) && upload('carte', $prenomauditeur, $nomauditeur) && upload('cartevitale', $prenomauditeur, $nomauditeur) && upload('rib', $prenomauditeur, $nomauditeur) && upload('bac', $prenomauditeur, $nomauditeur) && upload('lettre', $prenomauditeur, $nomauditeur) && upload('contrat', $prenomauditeur, $nomauditeur)) 
        {
                //connection au serveur
                        $cnx = mysql_connect( "localhost", "root", "" ) ;
 
                //sélection de la base de données:
                        $db  = mysql_select_db( "dematerialisation" ) ;
 
                //récupération des valeurs des champs:
                
                
                // Fichier auditeur
                
        if (isset($_FILES['cv']['name']) and !empty($_FILES['cv']['name']))
                {
                $fcv = basename($_FILES['cv']['name']);
                $cv = "auditeur/".$nomauditeur."_".$prenomauditeur."/".$fcv; 
                }       
                
                else
                {
                $fcv='';
                $cv='';
                }
                
        if (isset($_FILES['carte']['name']) and !empty($_FILES['carte']['name']))
                {
                $fcarte = basename($_FILES['carte']['name']);             
                $carte = "auditeur/".$nomauditeur."_".$prenomauditeur."/".$fcarte; 
                }
                
                else
                {
                $fcarte='';
                $carte='';
                }
                
                if (isset($_FILES['cartevitale']['name']) and !empty($_FILES['cartevitale']['name']))
                        {
                        $fcartevit = basename($_FILES['cartevitale']['name']);
                        $cartevitale = "auditeur/".$nomauditeur."_".$prenomauditeur."/".$fcartevit;
                        }
                        
                        else
                {
                $fcartevit='';
                $cartevitale='';
                }
                
                if (isset($_FILES['rib']['name']) and !empty($_FILES['rib']['name']))
                        {
                        $frib = basename($_FILES['rib']['name']);
                        $rib = "auditeur/".$nomauditeur."_".$prenomauditeur."/".$frib;
                        }
                        
                        else
                {
                $frib='';
                $rib='';
                }
                
                if (isset($_FILES['bac']['name']) and !empty($_FILES['bac']['name']))
                        {
                        $fresultat = basename($_FILES['bac']['name']);
                        $bac = "auditeur/".$nomauditeur."_".$prenomauditeur."/".$fresultat;
                        }
                        
                        else
                {
                $fresultat='';
                $bac='';
                }
                
                if (isset($_FILES['lettre']['name']) and !empty($_FILES['lettre']['name']))
                        {
                        $flettre = basename($_FILES['lettre']['name']);
                        $lettre = "auditeur/".$nomauditeur."_".$prenomauditeur."/".$flettre;
                        }
                        
                        else
                {
                $flettre='';
                $lettre='';
                }
                
                if (isset($_FILES['contrat']['name']) and !empty($_FILES['contrat']['name']))
                        {
                        $fcontrat = basename($_FILES['contrat']['name']);
                        $contrat = "auditeur/".$nomauditeur."_".$prenomauditeur."/".$fcontrat;
                        }
                        
                        else
                {
                $fcontrat='';
                $contrat='';
                }
                        
                        $chemin = "auditeur/".$nomauditeur."_".$prenomauditeur."/";
                // on encapsule le répertoire et le nom du fichier pour avoir le chemin complet
                        

 
                //création de la requête SQL:
                        $sql =  "INSERT  INTO auditeur (nomauditeur, prenomauditeur, codeauditeur, cv, carteidentite, cartevital, rib, resultatbac, lettremotivation, contratpro, chemin)  
                                                        VALUES ( '$nomauditeur', '$prenomauditeur', '$codeauditeur', '$cv', '$carte', '$cartevitale', '$rib', '$bac', '$lettre', '$contrat', '$chemin') " ; 
 
                //exécution de la requête SQL:
                        $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
 
                //affichage des résultats, pour savoir si l'insertion a marchée:
                        if($requete)
                                {
                                        echo("Insertion éffectué") ;
                                }       
                        else
                                {
                                        echo("L'insertion à échouée</br>") ;
                                }
                //fin insertion auditeur et début création d'un répertoire 
                
        }
                
?>

Re: Modifier un fichier uploadé

Posté : 27 mai 2013, 14:30
par neokrios
Ok je vais essayé tous ça et je vous tiens au courant merci de l'aide

Re: Modifier un fichier uploadé

Posté : 29 mai 2013, 08:11
par neokrios
Alors j'ai essayer j'vais plein d'erreur mais je crois savoir d'ou ça vient. Mais je cherche un a faire plus simple, en effet mon but et de pouvoir garder dans le dossier de l'auditeur ses anciennes pièces jointes j'ai donc fais le code qui va suivre, je veux juste insérer dans le bon répertoire l'image uploadé et remplacé dans la bdd le nouveau chemin. J'arrive a remplacer par le bon chemin dans la bdd mais j'arrive pas a uploader l'image dans le bon répertoire mais je crois que je me suis un peu emmêlé les pinceaux dans mon code, le suivi:
<?php 
	function upload($fichier, $prenomauditeur, $nomauditeur)
{

	$fcv = basename($_FILES[$fichier]['name']);
	$taille_maxi = 100000000;
	$taille = filesize($_FILES[$fichier]['tmp_name']);
	$extensions = array('.png', '.gif', '.jpg', '.jpeg', '.pdf');
	$extension = strrchr($_FILES[$fichier]['name'], '.'); 
	//Début des vérifications de sécurité...
	
		if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
		{
			$erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
		}
		
		if($taille>$taille_maxi)
		{
			$erreur = 'Le fichier est trop gros...';
		}
		
		if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
		{
			//On formate le nom du fichier ici...
			$fcv = strtr($fcv, 
			  'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
			  'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
			$cv = preg_replace('/([^.a-z0-9]+)/i', '-', $fcv);
			if(move_uploaded_file($_FILES[$fichier]['tmp_name'], $nom . $fcv)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
				{
					return true;
				}
			else
				{
					return false;
				}

		}
		
			if (empty($FILES[$fichier])) 
		{
		return true;
		}	
}


	
	$nom = $_POST["nomauditeur"] ;
	$prenom = $_POST["prenomauditeur"] ;
	$codeauditeur = $_POST["codeauditeur"] ;
	$cv = $_POST["cv"] ;
	$image = "auditeur/".$nom."_".$prenom."/".$cv;
 
	//récupération de l'identifiant de la personne:
	$codeauditeur = $_POST["codeauditeur"] ;
	
	//connection au serveur
			$cnx = mysql_connect( "localhost", "root", "" ) ;
 
		//sélection de la base de données:
			$db  = mysql_select_db( "dematerialisation" ) ;
		
	//création de la requête SQL:
	$sql = "UPDATE auditeur SET nomauditeur = '".$nom."',prenomauditeur = '".$prenom."'  ,codeauditeur = '".$codeauditeur."' ,cv = '".$image."'  WHERE codeauditeur = '".$codeauditeur."'"; 
 
	//exécution de la requête SQL:
	$requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
 
 
	//affichage des résultats, pour savoir si la modification a marchée:
	if($requete)
		{ 
			echo("Modification éffectué");
		}
		
		
	else
		{
			echo("La modification à échouée") ;
		}
		
?>

Re: Modifier un fichier uploadé

Posté : 29 mai 2013, 10:16
par ghost5922
Bonjour,

ce que tu souhaite faire c'est pas efface mais déplacé l'ancienne image avant de mettre la nouvelle ?

Re: Modifier un fichier uploadé

Posté : 29 mai 2013, 10:27
par neokrios
Non même pas en gros chaque image est stocker dans le répertoire d'un auditeur (exemple: carte vitale de patrick bruel et stocker dans le répertoire Patrick_bruel ainsi que toute les pièces autres pièces jointe de Patrick Bruel. Moi se que je voudrais c'est mettre le nouveau cv par exemple dans le répertoire de l'auditeur sans enlever l'ancien par contre que le chemin d’accès dans la base de donnée soit celle de la nouvelle image du coup sur le site on voit bien le nouveau cv car j'utilise le chemin stocké dans la base de donnée pour l'afficher mais si j'ai besoin de retrouver un document ancien j'ai juste a retourner dans le répertoire. Du coup j'arrive bien a mettre mon chemin dans la bdd sans problème met ma nouvelle ne se met pas dans le répertoire voulu. Du coup j'ai le chemin mais pas l'image qui va au bout.

Re: Modifier un fichier uploadé

Posté : 29 mai 2013, 10:35
par ghost5922
Ok mais tu stock juste le chemin ou le nom complet de l'image en bdd

car si tes fichier se nomme toujours cv.jpg tu ne peu en avoir qu'un dans le rep Patrick_bruel

Re: Modifier un fichier uploadé

Posté : 29 mai 2013, 10:38
par neokrios
je stock le chemin complet de l'image auditeur/$nomauditeur_$prenomauditeur/$image
Je ne renomme pas l'image du coup elle a un nom unique

Re: Modifier un fichier uploadé

Posté : 29 mai 2013, 10:42
par ghost5922
ok mais tu veux garde cette ligne dans la bdd au cas ou juste sur le ftp ?

tu as une table juste pour les images ou c'est dans la table membre ?

Re: Modifier un fichier uploadé

Posté : 29 mai 2013, 10:45
par neokrios
j'ai une table membre et je veux juste la garder dans le répertoire j'ai pas besoin de son chemin

Re: Modifier un fichier uploadé

Posté : 29 mai 2013, 11:03
par ghost5922
ok alors renomme l'ancienne image en 'cv_'.time().'.jpg'; par exemple puis tu remets l'image sans rien change sur le ftp tu auras


Patrick_bruel/cv.jpg (nouvelle image)
Patrick_bruel/cv_45484214.jpg (ex image)

Re: Modifier un fichier uploadé

Posté : 29 mai 2013, 11:15
par neokrios
Je comprend pas en quoi le nom de l'image est important vu que toute façon elle auront un nom différent ça pause pas de problème non?