IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

MAJ d'une image upload par formulaire


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 93
    Points : 49
    Points
    49
    Par défaut MAJ d'une image upload par formulaire
    Bonjour, dans mon formulaire j'upload une image en tant qu'avatar.
    Lorsque je souhaite faire une MAJ, je peux la faire que si je n'ai qu'une image par défaut.

    Si dans ma fiche j'ai déjà un avatar avec l'id de la fiche, il refuse d'écraser cette image et de me la remplacer par la nouvelle.

    Je colle mes deux codes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    //--->>> upload de la photo
     
    			//si fichier à uploader
    			if ($avatar_perso != NULL) 
    			{
    				if (!empty($_FILES['avatar_perso']['tmp_name']) AND is_uploaded_file($_FILES['avatar_perso']['tmp_name'])) {
    					//vérif. poids du fichier
    					if(filesize($_FILES['avatar_perso']['tmp_name'])>30000){
    					echo("Erreur : taille supérieure à 30ko!");
    					}
    					else if(filesize($_FILES['avatar_perso']['tmp_name'])<30000) {
    					//Vérif type de fichier
    					list($largeur, $hauteur, $type, $attr)=getimagesize($_FILES['avatar_perso']['tmp_name']);
    						//Si pas Jpeg
    						if($type !=2 ) {
    						echo("Erreur : ce n'est pas un fichier JPEG!");
    						} 
    						//Sinon : OK
    						else if($type===2) {
    						//on select le perso qui vient d'être ajouté:
    						$av_perso = mysql_query("Select id, nickFR FROM heros WHERE nickFR = '".mysql_real_escape_string($nickFR)."'");
    						$assoc_req = mysql_fetch_assoc($av_perso);
    						$id_perso = $assoc_req['id']; //id du nouveau perso = nom image
    							//on bouge le fichier sur le serveur
    							if(move_uploaded_file($_FILES['avatar_perso']['tmp_name'], 'images/avatars/'.intval($id_perso).'.jpg')) {
    							mysql_query("UPDATE heros SET image = '".mysql_real_escape_string($id_perso)."' WHERE id ='".mysql_real_escape_string($id_perso)."'");
    							}
    							else {
    							//Erreur
    							echo("Erreur lors du chargement...");
    							}
    						}
    					}
    				}
    			}
    				//-->> fin upload de la photo
    Le même code modifier pour faire une maj

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    //si fichier à uploader
    			if ($avatar_maj != NULL) 
    			{
    				if (!empty($_FILES['avatar_maj']['tmp_name']) AND is_uploaded_file($_FILES['avatar_maj']['tmp_name'])) {
    					//vérif. poids du fichier
    					if(filesize($_FILES['avatar_maj']['tmp_name'])>30000){
    					echo("Erreur : taille supérieure à 30ko!");
    					}
    					else if(filesize($_FILES['avatar_maj']['tmp_name'])<30000) {
    					//Vérif type de fichier
    					list($largeur, $hauteur, $type, $attr)=getimagesize($_FILES['avatar_maj']['tmp_name']);
    						//Si pas Jpeg
    						if($type !=2 ) {
    						echo("Erreur : ce n'est pas un fichier JPEG!");
    						} 
    						//Sinon : OK
    						else if($type===2) {
     
    							//on bouge le fichier sur le serveur
    							if(move_uploaded_file($_FILES['avatar_maj']['tmp_name'], '../images/avatars/'.intval($idmaj).'.jpg')) {
    							mysql_query("UPDATE heros SET image = '".mysql_real_escape_string($idmaj)."' WHERE id ='".mysql_real_escape_string(
    $idmaj)."'");
    							}
    							else {
    							//Erreur
    							echo("Erreur lors du chargement...");
    							}
    						}
    					}
    				}
    			}
    				//-->> fin upload
    grosso modo tous mes updates se font, mais j'ai l'impression que l'image n'est pas écrasée sur le serveur si elle a le même nom.

    Merci de votre aide.

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonsoir,

    Il me semblait que move_uploaded_file écrasait un fichier si celui-ci est déjà existant. Ca doit être le cas, enfin ca dépend des droits sur le fichier mais vu que c'est PHP qui le créé normalement ca doit pas poser de soucis.. 'fin bref

    As-tu le message "Erreur lors du chargement..." affiché ?

    Si ce n'est pas le cas, regardes si ce n'est pas ton navigateur qui garde en cache l'ancienne image uploadée.

    Dans le cas contraire il te suffit de faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $filename =  '../images/avatars/'.$idmaj.'.jpg';
    if(file_exists($filename)){
        @unlink($filename);
    }
    if(move_uploaded_file($_FILES['avatar_maj']['tmp_name'], $filename)){
        // UPDATE SQL
    }
    else{
        echo 'Erreur lors du chargement...';
    }

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 93
    Points : 49
    Points
    49
    Par défaut
    non je n'ai pas de message "erreur lors du chargement"

    Je vais tester avec ta solution, je te tiens au courant.

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 93
    Points : 49
    Points
    49
    Par défaut
    Bonjour, j'ai testé avec ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    //Sinon : OK
    else if($type===2) {
     
    $filename =  '../images/avatars/'.$idmaj.'.jpg';
    if(file_exists($filename)){
        @unlink($filename);
    }
    //on bouge le fichier sur le serveur
    if(move_uploaded_file($_FILES['avatar_maj']['tmp_name'], $filename)){
    mysql_query("UPDATE heros SET image = '".mysql_real_escape_string($idmaj)."' WHERE id ='".mysql_real_escape_string(
    $idmaj)."'");
    }
    else {
    //Erreur
    echo("Erreur lors du chargement...");
    }
    cela n'update pas l'image.
    Je n'ai pas de message erreur lors du chargement.

    J'espère ne pas avoir fait d'erreur lors de la retranscription de ton code dans le mien.

  5. #5
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,
    cela n'update pas l'image.
    Tu parles du fichier image ou du champ "image" qui est dans ta base de données ?

    Qu'affiches ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    //Sinon : OK
    else if($type===2) {
     
    $filename =  '../images/avatars/'.$idmaj.'.jpg';
    if(file_exists($filename)){
        echo 'Suppression de '.$filename.'<br/>';
        @unlink($filename);
    }
    //on bouge le fichier sur le serveur
    if(move_uploaded_file($_FILES['avatar_maj']['tmp_name'], $filename)){
        echo 'Image uploadée sur le serveur<br/>';
        if(mysql_query("UPDATE heros SET image = '".mysql_real_escape_string($idmaj)."' WHERE id ='".mysql_real_escape_string(
    $idmaj)."'")){
            echo 'Base de données mise à jour<br/>';
            }
        else{
            echo 'Erreur lors de la modification de la base de données <br/>';
        }
    }
    else {
        echo 'Erreur lors de l\'upload de l\'image<br/>';
    }

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 93
    Points : 49
    Points
    49
    Par défaut
    super ca marche

    Suppression de ../.../253.jpg
    Image uploadée sur le serveur
    Base de données mise à jour
    Par contre il faut que je fasse une CTRL+F5 pour rafraichir ma page et voir le résultat.

    Une idée pour que cela passe en ne faisant qu'un "actualiser"

    ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/09/2010, 14h23
  2. Réponses: 8
    Dernier message: 16/09/2008, 19h48
  3. Réponses: 6
    Dernier message: 22/05/2007, 11h01
  4. [Image]Insérer une image générée par PHP dans un formulaire (anti-robot)
    Par dark_vidor dans le forum Bibliothèques et frameworks
    Réponses: 14
    Dernier message: 29/04/2006, 22h48
  5. Réponses: 3
    Dernier message: 19/01/2006, 14h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo