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