Page 1 sur 1

Probleme de modification et controle

Posté : 09 mars 2023, 06:29
par filou80
Bonjour à tous,

Plus j'avance dans mon code, plus je rencontre des petits soucis de logique.
Sur la partie modification mail et pseudo j'ai mis un contrôle, que si le mail ou le pseudo existe impossible de modifier un des champs.
Le soucis est que si mon mail est bon est que je souhaite juste modifier mon pseudo cela me met mail existant et inversement si j'ai changer de mail est que je souhaite garder mon pseudo cela me met pseudo existant.
Histoire de logique je pense mais la je suis perdu.

Je suis en architecture MVC, voici ma methode :
public function update($id)
{
if($this->checkDuplicate($this->mail) == false && $this->pseudoDuplicate($this->pseudo) == false){

$sql ='UPDATE `utilisateurs` SET `mail` = :mail, `pseudo` = :pseudo, `status` = :status, `role` = :role WHERE `ID` = :id;';
$pdo = Database::getInstance();
$req = $pdo->prepare($sql);

$req->bindValue(':id', $this->id, PDO::PARAM_INT);
$req->bindValue(':mail', $this->mail, PDO::PARAM_STR);
$req->bindValue(':pseudo', $this->pseudo, PDO::PARAM_STR);
// $req->bindValue(':mdpc', $this->mdpc, PDO::PARAM_STR);
$req->bindValue(':status', $this->status, PDO::PARAM_INT);
$req->bindValue(':role', $this->role, PDO::PARAM_INT);
try {
$req->execute();
if($req->rowCount() != 0) {
return 25; //Message mis à jour
}
} catch (PDOException $ex) {
return 24; //Message pas mis à jour
}

}elseif($this->checkDuplicate($this->mail) != false && $this->pseudoDuplicate($this->pseudo) != false){
return 6; //Le mail et le pseudo existe déjà
}elseif($this->checkDuplicate($this->mail) != false){
return 3; //Le mail existe déja
}elseif($this->pseudoDuplicate($this->pseudo) != false){
return 5; //Le pseudo existe déja
}

}
Après je ne sais pas trop comment faire ou plutôt comment écrire que si id ou un token qui est en table, et = au pseudo alors je peux modifier le mail et inversement si le mail = id ou token alors on peut modifié le pseudo.

Me dire si ma logique est bonne et si oui comment l'écrire car la je suis dans le néant.

Merci par avance pour votre aide
@+ Filou

Re: Probleme de modification et controle

Posté : 09 mars 2023, 12:53
par Saian
Coucou, déjà je pense que quand tu vérifies si le mail ou le pseudo existent déjà, tu devrais t'assurer de ne pas prendre en compte la ligne de l'utilisateur en cours de modification.

PS : petite remarque. Je pense que les structure if elseif elseif elseif à rallonge c'est vraiment pas terrible pour la lisibilité et la maintenabilité du code.
Il vaut mieux je pense pour un code plus clair avoir une structure du type :
if (/*maj email*/ && /*email déjà existant*/) {
    //erreur;
}

if (/*maj pseudo*/ && /*pseudo déjà existant*/) {
    //erreur;
}

if (/*erreur*/) {
    // on sort
    return ;
}

//tout est ok on update;
C'est à mon sens beaucoup plus clair et lisible.

Re: Probleme de modification et controle

Posté : 11 mars 2023, 08:06
par filou80
Merci pour ton aide Saian,

Effectivement ne pas prendre en compte l'utilisateur en cours est bien je pense.
Mais je ne vois pas comment le mettre en place, par rapport a mon code, comment exclure mon id ?

via ma requete SQL du type :
UPDATE ma_table SET colonne1 = 'nouvelle_valeur' WHERE id NOT IN (10, 20, 30);
ainsi que dans mes méthode de contrôle c'est bien cela ?

Merci encore de m'avoir mis sur cette piste.
@+ Filou

Re: Probleme de modification et controle

Posté : 11 mars 2023, 08:42
par filou80
Je viens de faire cela, mais mon code ne fonctionne pas, je parviens a modifier le mail ou le pseudo même si je met un mail deja existant dans la table et idem pour le pseudo :
//verifie que le mail existe
public static function checkDuplicateUpdate($mail)
{
$checkMailSql ='SELECT `mail`
FROM `utilisateurs`
WHERE `mail`= :mail AND `id` != :id;';
$pdo = Database::getInstance();
$stmtCheckMailReq = $pdo->prepare($checkMailSql);

$stmtCheckMailReq->bindValue(':mail',$mail,PDO::PARAM_STR);
$stmtCheckMailReq->bindValue(':id',$id,PDO::PARAM_INT);

try {
$stmtCheckMailReq->execute();
return $stmtCheckMailReq->fetchColumn();
} catch (PDOException $ex) {
return false;
}
}

//verifie que le pseudo existe
public static function pseudoDuplicateUpdate($pseudo)
{
$checkPseudoSql ='SELECT `pseudo`
FROM `utilisateurs`
WHERE `pseudo`= :pseudo AND `id` != :id;';
$pdo = Database::getInstance();
$stmtCheckPseudoReq = $pdo->prepare($checkPseudoSql);

$stmtCheckPseudoReq->bindValue(':pseudo',$pseudo,PDO::PARAM_STR);
$stmtCheckPseudoReq->bindValue(':id',$id,PDO::PARAM_INT);
try {
$stmtCheckPseudoReq->execute();
return $stmtCheckPseudoReq->fetchColumn();
} catch (PDOException $ex) {
return false;
}
}

//// fonction update mise a jour avec controle ///////
public function update($id)
{
if($this->checkDuplicateUpdate($this->mail) == false && $this->pseudoDuplicateUpdate($this->pseudo) == false){

$sql ='UPDATE `utilisateurs` SET `mail` = :mail, `pseudo` = :pseudo, `status` = :status, `role` = :role WHERE `ID` = :id;';
$pdo = Database::getInstance();
$req = $pdo->prepare($sql);

$req->bindValue(':id', $this->id, PDO::PARAM_INT);
$req->bindValue(':mail', $this->mail, PDO::PARAM_STR);
$req->bindValue(':pseudo', $this->pseudo, PDO::PARAM_STR);
// $req->bindValue(':mdpc', $this->mdpc, PDO::PARAM_STR);
$req->bindValue(':status', $this->status, PDO::PARAM_INT);
$req->bindValue(':role', $this->role, PDO::PARAM_INT);
try {
$req->execute();
if($req->rowCount() != 0) {
return 25; //Message mis à jour
}
} catch (PDOException $ex) {
return 24; //Message pas mis à jour
}

}elseif($this->checkDuplicate($this->mail) != false && $this->pseudoDuplicate($this->pseudo) != false){
return 6; //Le mail et le pseudo existe déjà
}elseif($this->checkDuplicate($this->mail) != false){
return 3; //Le mail existe déja
}elseif($this->pseudoDuplicate($this->pseudo) != false){
return 5; //Le pseudo existe déja
}

}

Re: Probleme de modification et controle

Posté : 11 mars 2023, 12:37
par ynx
Bonjour,

Pense à activer l'affichage des erreurs PHP en développement si ce n'est pas déjà le cas.
Tu devrais avoir des messages indiquant que la variable $id n'est pas déclarée dans les méthodes checkDuplicateUpdate et pseudoDuplicateUpdate.

Ton utilisation de try/catch est contre-productive : tu ne pourras pas voir les messages d'erreur PDO puisque tu attrapes (catch) les exceptions, mais tu n'en fait rien.

Tes fonctions checkDuplicateUpdate/pseudoDuplicateUpdate retourne false en cas d'exception, comme si le mail ou pseudo n'existait pas. Ce n'est pas logique puisque si une exception se déclenche (erreur sql, bdd indisponible...), on ne peut pas vérifier que le mail ou le pseudo existe, ta fonction devrait alors déclencher une exception ou ne pas attraper l'exception PDO.

A mon avis, tu devrais supprimer tes try/catch afin que les exceptions arrêtent l'exécution de ton code, la suite du code ne pourra pas fonctionner correctement de toute facon.

