Modifier un fichier uploadé

Eléphanteau du PHP | 19 Messages

27 mai 2013, 13:40

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

Eléphant du PHP | 56 Messages

27 mai 2013, 13:51

Salut, tu devrais posté ton code.

Mammouth du PHP | 619 Messages

27 mai 2013, 13:58

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

Eléphanteau du PHP | 19 Messages

27 mai 2013, 14:12

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 
		
	}
		
?>

Mammouth du PHP | 619 Messages

27 mai 2013, 14:23

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 
                
        }
                
?>

Eléphanteau du PHP | 19 Messages

27 mai 2013, 14:30

Ok je vais essayé tous ça et je vous tiens au courant merci de l'aide

Eléphanteau du PHP | 19 Messages

29 mai 2013, 08:11

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") ;
		}
		
?>

Mammouth du PHP | 619 Messages

29 mai 2013, 10:16

Bonjour,

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

Eléphanteau du PHP | 19 Messages

29 mai 2013, 10:27

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.

Mammouth du PHP | 619 Messages

29 mai 2013, 10:35

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

Eléphanteau du PHP | 19 Messages

29 mai 2013, 10:38

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

Mammouth du PHP | 619 Messages

29 mai 2013, 10:42

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 ?

Eléphanteau du PHP | 19 Messages

29 mai 2013, 10:45

j'ai une table membre et je veux juste la garder dans le répertoire j'ai pas besoin de son chemin

Mammouth du PHP | 619 Messages

29 mai 2013, 11:03

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)

Eléphanteau du PHP | 19 Messages

29 mai 2013, 11:15

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?