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] Problème pour gestion d'erreur avec class


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Developpeur
    Inscrit en
    Septembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Septembre 2004
    Messages : 114
    Points : 43
    Points
    43
    Par défaut [Upload] Problème pour gestion d'erreur avec class
    Bonjour,

    Voilà suite à tous les traitements sur les photos que je peux uploader j'ai décidé de créer une class dédiée à cela.
    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
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
     
    <?php
    class UploadPhotos {
     
     
    var $id_membre; // Contient l'id membre qui upload les photos
    var $niv; // Contient le niveau dans lequel les fonctions sont appelées (niveau 1 : racine, niveau 2 : admin)
    var $ratio; // Taille de l'image max pour la miniature
    var $no_error; // Contient l'etat des erreurs
    var $erreur; // Contient le message d'erreur
     
    function UploadPhotos(){
    $this->niv = 1;
    $this->ratio = 150;
    $this->no_error = true;
    $this->erreur = '';
    }
     
    ##########################################
    // Fonction upload
    // Description : fonction qui permet d'uploader une photo en particulier (portrait ..)
    ##########################################
     
    function upload(){
    $arb = ($this->niv==1) ? "./":"../";
     
    // Si aucune photo
    if($_FILES["photo_presentation"]["name"]!=""){
     
    $destination = $arb.$GLOBALS["upload"]."/".$_FILES["photo_presentation"]["name"];
    $extension=substr($_FILES["photo_presentation"]["name"],-3);
     
    $rename = "portrait-".$this->id_membre.".".$extension;
    $destination_rename = $arb.$GLOBALS["upload"]."/".$rename;
     
    // Verification du type de la photo_presentation (jpg et png acceptés)
    $size = getimagesize($_FILES["photo_presentation"]["tmp_name"]);
     
    if($size[2]!=3 && $size[2]!=2){
    $this->AjoutErreur(1,'');
    }
     
    // Suppression de l'ancienne image si elle existe
    if(file_exists($destination_rename)){
     
    if(!unlink($destination_rename)){
    $this->AjoutErreur(2,$i);
    }
     
    }
     
    // Copie de l'image
    if (!copy($_FILES["photo_presentation"]["tmp_name"],$destination))
    {
    $this->AjoutErreur(3,'');
    }
     
    else if(!rename($destination,$destination_rename)){
    $this->AjoutErreur(4,'');
    }
     
    // Création de la miniature
    $this->miniature($rename,$destination_rename,'');
     
    // Mise à jour de la base de données pour ce membre
    mysql_query("UPDATE ".$GLOBALS["table_infos_membres"]." SET photo='".$rename."' WHERE id_membre='".$this->id_membre."'") or die(mysql_error());
    }
    }
     
     
    ##########################################
    // Fonction upload_photos
    // Description : fonction qui permet d'uploader une série de photos
    ##########################################
     
    function upload_photos($nbre){
     
    $arb = ($this->niv==1) ? "./":"../";
     
    for($i=1;$i<=$nbre;$i++){
    if($_FILES["photo"]["name"][$i]!="" && $this->no_error==true){
     
    $destination = $arb.$GLOBALS["upload"]."/".$_FILES["photo"]["name"][$i];
    $extension=substr($_FILES["photo"]["name"][$i],-3);
     
    $rename = "photo-".$this->id_membre."-$i.".$extension;
    $destination_rename = $arb.$GLOBALS["upload"]."/".$rename;
     
     
    // Verification du type de la photo (jpg et png acceptés)
    $size = getimagesize($_FILES["photo"]["tmp_name"][$i]);
    if($size[2]!=3 && $size[2]!=2){
    $this->AjoutErreur(1,'');
    }
     
    // Copie de l'image si elle n'existe pas
    if(file_exists($destination_rename)){
     
    // Suppression de l'ancienne image
    if(!unlink($destination_rename)){
    $this->AjoutErreur(2,$i);
    }
     
    }
     
    if (!copy($_FILES["photo"]["tmp_name"][$i],$destination))
    {
    $this->AjoutErreur(3,$i);
    }
    else if(!rename($destination,$destination_rename)){
    $this->AjoutErreur(4,$i);
    }
     
    // Création de la miniature
    $this->miniature($rename,$destination_rename,$i);
     
    // Mise à jour de la base
    mysql_query("INSERT INTO ".$GLOBALS["table_photos"]." VALUES('','".$this->id_membre."','".$rename."');");
     
    } // fin if($_FILES["photo"]["name"][$i]!="")
    }// fin for
    } // fin upload_photos
     
    ##########################################
    // Fonction miniature
    // Description : fonction qui permet de créer la miniature d'une photo
    ##########################################
    function miniature($rename,$destination_rename,$i){
     
    $arb = ($this->niv==1) ? "./":"../";
     
    // Suppression de l'ancienne image si besoin
    if(file_exists($arb.$GLOBALS["upload"].'/small/'.$rename)){
     
    if(!unlink($arb.$GLOBALS["upload"].'/small/'.$rename)){
    $this->AjoutErreur(5,$i);
    }
     
    }
     
    $src = imagecreatefromjpeg($destination_rename);
    $size = getimagesize($destination_rename);
     
    if ($size[0] > $size[1]) {
    $im=imagecreatetruecolor(round(($this->ratio/$size[1])*$size[0]), $this->ratio);
    imagecopyresampled($im, $src, 0, 0, 0, 0, round(($this->ratio/$size[1])*$size[0]),$this->ratio, $size[0], $size[1]);
    }
    else {
    $im=imagecreatetruecolor($this->ratio, round(($this->ratio/$size[0])*$size[1]));
    imagecopyresampled($im, $src, 0, 0, 0, 0, $this->ratio, round($size[1]*($this->ratio/$size[0])), $size[0], $size[1]);
    }
    ImageJPEG($im,$arb.$GLOBALS["upload"].'/small/'.$rename,100);
    }
     
    ##########################################
    // Fonction Suppression
    // Description : fonction qui permet de supprimer les entrées en base et les photos uploadées si erreur
    ##########################################
    function Suppression($rename){
     
    $arb = ($this->niv==1) ? "./":"../";
     
    // Suppression de la photo
    @unlink($arb.$GLOBALS["upload"].'/'.$rename);
    @unlink($arb.$GLOBALS["upload"].'/small/'.$rename);
     
    // Suppression de l'entrée
    mysql_query("DELETE FROM ".$GLOBALS["table_membres"]." WHERE id='".$this->id_membre."'");
    mysql_query("DELETE FROM ".$GLOBALS["table_infos_membres"]." WHERE id_membre='".$this->id_membre."'");
     
    }
     
    ##########################################
    // Fonction AjoutErreur
    // Description : fonction qui permet de déterminer l'erreur
    ##########################################
    function AjoutErreur($code_erreur,$i) {
     
    $tab_erreurs = array( 1 => str_replace("{i}",$i,ERREUR_PHOTO1),
    2 => str_replace("{i}",$i,ERREUR_PHOTO2),
    3 => str_replace("{i}",$i,ERREUR_PHOTO3),
    4 => str_replace("{i}",$i,ERREUR_PHOTO4),
    5 => str_replace("{i}",$i,ERREUR_PHOTO5));
     
    $this->erreur = $tab_erreurs[$code_erreur];
    $this->no_error = false;
    exit;
    }
     
     
    } // fin class
    ?>

    J'aimerais cependant que à l'intérieur de la classe dès que $this->no_error==false (en gros dès que la fonction Ajout_Erreur() est appelée) on quitte cette classe et que je revienne directement dans la page appelante de cette classe.

    Mais je ne vois pas du tout car le exit() a la fin arrete completement le script et si jemets rien ca uplode le fichier meme si y a une erreur et ca m'affiche les erreurs php

    Si quelqu'un aurait une idée pour cette gestion d'erreur et d'affichage cela m'arrangerait.

    Merci d'avance

  2. #2
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Tu fais un header(Location) et après un exit pour rediriger vers la page voulu et arreter le script non?

  3. #3
    Membre du Club
    Profil pro
    Developpeur
    Inscrit en
    Septembre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Septembre 2004
    Messages : 114
    Points : 43
    Points
    43
    Par défaut
    en effet j'avais pas pensé mais je pensais qu'on aurait pu arreter lexecution de la fonction car en fait j'utilisais par exemple ce code là dans ma page apelante :

    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
    // Nouvelle classe image
    		include("./inc/class.upload_img.php");
    		$classe_img = new UploadPhotos();
    		$classe_img->niv = 1; 
    		$classe_img->id_membre = $id_membre;
     
    		// Upload de la photo de presentation  
    		$classe_img->upload();	 
    		// Upload des autre photos
    		$classe_img->upload_photos(3);
     
     
    		$no_error = $classe_img->no_error;
    		$erreur = $classe_img->erreur;
     
     
    			if($no_error==true){
    			....
    Mais apparamment c'est pas possible ?

Discussions similaires

  1. [Problème] Gestion d'erreur avec MINA
    Par reben dans le forum Général Java
    Réponses: 8
    Dernier message: 08/03/2015, 21h37
  2. Problème de gestion des erreurs avec le module RIO
    Par menina_raquel dans le forum Ruby
    Réponses: 0
    Dernier message: 04/01/2011, 16h30
  3. Réponses: 1
    Dernier message: 17/05/2004, 11h29
  4. [TFrame] Problème de gestion du OnMouseDown avec une Frame
    Par xherault dans le forum Composants VCL
    Réponses: 5
    Dernier message: 23/05/2003, 15h35

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