Re: Probleme de modification et controle

Posté : 11 mars 2023, 13:11
par filou80
Merci de votre aide, mais la je me perd dans mon code.

@+Filou

Re: Probleme de modification et controle

Posté : 11 mars 2023, 17:29
par filou80
Je vois ce qu'il faut faire, enfin je pense mais je ne parviens pas a le mettre en application.

@+ Filou

Re: Probleme de modification et controle

Posté : 11 mars 2023, 20:03
par filou80
Actuellement mon code s’exécute normalement.
Je n'ai pas de message d'erreur.
Je ne sais comment faire.

@+ Filou

Re: Probleme de modification et controle

Posté : 11 mars 2023, 20:49
par ynx
On ne peut pas deviner comment ton code s'exécute uniquement avec cet extrait, tu es le mieux placé pour comprendre comment fonctionne ton code ;)

A quoi sert le paramètre $id pour la méthode update($id) ? Celui-ci n'est pas utilisé.

Enlève les try/catch qui ne servent à rien ici à part masquer les erreurs.

Re: Probleme de modification et controle

Posté : 11 mars 2023, 21:13
par filou80
Je comprend, voici ma methode :
//On recupere les valeurs hydrate
$maj = new Utilisateurs($id, $mail, $pseudo,'', $status, $role);

