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

Langage PHP Discussion :

Upload images miniatures


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 109
    Par défaut Upload images miniatures
    Bonjour à vous,

    J'essaye depuis de jour de faire un script d'upload d'image
    ( Je sais, je ne suis pas très doué )

    Je suis finalement arrivé tant bien que mal à faire marcher quelque chose qui envoie dans un dossier image après redimensionnement.

    Ma problème est que j'aimerais garder deux version de mon image uploadé, l'originale et la miniature.
    Mais c'est un peu le souk dans mon script et je ne sais pas vraiment où placer le fait de garder l’originale.

    Quelqu'un peu m'aider

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
     
        define('TARGET', 'images/');
        define('MAX_SIZE', 200000); 
        define('WIDTH_MAX', 1920);
        define('HEIGHT_MAX', 1080);
     
        $tabExt = array('jpg','gif','png','jpeg'); 
        $infosImg = array();
     
        $extension = '';
        $message = '';
        $nomImage = '';
     
     
    if(!empty($_POST)){ 
            // On verifie si le champ est rempli 
            if( !empty($_FILES['fichier']['name']) ) {
                // Recuperation de l'extension du fichier 
                $extension = pathinfo($_FILES['fichier']['name'], PATHINFO_EXTENSION); 
                // On verifie l'extension du fichier 
                if(in_array(strtolower($extension),$tabExt)) { 
                    // On recupere les dimensions du fichier 
                    $infosImg = getimagesize($_FILES['fichier']['tmp_name']); 
                    // On verifie le type de l'image 
                    if($infosImg[2] >= 1 && $infosImg[2] <= 14) {
                        // On verifie les dimensions et taille de l'image 
                        if(($infosImg[0] <= WIDTH_MAX) && ($infosImg[1] <= HEIGHT_MAX) && 
                                (filesize($_FILES['fichier']['tmp_name']) <= MAX_SIZE)){ 
                        //on redimentionne limage
     
                        $x = 300; 
                        $y = 200; # Taille en pixel de l'image redimensionnée 
     
    							}
     
                        if ($infosImg) echo 'Image redimensionnée ... '; 
     
                        if ($infosImg['mime']=='image/jpeg' ) { 
                            $img_big = imagecreatefromjpeg($_FILES['fichier']['tmp_name']); # On ouvre l'image d'origine 
                           $img_new = imagecreate($x, $y); 
                            # création de la miniature 
                           $img_mini = imagecreatetruecolor($x, $y) 
                            or $img_mini = imagecreate($x, $y); 
     
                            // copie de l'image, avec le redimensionnement. 
                            imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$infosImg[0],$infosImg[1]); 
     
                            imagejpeg($img_mini,$_FILES['fichier']['tmp_name'] ); 
                        }
                        elseif ($infosImg['mime']=='image/png' ) { 
                            $img_big = imagecreatefrompng($_FILES['fichier']['tmp_name']); # On ouvre l'image d'origine 
                           $img_new = imagecreate($x, $y); 
                            # création de la miniature 
                           $img_mini = imagecreatetruecolor($x, $y) 
                            or $img_mini = imagecreate($x, $y); 
     
                            // copie de l'image, avec le redimensionnement. 
                            imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$infosImg[0],$infosImg[1]); 
     
                            imagepng($img_mini,$_FILES['fichier']['tmp_name'] ); 
                        }
                        elseif ($infosImg['mime']=='image/gif' ) { 
                            $img_big = imagecreatefromgif($_FILES['fichier']['tmp_name']); # On ouvre l'image d'origine
                           $img_new = imagecreate($x, $y); 
                            # création de la miniature 
                           $img_mini = imagecreatetruecolor($x, $y) 
                             or $img_mini = imagecreate($x, $y); 
     
                            // copie de l'image, avec le redimensionnement. 
                            imagecopyresized($img_mini,$img_big,0,0,0,0,$x,$y,$infosImg[0],$infosImg[1]); 
     
                            imagegif($img_mini,$_FILES['fichier']['tmp_name'] ); 
                        }
     
                        { 
                            // Parcours du tableau d'erreurs 
                            if(isset($_FILES['fichier']['error']) 
                                && UPLOAD_ERR_OK === $_FILES['fichier']['error']) { 
                                // On renomme le fichier 
                                $nomImage = md5(uniqid()) .'.'. $extension; 
                                // Si c'est OK, on teste l'upload 
                                if(move_uploaded_file($_FILES['fichier']['tmp_name'], TARGET.$nomImage)) { 
                                    $message = 'Upload réussi !';
                                } 
                                else { 
                                    // Sinon on affiche une erreur systeme 
                                    $message = 'Problème lors de l\'upload !';
                                } 
                            } 
                            else { 
                            $message = 'Une erreur interne a empêché l\'uplaod de l\'image';
                            } 
                        }
                    }  
                    else { 
                        // Sinon erreur sur les dimensions et taille de l'image 
                        $message = 'Erreur dans les dimensions de l\'image !'; 
                    } 
                } 
                else { 
                    // Sinon erreur sur le type de l'image 
                    $message = 'Le fichier à uploader n\'est pas une image !'; 
                } 
            } 
            else { 
                var_dump($_FILES);
                // Sinon on affiche une erreur pour l'extension 
                $message = 'La validation est incorrecte !';
            } 
            }
        else { 
        // Sinon on affiche une erreur pour le champ vide 
            $message = 'Veuillez remplir le formulaire svp !'; 
        }
    ?>

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Août 2010
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant E-Business

    Informations forums :
    Inscription : Août 2010
    Messages : 216
    Par défaut
    Salut Truncks,

    Voici comment je procède sur mon site :

    Extrait du formulaire :
    (image 5Mo max)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <input type="hidden" name="MAX_FILE_SIZE" value="5242880" />
    <input type="file" name="userfile">
    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
     
    include("./includes/inc_redimimageFunctions.php");
     
    // transfert de fichier vers le serveur
    		$uploaddir = $_SERVER['DOCUMENT_ROOT']."/images/";
    		move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name']);
    		$nFile = $_FILES['userfile']['name'];
     
    		// redimensionner les images
    		$redimPHOTOOK100 = fctredimimage(100,0,'','100_'.$nFile,$uploaddir,$nFile);
    		if ($redimPHOTOOK100 == 1) {
    			$img100 = '100_'.$nFile;
    		} else {
    			$img100 = $nFile;
    		}
     
    		$redimPHOTOOK150 = fctredimimage(150,0,'','150_'.$nFile,$uploaddir,$nFile);
    		if ($redimPHOTOOK150 == 1) {
    			$img150 = '150_'.$nFile;
    		} else {
    			$img150 = $nFile;
    		}
    inc_redimimageFunctions.php :
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
     
    <?
    // 	---------------------------------------------------------------
    // fonction de REDIMENSIONNEMENT physique "PROPORTIONNEL" et Enregistrement
    // 	---------------------------------------------------------------
    // retourne : 1 (vrai) si le redimensionnement et l enregistrement ont bien eu lieu, sinon rien (false)
    // 	---------------------------------------------------------------
    // La FONCTION : fctredimimage ($W_max, $H_max, $rep_Dst, $img_Dst, $rep_Src, $img_Src)
    // Les parametres :
    // - $W_max : LARGEUR maxi finale --> ou 0
    // - $H_max : HAUTEUR maxi finale --> ou 0
    // - $rep_Dst : repertoire de l image de Destination (deprotégé) --> ou '' (meme repertoire)
    // - $img_Dst : NOM de l image de Destination --> ou '' (meme nom que l image Source)
    // - $rep_Src : repertoire de l image Source (deprotégé)
    // - $img_Src : NOM de l image Source
    // 	---------------------------------------------------------------
    // 3 options :
    // A- si $W_max != 0 et $H_max != 0 : a LARGEUR maxi ET HAUTEUR maxi fixes
    // B- si $H_max != 0 et $W_max == 0 : image finale a HAUTEUR maxi fixe (largeur auto)
    // C- si $W_max == 0 et $H_max != 0 : image finale a LARGEUR maxi fixe (hauteur auto)
    // Si l'image Source est plus petite que les dimensions indiquees : PAS de redimensionnement.
    // 	---------------------------------------------------------------
    // $rep_Dst : il faut s'assurer que les droits en écriture ont été donnés au dossier (chmod)
    // - si $rep_Dst = ''   : $rep_Dst = $rep_Src (meme repertoire que l image Source)
    // - si $img_Dst = '' : $img_Dst = $img_Src (meme nom que l image Source)
    // - si $rep_Dst='' ET $img_Dst='' : on ecrase (remplace) l image source !
    // 	---------------------------------------------------------------
    // NB : $img_Dst et $img_Src doivent avoir la meme extension (meme type mime) !
    // Extensions acceptees (traitees ici) : .jpg , .jpeg , .png
    // Pour ajouter d autres extensions : voir la bibliotheque GD ou ImageMagick
    // (GD) NE fonctionne PAS avec les GIF ANIMES ou a fond transparent !
    // 	---------------------------------------------------------------
    // UTILISATION (exemple) :
    // $redimOK = fctredimimage(120,80,'reppicto/','monpicto.jpg','repimage/','monimage.jpg');
    // if ($redimOK == 1) { echo 'Redimensionnement OK !';  }
    // 	---------------------------------------------------------------
    function fctredimimage($W_max, $H_max, $rep_Dst, $img_Dst, $rep_Src, $img_Src) {
     // ------------------------------------------------------------------
     $condition = 0;
     // Si certains parametres ont pour valeur '' :
       if ($rep_Dst == '') { $rep_Dst = $rep_Src; } // (meme repertoire)
       if ($img_Dst == '') { $img_Dst = $img_Src; } // (meme nom)
     // ------------------------------------------------------------------
     // si le fichier existe dans le répertoire, on continue...
     if (file_exists($rep_Src.$img_Src) && ($W_max!=0 || $H_max!=0)) { 
       // ----------------------------------------------------------------
       // extensions acceptees : 
       $ExtfichierOK = '" jpg jpeg png"'; // (l espace avant jpg est important)
       // extension fichier Source
       $tabimage = explode('.',$img_Src);
       $extension = $tabimage[sizeof($tabimage)-1]; // dernier element
       $extension = strtolower($extension); // on met en minuscule
       // ----------------------------------------------------------------
       // extension OK ? on continue ...
       if (strpos($ExtfichierOK,$extension) != '') {
          // -------------------------------------------------------------
          // recuperation des dimensions de l image Src
          $img_size = getimagesize($rep_Src.$img_Src);
          $W_Src = $img_size[0]; // largeur
          $H_Src = $img_size[1]; // hauteur
          // -------------------------------------------------------------
          // condition de redimensionnement et dimensions de l image finale
          // -------------------------------------------------------------
          // A- LARGEUR ET HAUTEUR maxi fixes
          if ($W_max != 0 && $H_max != 0) {
             $ratiox = $W_Src / $W_max; // ratio en largeur
             $ratioy = $H_Src / $H_max; // ratio en hauteur
             $ratio = max($ratiox,$ratioy); // le plus grand
             $W = $W_Src/$ratio;
             $H = $H_Src/$ratio;   
             $condition = ($W_Src>$W) || ($W_Src>$H); // 1 si vrai (true)
          }      // -------------------------------------------------------------
          // B- HAUTEUR maxi fixe
          if ($W_max == 0 && $H_max != 0) {
             $H = $H_max;
             $W = $H * ($W_Src / $H_Src);
             $condition = $H_Src > $H_max; // 1 si vrai (true)
          }
          // -------------------------------------------------------------
          // C- LARGEUR maxi fixe
          if ($W_max != 0 && $H_max == 0) {
             $W = $W_max;
             $H = $W * ($H_Src / $W_Src);         
             $condition = $W_Src > $W_max; // 1 si vrai (true)
          }
          // -------------------------------------------------------------
          // on REDIMENSIONNE si la condition est vraie
          // -------------------------------------------------------------
          // Par defaut : 
    	  // Si l'image Source est plus petite que les dimensions indiquees :
    	  // PAS de redimensionnement.
    	  // Mais on peut "forcer" le redimensionnement en ajoutant ici :
    	  // $condition = 1;
          if ($condition == 1) {
             // ----------------------------------------------------------
             // creation de la ressource-image "Src" en fonction de l extension
             switch($extension) {
             case 'jpg':
             case 'jpeg':
               $Ress_Src = imagecreatefromjpeg($rep_Src.$img_Src);
               break;
             case 'png':
               $Ress_Src = imagecreatefrompng($rep_Src.$img_Src);
               break;
             }
             // ----------------------------------------------------------
             // creation d une ressource-image "Dst" aux dimensions finales
             // fond noir (par defaut)
             switch($extension) {
             case 'jpg':
             case 'jpeg':
               $Ress_Dst = imagecreatetruecolor($W,$H);
               break;
             case 'png':
               $Ress_Dst = imagecreatetruecolor($W,$H);
               // fond transparent (pour les png avec transparence)
               imagesavealpha($Ress_Dst, true);
               $trans_color = imagecolorallocatealpha($Ress_Dst, 0, 0, 0, 127);
               imagefill($Ress_Dst, 0, 0, $trans_color);
               break;
             }
             // ----------------------------------------------------------
             // REDIMENSIONNEMENT (copie, redimensionne, re-echantillonne)
             imagecopyresampled($Ress_Dst, $Ress_Src, 0, 0, 0, 0, $W, $H, $W_Src, $H_Src); 
             // ----------------------------------------------------------
             // ENREGISTREMENT dans le repertoire (avec la fonction appropriee)
             switch ($extension) { 
             case 'jpg':
             case 'jpeg':
               imagejpeg ($Ress_Dst, $rep_Dst.$img_Dst);
               break;
             case 'png':
               imagepng ($Ress_Dst, $rep_Dst.$img_Dst);
               break;
             }
             // ----------------------------------------------------------
             // liberation des ressources-image
             imagedestroy ($Ress_Src);
             imagedestroy ($Ress_Dst);
          }
          // -------------------------------------------------------------
       }
     }
    // 	---------------------------------------------------------------
     // si le fichier a bien ete cree
     if ($condition == 1 && file_exists($rep_Dst.$img_Dst)) { return true; }
     else { return false; }
    }
    // retourne : 1 (vrai) si le redimensionnement et l enregistrement ont bien eu lieu, sinon rien (false)
    // 	---------------------------------------------------------------
    ?>
    J'espère t'aider un peu.

    Aurélien

  3. #3
    Membre confirmé
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Août 2010
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant E-Business

    Informations forums :
    Inscription : Août 2010
    Messages : 216
    Par défaut
    Complément de réponse :

    dans mon code l'original est envoyé dans le dossier image ainsi que les images redimentionnées.

    Si l'image à redim est plus petite que la taille souhaitée, on utilise l'image d'origine.

    En suite me concernant j'enregistre le nom des images dans ma base de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // insertion de la nouvelle soirée dans la base de donnée 
    		$sqlQuery =
    			" INSERT INTO `TRUC` ( `IMAGE` , `IMAGE_100` , `IMAGE_150`)" .
    			" VALUES ('$nFile', '$img100', '$img150' ) ";
    		mysql_query($sqlQuery);
    		checkSqlError($sqlQuery);
    Aurélien

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par AurelienNF Voir le message
    Voici comment je procède sur mon site :
    [...]
    inc_redimimageFunctions.php :
    [...]
    Bien vu !
    Je vois que tu utilises mes Fonctions de redimensionnement d'images

    Pour la gestion d'erreur et l'upload/enregistrment de la photo + miniature :
    -> Système de Gestion-Affichage de Nouvelles (voir dans l'archive)

  5. #5
    Membre confirmé
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Août 2010
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant E-Business

    Informations forums :
    Inscription : Août 2010
    Messages : 216
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bien vu !
    Je vois que tu utilises mes Fonctions de redimensionnement d'images
    Et oui. Et merci au passage ! Ton code m'a grandement aidé pour la gestion de mes images

    Aurélien

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 109
    Par défaut
    Merci pour cette réponse, je vais regarder attentivement ton exemple.

    J'aurais juste besoin d'un dernier conseil.

    Sachant que lorsque je crée une catégorie ( avec une interface admin ), il se crée automatiquement deux dossier du même nom que cette catégorie ( un pour les images normales et un pour les minis ) et que mon but final sera pendant l'upload, de rediriger les images dans les dossiers de la catégorie correspondante ( ouf ), que me conseillez vous de faire pour sauvegarder le chemin de l'image ?

    L'url en entier ?
    Une combinaison du genre $categorie/$nom_image.extention

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 109
    Par défaut
    Re-bonjour,

    Tout d'abord, merci pour ce superbe exemple qui m'a bien aidé.

    J'ai un dernier petit soucis, c'est pour l’insertion du nom dans la bdd.

    Quand je fais cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        $sq="insert into images values('',\"$titre_image\",\"$titre_image2\",\"$texte_image\",\"$texte_image2\",\"$nFile\")"; 
        $quer=mysql_query($sq ) or die('erreur sq: '.mysql_error());
    Il m'enregistre un 0 dans le champ correspondant et un 150 si je prend l'image redimensionnée

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    mon conseil est d'optimiser les données pour enregistrer le moins de "caractères" en base de données (pour ne pas l'alourdir inutilement).

    La façon de s'y prendre dépend de choix et de préférences personnelles.

    Je prends un exemple personnel (simplifié) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    A/ une table ART_ARTICLE
    id_article	(id de l article, auto-incrément)
    id_categorie
    photo_art	(nom de la photo liée à l article)
     
    B/ une table ART_CATEGORIE
    id_categorie	(id de la catégorie, auto-incrément)
    nom_cat
    url_cat		(dossier de la catégorie)
    On suppose (comme dans ton cas) que :
    1/ quand on crée une categorie :
    -> on crée 1 dossier nommée : "id_cat-nom_cat" (id_cat rend le nom du dossier unique), par ex. 23-film-comique, 24-film-de-guerre,...
    -> dans ce dossier, on crée 2 dossiers : "rep-photos" et "rep-pictos"

    2/ quand on upload une image (à joindre à l'article) :
    -> on a d'abord choisi la catégorie (ex. via une liste déroulante dans le formulaire) :
    => donc, on récupère l'id_categorie (ex. : 23). A partir de cet id, on connait le nom du dossier de destination (ex. : "23-film-comique")
    -> la photo et le picto auront le même nom : id_article-photo_art (ex. : 1563-la-grande-vadrouille.jpg)
    -> on enregistre (physiquement) la photo originale dans le dossier : "23-film-comique/rep-photos"
    -> après redimensionnement, on enregistre (physiquement) le picto dans le dossier : "23-film-comique/rep-pictos"

    => en base de données (table ART_ARTICLE), on enregistre UNIQUEMENT :
    id_categorie = '23'
    photo_art = '1563-la-grande-vadrouille.jpg'

    Soit un minimum d'infos enregistrées en base de données.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Concernant ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sq = "insert into images values('','$titre_image','$titre_image2','$texte_image','$texte_image2','$nFile')";
    OU autre écriture possible (choix perso) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sq = "insert into images values('','".$titre_image."','".$titre_image2."','".$texte_image."','".$texte_image2."','".$nFile."')";
    Sans autre explication (valeur des données ?), c'est tout ce qu'on peut en dire...

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 109
    Par défaut
    Merci infiniment de m'aider

    Voici où j'en suis:
    A ce stade il me reste deux problèmes, donc le nom de l'image qui ne s'enregistre pas dans le champ.
    Et également, je ne sais pas pourquoi, une fois l'upload de l'image effectué, les accents deviennent des lettres bizarres, pour tant mon encodage est bien en utf-8 partout ( cela ne le fait que sur l'image )

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    <?php
     
    include("inc_redimimageFunctions.php");
     
    require("../connexion/conf.php");
     
    $conn = mysql_connect($sql_serveur, $sql_user, $sql_passwd) or trigger_error(mysql_error(),E_USER_ERROR);
     
    mysql_query("SET CHARACTER SET 'utf8';")or die(mysql_error()); 
     
    mysql_select_db($sql_bdd, $conn); 
     
    if(isset($_POST['action'])){
     
    // transfert de fichier vers le serveur
    		$uploaddir = $_SERVER['DOCUMENT_ROOT']."/test/images/";
    		$uploaddir2 = $_SERVER['DOCUMENT_ROOT']."/test/images/mini/";
    		move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name']);
    		$nFile = $_FILES['userfile']['name'];
     
    		// redimensionner les images 
    		$redimPHOTOOK150 = fctredimimage(200,0,'','200_'.$nFile,$uploaddir2,$nFile);
    		if ($redimPHOTOOK150 == 1) {
    			$img150 = '200_'.$nFile;
    		} else {
    			$img150 = $nFile;
    		}
     
    	// Récupération des variables nécessaires   
        $titre_image = mysql_real_escape_string($_POST['titre_image']);
        $titre_image2 = mysql_real_escape_string($_POST['titre_image2']);
    	$texte_image = mysql_real_escape_string($_POST['texte_image']);
    	$texte_image2 = mysql_real_escape_string($_POST['texte_image2']);
     
        $sq="insert into images values('',\"$titre_image\",\"$titre_image2\",\"$texte_image\",\"$texte_image2\",\"$nFile\")"; 
        $quer=mysql_query($sq ) or die('erreur sq: '.mysql_error());
     
    }
     
    else{	
    ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     
    <head>
     
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
    <title>Ajouter une image</title>
     
    </head>
     
    <body>
     
    <form action="images.php" method="post" enctype="multipart/form-data">
    <input type="hidden" name="action" value="add" />
     
    Ajouter le titre:<br /><input type="text" name="titre_image"/><br /><br />
    Titre en Anglais::<br /><input type="text" name="titre_image2"/><br /><br />
    Ajouter le texte:<br /><textarea name="texte_image"></textarea><br /><br />
    Texte en Anglais:<br /><textarea name="texte_image2"></textarea><br /><br />
     
    <input type="hidden" name="MAX_FILE_SIZE" value="5242880" />
    <input type="file" name="userfile">
    <input type="submit" name="submit" value="Envoyer" /></input>
    </form>
     
    <?php
    }
    ?>
     
    </body>
    </html>

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 109
    Par défaut
    Merci infiniment de m'aider

    Voici où j'en suis:
    A ce stade il me reste deux problèmes, donc le nom de l'image qui ne s'enregistre pas dans le champ.
    Et également, je ne sais pas pourquoi, une fois l'upload de l'image effectué, les accents deviennent des lettres bizarres, pour tant mon encodage est bien en utf-8 partout ( cela ne le fait que sur le nom de l'image )

    J'ai aussi essayé d’enregistrer les mini dans un autre dossier, mais je crois que je m'y prend mal lol

    EDIT: Désolé pour ce double post, une erreur de navigateur...

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    <?php
     
    include("inc_redimimageFunctions.php");
     
    require("../connexion/conf.php");
     
    $conn = mysql_connect($sql_serveur, $sql_user, $sql_passwd) or trigger_error(mysql_error(),E_USER_ERROR);
     
    mysql_query("SET CHARACTER SET 'utf8';")or die(mysql_error()); 
     
    mysql_select_db($sql_bdd, $conn); 
     
    if(isset($_POST['action'])){
     
    // transfert de fichier vers le serveur
    		$uploaddir = $_SERVER['DOCUMENT_ROOT']."/test/images/";
    		$uploaddir2 = $_SERVER['DOCUMENT_ROOT']."/test/images/mini/";
    		move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name']);
    		$nFile = $_FILES['userfile']['name'];
     
    		// redimensionner les images 
    		$redimPHOTOOK150 = fctredimimage(200,0,'','200_'.$nFile,$uploaddir2,$nFile);
    		if ($redimPHOTOOK150 == 1) {
    			$img150 = '200_'.$nFile;
    		} else {
    			$img150 = $nFile;
    		}
     
    	// Récupération des variables nécessaires   
        $titre_image = mysql_real_escape_string($_POST['titre_image']);
        $titre_image2 = mysql_real_escape_string($_POST['titre_image2']);
    	$texte_image = mysql_real_escape_string($_POST['texte_image']);
    	$texte_image2 = mysql_real_escape_string($_POST['texte_image2']);
     
        $sq="insert into images values('',\"$titre_image\",\"$titre_image2\",\"$texte_image\",\"$texte_image2\",\"$nFile\")"; 
        $quer=mysql_query($sq ) or die('erreur sq: '.mysql_error());
     
    }
     
    else{	
    ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     
    <head>
     
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     
    <title>Ajouter une image</title>
     
    </head>
     
    <body>
     
    <form action="images.php" method="post" enctype="multipart/form-data">
    <input type="hidden" name="action" value="add" />
     
    Ajouter le titre:<br /><input type="text" name="titre_image"/><br /><br />
    Titre en Anglais::<br /><input type="text" name="titre_image2"/><br /><br />
    Ajouter le texte:<br /><textarea name="texte_image"></textarea><br /><br />
    Texte en Anglais:<br /><textarea name="texte_image2"></textarea><br /><br />
     
    <input type="hidden" name="MAX_FILE_SIZE" value="5242880" />
    <input type="file" name="userfile">
    <input type="submit" name="submit" value="Envoyer" /></input>
    </form>
     
    <?php
    }
    ?>
     
    </body>
    </html>

  12. #12
    Invité
    Invité(e)
    Par défaut
    Essaye ca :
    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
    // SI LE FORMULAIRE est posté : traitement
    if(isset($_POST['action'])){
     
    	// -------------
    	$uploaddir = $_SERVER['DOCUMENT_ROOT']."/test/images/";
    	$uploaddir2 = $_SERVER['DOCUMENT_ROOT']."/test/images/mini/";
    	// -------------
    	$nFile 		= strtolower(trim($_FILES['userfile']['name']));
    	// remplacement (caracteres accentués, espace)
    	$avec_accent = utf8_decode("ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÒÓÔÕÖŒØÙÚÛÜÝàáâãäåæçèéêëìíîïðòóôõöùúûüýÿÑñŠšœ ");
    	$sans_accent = utf8_decode("AAAAAAACEEEEIIIIOOOOOOOUUUUYaaaaaaaceeeeiiiioooooouuuuyynnsso-");
    	$nFile		= strtr($nFile, $avec_accent, $sans_accent);
    	// -------------
    	// on enregistre la photo originale
    	move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $nom_image_upload);
    	// -------------
    	// on COPIE la photo originale (pour le picto, avant redimensionnement)
    	copy($uploaddir.$nFile, $uploaddir2.'200_'.$nFile);
    	// redimensionnement/enregistrement du picto
    	$redimPHOTOOK150 = fctredimimage(200, 0, '', '', $uploaddir2, '200_'.$nFile);
     	// -------------
    	// Récupération des textes associés   
        $titre_image = mysql_real_escape_string($_POST['titre_image']);
        $titre_image2 = mysql_real_escape_string($_POST['titre_image2']);
    	$texte_image = mysql_real_escape_string($_POST['texte_image']);
    	$texte_image2 = mysql_real_escape_string($_POST['texte_image2']);
     	// -------------
        $sq = "INSERT INTO images VALUES('','$titre_image','$titre_image2','$texte_image','$texte_image2','$nFile')"; 
        $quer = mysql_query($sq ) or die('erreur sq: '.mysql_error());
     
    } // fin traitement
    Remarque : tu n'as pas de GESTION d'ERREUR...

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 109
    Par défaut
    Merci, j'ai testé et j'ai désormais ceci:


    Notice: Undefined variable: nom_image_upload in C:\wamp\www\test\images.php on line 27

    Warning: move_uploaded_file() [function.move-uploaded-file]: The second argument to copy() function cannot be a directory in C:\wamp\www\test\images.php on line 27

    Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\wamp\tmp\php9EA2.tmp' to 'C:/wamp/www//test/images/' in C:\wamp\www\test\images.php on line 27

    Warning: copy(C:/wamp/www//test/images/lac.jpg) [function.copy]: failed to open stream: No such file or directory in C:\wamp\www\test\images.php on line 30

  14. #14
    Invité
    Invité(e)
    Par défaut
    Fichier complet, avec gestion d'erreur :
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    <?php
    include("inc_redimimageFunctions.php");
    require("../connexion/conf.php");
    $conn = mysql_connect($sql_serveur, $sql_user, $sql_passwd) or trigger_error(mysql_error(),E_USER_ERROR);
    mysql_query("SET CHARACTER SET 'utf8';")or die(mysql_error()); 
    mysql_select_db($sql_bdd, $conn); 
    	// -------------
    	define('FILE_EXTENSION_PHOTO', '.jpg, .png, .gif');
    	// initialisation	
    	$titre_image 	= '';
    	$titre_image2 	= '';
    	$texte_image 	= '';
    	$texte_image2 	= '';
    	// -------------
    	$msgErreurPhoto = ''; 	// message d erreur
    	$msgvalidPhoto 	= ''; 	// message de validation
    	$traiterPhotoOK = 'NON'; // (par defaut)
    // ----------------------------------
    // SI LE FORMULAIRE est posté : traitement
    // ----------------------------------
    if(isset($_POST['action'])){
     
    	// -------------
    	// Récupération des textes associés   
    	$MAX_FILE_SIZE	= intval($_POST['MAX_FILE_SIZE']);
    	$titre_image = mysql_real_escape_string($_POST['titre_image']);
    	$titre_image2 = mysql_real_escape_string($_POST['titre_image2']);
    	$texte_image = mysql_real_escape_string($_POST['texte_image']);
    	$texte_image2 = mysql_real_escape_string($_POST['texte_image2']);
    	// -------------
      // SI on a bien une photo uploadée :
      if(isset($_FILES['userfile']) && $_FILES['userfile']['size']>0)
      {
    	// -------------------------------------
    	// 1/ GESTION DES ERREURS de la photo
    	// -------------------------------------
    	// extension du fichier uploadé (en minuscule)
    	$file_Extension 	= strtolower(pathinfo($_FILES['userfile']['name'],PATHINFO_EXTENSION));
    	// -----------------
    	// on verifie les restrictions sur les fichiers
    	if (UPLOAD_ERR_OK<>0 && UPLOAD_ERR_FORM_SIZE==2) {
    		$msgErreurPhoto .= 'Erreur <b>Photo</b> : Taille de fichier trop important ('.round($MAX_FILE_SIZE/1000000).' Mo)<br />';
    		$traiterPhotoOK = 'NON';
    	}
    	// on verifie la taille maxi
    	elseif ($_FILES['userfile']['size'] > $MAX_FILE_SIZE) {
    		$msgErreurPhoto .= 'Erreur <b>Photo</b> : Taille supérieure à la taille maxi autorisée ('.round($MAX_FILE_SIZE/1000000).' Mo)<br />';
    		$traiterPhotoOK = 'NON';
    	}
    	// on verifie l extension
    	elseif ($_FILES['userfile']['size']>0 && @strpos(FILE_EXTENSION_PHOTO,$file_Extension)===false) {
    		$msgErreurPhoto .= 'Erreur <b>Photo</b> : Ce n\'est pas un fichier valide ('.FILE_EXTENSION_PHOTO.')<br />';
    		$traiterPhotoOK = 'NON';
    	}
    	if ($traiterPhotoOK=='NON' && $msgErreurPhoto!='') {
    		$msgErreurPhoto .= 'Impossible d\'enregistrer le fichier.';
    	} else {
    		$traiterPhotoOK='OK';
    	}
    	// -------------------------------------
    	// 2/ si pas d'erreur : TRAITEMENT
    	// -------------------------------------
    	if ($traiterPhotoOK=='OK')
    	{
    		// -------------
    		// dossiers
    		$uploaddir 		= $_SERVER['DOCUMENT_ROOT']."/test/images/";
    		$uploaddir2 	= $_SERVER['DOCUMENT_ROOT']."/test/images/mini/";
    		// -------------
    		// nom de la photo
    		$nFile 			= strtolower(trim($_FILES['userfile']['name']));
    		// remplacement (caracteres accentués, espace)
    		$avec_accent 	= utf8_decode("ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÒÓÔÕÖŒØÙÚÛÜÝàáâãäåæçèéêëìíîïðòóôõöùúûüýÿÑñŠšœ ");
    		$sans_accent 	= utf8_decode("AAAAAAACEEEEIIIIOOOOOOOUUUUYaaaaaaaceeeeiiiioooooouuuuyynnsso-");
    		$nFile			= strtr($nFile, $avec_accent, $sans_accent);
    		// -------------
    		// on enregistre la photo originale
    		move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir.$nFile);
    		// -------------
    		// on COPIE la photo originale (pour le picto, avant redimensionnement)
    		copy($uploaddir.$nFile, $uploaddir2.'200_'.$nFile);
    		// redimensionnement/enregistrement du picto
    		$redimPHOTOOK150 = fctredimimage(200, 0, '', '', $uploaddir2, '200_'.$nFile);
    		// -------------
    		$sq = "INSERT INTO images VALUES('','$titre_image','$titre_image2','$texte_image','$texte_image2','$nFile')"; 
    		$quer = mysql_query($sq ) or die('erreur sq: '.mysql_error());
    		// -------------
    		// message de validation
    		$msgvalidPhoto 	= 'La photo a été uploadée';
    	} // fin TRAITEMENT Photo
      } // fin si photo uploadée
    } // fin traitement
    ?>
    <!DOCTYPE html">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    	<title>Ajouter une image</title>
    </head>
    <body>
     
    <?php
    // ---------------------------------
    // Traitement OK : message de validation
    // ---------------------------------
    if($traiterPhotoOK=='OK') 
    {
    	echo '<p>'.$msgvalidPhoto.'</p>';
    	// ON PEUT METTRE ICI UN BOUTON "retour" (ou autre)
    }
    // ---------------------------------
    // Affichage du FORMULAIRE
    // ---------------------------------
    elseif($traiterPhotoOK=='NON') 
    {
    	// message erreur upload ?
    	if($msgErreurPhoto!='') {
    		echo '<p>'.$msgErreurPhoto.'</p>';
    	}
    	// FORMULAIRE
    ?>
    	<form action="images.php" method="post" enctype="multipart/form-data">
    		<input type="hidden" name="action" value="add" />
    		<input type="hidden" name="MAX_FILE_SIZE" value="5242880" />
     
    		<p>Ajouter le titre:<br /><input type="text" name="titre_image" value="<?php echo $titre_image; ?>"/></p>
    		<p>Titre en Anglais::<br /><input type="text" name="titre_image2" value="<?php echo $titre_image2; ?>"/></p>
    		<p>Ajouter le texte:<br /><textarea name="texte_image"><?php echo $texte_image; ?></textarea></p>
    		<p>Texte en Anglais:<br /><textarea name="texte_image2"><?php echo $texte_image2; ?></textarea></p>
     
    		<p><input type="file" name="userfile" /></p>
    		<p><input type="submit" name="submit" value="Envoyer" /></p>
    	</form>
    <?php
    } // fin formulaire
    ?>
     
    </body>
    </html>
    Dernière modification par Invité ; 30/10/2011 à 20h53.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 109
    Par défaut
    Re-boujour

    Voici les résulats après test:



    Notice: Use of undefined constant FILE_EXTENSION_PHOTO - assumed 'FILE_EXTENSION_PHOTO' in C:\wamp\www\test\images.php on line 51

    Erreur Photo : Ce n'est pas un fichier valide (FILE_EXTENSION_PHOTO)
    Impossible d'enregistrer le fichier.

  16. #16
    Invité
    Invité(e)
    Par défaut
    Ajoute (en haut de fichier) :
    define('FILE_EXTENSION_PHOTO', '.jpg, .png, .gif');
    (ce sont les extensions autorisées)

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 109
    Par défaut
    Je sais que vous allez finir par me bruler, mais il ne se passe rien quand je clique sur uploader.

    Quand je le met sur mon éditeur de texte, je crois qu'il y a une erreur de } mal fermé, mais je n'arrive pas à trouver lequel

  18. #18
    Invité
    Invité(e)
    Par défaut
    C'est exact, il manque un }.
    Mais je pense que tu es capable de le trouver seul, non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	} // fin TRAITEMENT Photo
      } // fin si photo uploadée <----------------------- ICI !!
    } // fin traitement

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 109
    Par défaut
    Ben c'est bien là que je l'avais mis en fait, mais il ne se passe toujours rien quand je clique.

    C'est pour ça que je disais que je ne trouvais pas

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 109
    Par défaut
    Ouf je viens de trouver !!

    En fait, il manquait le moment où la variable devient 'OK', c'est pour cela
    que le traitement ne se lançait pas !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    elseif ($traiterPhotoOK=='NON' && $msgErreurPhoto!='') {
    		$msgErreurPhoto .= 'Impossible d\'enregistrer le fichier.';
    	}
    		else {
    	$traiterPhotoOK ='OK';
     
    	}
    Ouf... Par contre, j'ai un c ( celui du copyright ) à la place des accents.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/10/2005, 10h33
  2. [Upload] Probleme upload images
    Par yveslens dans le forum Langage
    Réponses: 6
    Dernier message: 22/08/2005, 10h42
  3. [images miniatures]
    Par jean-jacques varvenne dans le forum Calcul scientifique
    Réponses: 1
    Dernier message: 19/08/2005, 21h33
  4. Réponses: 2
    Dernier message: 04/08/2005, 12h32
  5. [ImageMagick] Images miniatures
    Par oli2a dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 08/11/2004, 15h42

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