if (Utilisateurs::checkDuplicateUpdate($mail, $id)) {
// if ($exception == false){
$code = 3; //le mail existe deja
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

// Le mail existe déjà pour un autre utilisateur
// Gérer l'erreur ici
} else {

//On actualise le message
$exception = $maj->update($id);

if ($exception == 25){
$code = 25; //le profil à été mis à jour
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
} elseif ($exception == 24) {
$code = 24; //le profil n'a pas été mis à jour
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
}

elseif ($exception === 2) {
$code = 2; //Une erreur SQL est survenue
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
} elseif ($exception === 3) {
$code = 3; //Le mail existe déja
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
} elseif ($exception === 6) {
$code = 6; //Le mail et le pseudo existe deja
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
} elseif ($exception === 5) {
$code = 5; //Le pseudo existe déja
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
}

//Traitement de la photo
if($_FILES['avatar'] && $_FILES['avatar']['error']==0){

// Vérification du poids limité
if($_FILES['avatar']['size'] > LIMIT_WEIGHT){
$error['avatar'] = 'Poids limite dépassée';
}
// Vérification du format autorisé
// $mime = mime_content_type($_FILES['avatar']['tmp_name']);
// if(!in_array($mine, SUPPORTED_FORMAT)){
// $error['avatar'] = 'Format non autorisé';
// }

// if(!in_array($extension, $extensionAutorisee)){
// $error['avatar'] = 'Format non autorisé';
// }

$sizes = getimagesize($_FILES['avatar']['tmp_name']);
$originalWidth = $sizes[0];
$originalHeight = $sizes[1];
if($originalWidth < MIN_WIDTH || $originalHeight < MIN_HEIGHT){
$error['avatar'] = 'Dimensions trop petites';
}

// repertoire du serveur en aboslu
$rep=$_SERVER['DOCUMENT_ROOT']."/";
// on ajoute au chemin aboslu le chemin de depot de fichier et son nom de fichier
$rep.="uploads/avatars/".$idUtilisateur.$extensionMinuscule;

//Enregistrement du fichier sur mon site
if(empty($error)){

$from = $rep;
//$from = $_FILES['avatar']['tmp_name'];

// Si on veut conserver le fichier original sur le serveur
// $to = dirname(__FILE__) . '/../uploads/avatars/original.jpg';
if(!move_uploaded_file(($_FILES['avatar']['tmp_name']),$rep)){
$error['avatar'] = 'Problème lors de l\'enregistrement';
}

if(empty($error)){
// Redimensionnement
$src_width = $originalWidth;
$src_height = $originalHeight;

// Si format portrait on redimensionne selon la largeur sinon, selon la hauteur
if($src_width<$src_height){
$dst_width = 200;
$dst_height = $dst_width*$src_height/$src_width;
} else {
$dst_height = 200;
$dst_width = $dst_height*$src_width/$src_height;
}

$dst_image = imagecreatetruecolor($dst_width, $dst_height);

// On pourrait creer une ressource selon le type mime de fichier

if(!empty($extensionMin)){
if($extensionMin == 'jpeg'){
$src_image = imagecreatefromjpeg($from); // Ou $to (ligne 33)
}
}

if(!empty($extensionMin)){
if($extensionMin == 'png'){
$src_image = imagecreatefrompng($from); // Ou $to (ligne 33)
}
}



//$src_image = imagecreatefromjpeg($from); // Ou $to (ligne 33)
//$src_image = imagecreatefrompng($from); // Ou $to (ligne 33)

$dst_x = 0;
$dst_y = 0;
$src_x = 0;
$src_y = 0;

$isResampled = imagecopyresampled(
$dst_image,
$src_image,
$dst_x,
$dst_y,
$src_x,
$src_y,
$dst_width,
$dst_height,
$src_width,
$src_height
);

if($isResampled){
$dst_resampled_file = $rep;
imagejpeg($dst_image, $dst_resampled_file,75);

// Recadrage
$im = imagecreatefromjpeg($dst_resampled_file);
$croppedRessource = imagecrop($im, ['x' => 0, 'y' => 0, 'width' => 200, 'height' => 200]);
$dst_cropped_file = $rep;
imagejpeg($croppedRessource, $dst_cropped_file,75);

// var_dump($dst_cropped_file);

} else {
$error['avatar'] = 'Problème lors du recadrage';
}
}
}
} else {
$error['avatar'] = "Une erreur s'est produite lors de l'envoi du fichier";
}




// elseif ($exception === 2) {
// $code = 2; //Une erreur SQL est survenue
// header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

// exit;
// } elseif ($exception === 3) {
// $code = 3; //Le mail existe déja
// header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

// exit;
// } elseif ($exception === 6) {
// $code = 6; //Le mail et le pseudo existe deja
// header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

// exit;
// } elseif ($exception === 5) {
// $code = 5; //Le pseudo existe déja
// header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

// exit;
// }









// } elseif (isset($_POST['desactiver'])) {
// $id = $_POST['id'];
// $status = '1';
// $role = $_POST['role'];
// //On recupere les valeurs hydrate
// $desactiver = new Utilisateurs($id,'','','', $status);
// //On actualise le message
// $exception = $desactiver->desactiver($id);
// if ($exception == 26){
// $code = 26; //le profil à été desactiver
// header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
// exit;
// } elseif ($exception == 27) {
// $code = 27; //le profil n'a pas été desactiver
// header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
// exit;
// }
// header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
// // Code pour traiter l'action "Désactiver"

// } elseif (isset($_POST['reactiver'])) {
// $id = $_POST['id'];
// $status = '0';
// $role = $_POST['role'];
// //On recupere les valeurs hydrate
// $reactiver = new Utilisateurs($id,'','','', $status);
// //On actualise le message
// $exception = $reactiver->reactiver($id);
// if ($exception == 28){
// $code = 28; //le profil à été reactiver
// header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
// exit;
// } elseif ($exception == 29) {
// $code = 29; //le profil n'a pas été reactiver
// header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
// exit;
// }
// header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
// // Code pour traiter l'action "reactiver"

// } elseif (isset($_POST['supprimer'])) {
// $id = $_POST['id'];
// //On recupere les valeurs hydrate
// $supprimer = new Utilisateurs($id);
// //On actualise le message
// $exception = $supprimer->supprimer($id);
// if ($exception == 30){
// $code = 30; //le profil à été supprimer
// header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
// exit;
// } elseif ($exception == 31) {
// $code = 31; //le profil n'a pas été supprimer
// header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
// exit;
// }
// header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
// // Code pour traiter l'action "Supprimer"
}















if (Utilisateurs::pseudoDuplicateUpdate($pseudo, $id)) {
// if ($exception == false){
$code = 5; //le pseudo existe deja
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

// Le mail existe déjà pour un autre utilisateur
// Gérer l'erreur ici
} else {

//On actualise le message
$exception = $maj->update($id);

if ($exception == 25){
$code = 25; //le profil à été mis à jour
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
} elseif ($exception == 24) {
$code = 24; //le profil n'a pas été mis à jour
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
}

elseif ($exception === 2) {
$code = 2; //Une erreur SQL est survenue
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
} elseif ($exception === 3) {
$code = 3; //Le mail existe déja
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
} elseif ($exception === 6) {
$code = 6; //Le mail et le pseudo existe deja
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
} elseif ($exception === 5) {
$code = 5; //Le pseudo existe déja
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
}

//Traitement de la photo
if($_FILES['avatar'] && $_FILES['avatar']['error']==0){

// Vérification du poids limité
if($_FILES['avatar']['size'] > LIMIT_WEIGHT){
$error['avatar'] = 'Poids limite dépassée';
}
// Vérification du format autorisé
// $mime = mime_content_type($_FILES['avatar']['tmp_name']);
// if(!in_array($mine, SUPPORTED_FORMAT)){
// $error['avatar'] = 'Format non autorisé';
// }

// if(!in_array($extension, $extensionAutorisee)){
// $error['avatar'] = 'Format non autorisé';
// }

$sizes = getimagesize($_FILES['avatar']['tmp_name']);
$originalWidth = $sizes[0];
$originalHeight = $sizes[1];
if($originalWidth < MIN_WIDTH || $originalHeight < MIN_HEIGHT){
$error['avatar'] = 'Dimensions trop petites';
}

// repertoire du serveur en aboslu
$rep=$_SERVER['DOCUMENT_ROOT']."/";
// on ajoute au chemin aboslu le chemin de depot de fichier et son nom de fichier
$rep.="uploads/avatars/".$idUtilisateur.$extensionMinuscule;

//Enregistrement du fichier sur mon site
if(empty($error)){

$from = $rep;
//$from = $_FILES['avatar']['tmp_name'];

// Si on veut conserver le fichier original sur le serveur
// $to = dirname(__FILE__) . '/../uploads/avatars/original.jpg';
if(!move_uploaded_file(($_FILES['avatar']['tmp_name']),$rep)){
$error['avatar'] = 'Problème lors de l\'enregistrement';
}

if(empty($error)){
// Redimensionnement
$src_width = $originalWidth;
$src_height = $originalHeight;

// Si format portrait on redimensionne selon la largeur sinon, selon la hauteur
if($src_width<$src_height){
$dst_width = 200;
$dst_height = $dst_width*$src_height/$src_width;
} else {
$dst_height = 200;
$dst_width = $dst_height*$src_width/$src_height;
}

$dst_image = imagecreatetruecolor($dst_width, $dst_height);

// On pourrait creer une ressource selon le type mime de fichier

if(!empty($extensionMin)){
if($extensionMin == 'jpeg'){
$src_image = imagecreatefromjpeg($from); // Ou $to (ligne 33)
}
}

if(!empty($extensionMin)){
if($extensionMin == 'png'){
$src_image = imagecreatefrompng($from); // Ou $to (ligne 33)
}
}



//$src_image = imagecreatefromjpeg($from); // Ou $to (ligne 33)
//$src_image = imagecreatefrompng($from); // Ou $to (ligne 33)

$dst_x = 0;
$dst_y = 0;
$src_x = 0;
$src_y = 0;

$isResampled = imagecopyresampled(
$dst_image,
$src_image,
$dst_x,
$dst_y,
$src_x,
$src_y,
$dst_width,
$dst_height,
$src_width,
$src_height
);

if($isResampled){
$dst_resampled_file = $rep;
imagejpeg($dst_image, $dst_resampled_file,75);

// Recadrage
$im = imagecreatefromjpeg($dst_resampled_file);
$croppedRessource = imagecrop($im, ['x' => 0, 'y' => 0, 'width' => 200, 'height' => 200]);
$dst_cropped_file = $rep;
imagejpeg($croppedRessource, $dst_cropped_file,75);

// var_dump($dst_cropped_file);

} else {
$error['avatar'] = 'Problème lors du recadrage';
}
}
}
} else {
$error['avatar'] = "Une erreur s'est produite lors de l'envoi du fichier";
}

}





















































}

break;
et voici mon controlleur :
//On recupere les valeurs hydrate
$maj = new Utilisateurs($id, $mail, $pseudo,'', $status, $role);

if (Utilisateurs::checkDuplicateUpdate($mail, $id)) {
// if ($exception == false){
$code = 3; //le mail existe deja
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

// Le mail existe déjà pour un autre utilisateur
// Gérer l'erreur ici
} else {

//On actualise le message
$exception = $maj->update($id);

if ($exception == 25){
$code = 25; //le profil à été mis à jour
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
} elseif ($exception == 24) {
$code = 24; //le profil n'a pas été mis à jour
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
}

elseif ($exception === 2) {
$code = 2; //Une erreur SQL est survenue
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
} elseif ($exception === 3) {
$code = 3; //Le mail existe déja
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
} elseif ($exception === 6) {
$code = 6; //Le mail et le pseudo existe deja
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
} elseif ($exception === 5) {
$code = 5; //Le pseudo existe déja
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
}

//Traitement de la photo
if($_FILES['avatar'] && $_FILES['avatar']['error']==0){

// Vérification du poids limité
if($_FILES['avatar']['size'] > LIMIT_WEIGHT){
$error['avatar'] = 'Poids limite dépassée';
}
// Vérification du format autorisé
// $mime = mime_content_type($_FILES['avatar']['tmp_name']);
// if(!in_array($mine, SUPPORTED_FORMAT)){
// $error['avatar'] = 'Format non autorisé';
// }

// if(!in_array($extension, $extensionAutorisee)){
// $error['avatar'] = 'Format non autorisé';
// }

$sizes = getimagesize($_FILES['avatar']['tmp_name']);
$originalWidth = $sizes[0];
$originalHeight = $sizes[1];
if($originalWidth < MIN_WIDTH || $originalHeight < MIN_HEIGHT){
$error['avatar'] = 'Dimensions trop petites';
}

// repertoire du serveur en aboslu
$rep=$_SERVER['DOCUMENT_ROOT']."/";
// on ajoute au chemin aboslu le chemin de depot de fichier et son nom de fichier
$rep.="uploads/avatars/".$idUtilisateur.$extensionMinuscule;

//Enregistrement du fichier sur mon site
if(empty($error)){

$from = $rep;
//$from = $_FILES['avatar']['tmp_name'];

// Si on veut conserver le fichier original sur le serveur
// $to = dirname(__FILE__) . '/../uploads/avatars/original.jpg';
if(!move_uploaded_file(($_FILES['avatar']['tmp_name']),$rep)){
$error['avatar'] = 'Problème lors de l\'enregistrement';
}

if(empty($error)){
// Redimensionnement
$src_width = $originalWidth;
$src_height = $originalHeight;

// Si format portrait on redimensionne selon la largeur sinon, selon la hauteur
if($src_width<$src_height){
$dst_width = 200;
$dst_height = $dst_width*$src_height/$src_width;
} else {
$dst_height = 200;
$dst_width = $dst_height*$src_width/$src_height;
}

$dst_image = imagecreatetruecolor($dst_width, $dst_height);

// On pourrait creer une ressource selon le type mime de fichier

if(!empty($extensionMin)){
if($extensionMin == 'jpeg'){
$src_image = imagecreatefromjpeg($from); // Ou $to (ligne 33)
}
}

if(!empty($extensionMin)){
if($extensionMin == 'png'){
$src_image = imagecreatefrompng($from); // Ou $to (ligne 33)
}
}



//$src_image = imagecreatefromjpeg($from); // Ou $to (ligne 33)
//$src_image = imagecreatefrompng($from); // Ou $to (ligne 33)

$dst_x = 0;
$dst_y = 0;
$src_x = 0;
$src_y = 0;

$isResampled = imagecopyresampled(
$dst_image,
$src_image,
$dst_x,
$dst_y,
$src_x,
$src_y,
$dst_width,
$dst_height,
$src_width,
$src_height
);

if($isResampled){
$dst_resampled_file = $rep;
imagejpeg($dst_image, $dst_resampled_file,75);

// Recadrage
$im = imagecreatefromjpeg($dst_resampled_file);
$croppedRessource = imagecrop($im, ['x' => 0, 'y' => 0, 'width' => 200, 'height' => 200]);
$dst_cropped_file = $rep;
imagejpeg($croppedRessource, $dst_cropped_file,75);

// var_dump($dst_cropped_file);

} else {
$error['avatar'] = 'Problème lors du recadrage';
}
}
}
} else {
$error['avatar'] = "Une erreur s'est produite lors de l'envoi du fichier";
}




// elseif ($exception === 2) {
// $code = 2; //Une erreur SQL est survenue
// header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

// exit;
// } elseif ($exception === 3) {
// $code = 3; //Le mail existe déja
// header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

// exit;
// } elseif ($exception === 6) {
// $code = 6; //Le mail et le pseudo existe deja
// header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

// exit;
// } elseif ($exception === 5) {
// $code = 5; //Le pseudo existe déja
// header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

// exit;
// }









// } elseif (isset($_POST['desactiver'])) {
// $id = $_POST['id'];
// $status = '1';
// $role = $_POST['role'];
// //On recupere les valeurs hydrate
// $desactiver = new Utilisateurs($id,'','','', $status);
// //On actualise le message
// $exception = $desactiver->desactiver($id);
// if ($exception == 26){
// $code = 26; //le profil à été desactiver
// header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
// exit;
// } elseif ($exception == 27) {
// $code = 27; //le profil n'a pas été desactiver
// header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
// exit;
// }
// header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
// // Code pour traiter l'action "Désactiver"

// } elseif (isset($_POST['reactiver'])) {
// $id = $_POST['id'];
// $status = '0';
// $role = $_POST['role'];
// //On recupere les valeurs hydrate
// $reactiver = new Utilisateurs($id,'','','', $status);
// //On actualise le message
// $exception = $reactiver->reactiver($id);
// if ($exception == 28){
// $code = 28; //le profil à été reactiver
// header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
// exit;
// } elseif ($exception == 29) {
// $code = 29; //le profil n'a pas été reactiver
// header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
// exit;
// }
// header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
// // Code pour traiter l'action "reactiver"

// } elseif (isset($_POST['supprimer'])) {
// $id = $_POST['id'];
// //On recupere les valeurs hydrate
// $supprimer = new Utilisateurs($id);
// //On actualise le message
// $exception = $supprimer->supprimer($id);
// if ($exception == 30){
// $code = 30; //le profil à été supprimer
// header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
// exit;
// } elseif ($exception == 31) {
// $code = 31; //le profil n'a pas été supprimer
// header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
// exit;
// }
// header("Location: /controllers/utilisateurs-ctrl.php?code=".$code);
// // Code pour traiter l'action "Supprimer"
}















if (Utilisateurs::pseudoDuplicateUpdate($pseudo, $id)) {
// if ($exception == false){
$code = 5; //le pseudo existe deja
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

// Le mail existe déjà pour un autre utilisateur
// Gérer l'erreur ici
} else {

//On actualise le message
$exception = $maj->update($id);

if ($exception == 25){
$code = 25; //le profil à été mis à jour
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
} elseif ($exception == 24) {
$code = 24; //le profil n'a pas été mis à jour
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
}

elseif ($exception === 2) {
$code = 2; //Une erreur SQL est survenue
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
} elseif ($exception === 3) {
$code = 3; //Le mail existe déja
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
} elseif ($exception === 6) {
$code = 6; //Le mail et le pseudo existe deja
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
} elseif ($exception === 5) {
$code = 5; //Le pseudo existe déja
header("Location: /controllers/ficheInscrit-ctrl.php?id=".$id."&code=".$code."&status=".$status."&role=".$role);

exit;
}

//Traitement de la photo
if($_FILES['avatar'] && $_FILES['avatar']['error']==0){

// Vérification du poids limité
if($_FILES['avatar']['size'] > LIMIT_WEIGHT){
$error['avatar'] = 'Poids limite dépassée';
}
// Vérification du format autorisé
// $mime = mime_content_type($_FILES['avatar']['tmp_name']);
// if(!in_array($mine, SUPPORTED_FORMAT)){
// $error['avatar'] = 'Format non autorisé';
// }

// if(!in_array($extension, $extensionAutorisee)){
// $error['avatar'] = 'Format non autorisé';
// }

$sizes = getimagesize($_FILES['avatar']['tmp_name']);
$originalWidth = $sizes[0];
$originalHeight = $sizes[1];
if($originalWidth < MIN_WIDTH || $originalHeight < MIN_HEIGHT){
$error['avatar'] = 'Dimensions trop petites';
}

// repertoire du serveur en aboslu
$rep=$_SERVER['DOCUMENT_ROOT']."/";
// on ajoute au chemin aboslu le chemin de depot de fichier et son nom de fichier
$rep.="uploads/avatars/".$idUtilisateur.$extensionMinuscule;

//Enregistrement du fichier sur mon site
if(empty($error)){

$from = $rep;
//$from = $_FILES['avatar']['tmp_name'];

// Si on veut conserver le fichier original sur le serveur
// $to = dirname(__FILE__) . '/../uploads/avatars/original.jpg';
if(!move_uploaded_file(($_FILES['avatar']['tmp_name']),$rep)){
$error['avatar'] = 'Problème lors de l\'enregistrement';
}

if(empty($error)){
// Redimensionnement
$src_width = $originalWidth;
$src_height = $originalHeight;

// Si format portrait on redimensionne selon la largeur sinon, selon la hauteur
if($src_width<$src_height){
$dst_width = 200;
$dst_height = $dst_width*$src_height/$src_width;
} else {
$dst_height = 200;
$dst_width = $dst_height*$src_width/$src_height;
}

$dst_image = imagecreatetruecolor($dst_width, $dst_height);

// On pourrait creer une ressource selon le type mime de fichier

if(!empty($extensionMin)){
if($extensionMin == 'jpeg'){
$src_image = imagecreatefromjpeg($from); // Ou $to (ligne 33)
}
}

if(!empty($extensionMin)){
if($extensionMin == 'png'){
$src_image = imagecreatefrompng($from); // Ou $to (ligne 33)
}
}



//$src_image = imagecreatefromjpeg($from); // Ou $to (ligne 33)
//$src_image = imagecreatefrompng($from); // Ou $to (ligne 33)

$dst_x = 0;
$dst_y = 0;
$src_x = 0;
$src_y = 0;

$isResampled = imagecopyresampled(
$dst_image,
$src_image,
$dst_x,
$dst_y,
$src_x,
$src_y,
$dst_width,
$dst_height,
$src_width,
$src_height
);

if($isResampled){
$dst_resampled_file = $rep;
imagejpeg($dst_image, $dst_resampled_file,75);

// Recadrage
$im = imagecreatefromjpeg($dst_resampled_file);
$croppedRessource = imagecrop($im, ['x' => 0, 'y' => 0, 'width' => 200, 'height' => 200]);
$dst_cropped_file = $rep;
imagejpeg($croppedRessource, $dst_cropped_file,75);

// var_dump($dst_cropped_file);

} else {
$error['avatar'] = 'Problème lors du recadrage';
}
}
}
} else {
$error['avatar'] = "Une erreur s'est produite lors de l'envoi du fichier";
}

}





















































}

break;

Re: Probleme de modification et controle

Posté : 11 mars 2023, 21:40
par filou80
je viens de revoir mon code merci pour votre aide cela fonctionne .
@+ Filou

Re: Probleme de modification et controle

Posté : 12 mars 2023, 00:06
par two3d
Salut Filou, tu utilisera la balise code PHP la prochaine stp ;)

Tu peux passer en résolu si ta trouvé la réponse :D