Gestion des erreurs dans un formulaire avec UPDATE et...
Bonjour,
Ca fait un bon bout de temps que j'essaie d'incorporer un script a mon formulaire qui met a jour des donnees personnelles et une photo avec les criteres suivants
le upload de la photo n'est pas obligatoire, je m'explique : le membre vient sur la page pour modifier disons son no de telephone mais désire garder la meme photo, alors le script ne doit pas mettre a jour sa photo pour ne pas écraser l'ancienne dans la BD.
alors , je gere la situatuion de la facon suivante
if ($erreur == false) {
$photo = '';
if (isset($fichier) && $erreur_img == false) {
$photo = "photo = '".mysql_real_escape_string($fichier)."', ";
}
$nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));
$prenom = mysql_real_escape_string(htmlspecialchars($_POST['prenom']));
mais je dois d'abord gerer le UPLOAD FILES
pour ce qui est de gerer les erreurs généres par $_FILES, ca va bien sauf que les erreurs s'il y en a, ne s'affichent pas et le script continue jusqu'a la fin, je ne sais pas pourquoi
Aussi, je n'arrive pas a structurer parfaitement le code non plus car j'ai un parse error ici
if (isset(!in_array($extension, $extensions))) { //Si l'extension n'est pas dans le tableau
$erreur = true;
$msgErreur[] = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, ou bmp...';
//echo 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, ou bmp...';
et de plus , j'aimerais intéger dans les vérifications $_POST
comme ceci
if (isset($_POST['nom']) && !empty($_POST['nom'])) {
$nom = $_POST['nom'];
}
else {
$erreur = true;
$msgErreur[] = 'Veuillez saisir votre nom';
}
if (isset($_POST['prenom']) && !empty($_POST['prenom'])) {
$nom = $_POST['prenom'];
}
else {
$erreur = true;
$msgErreur[] = 'Veuillez saisir votre prénom';
etc,,,,...
Alors , je serais bien content de me faire aider un peu avec ce script plutot coriace si je peux dire
et j'ai pense vous mettre toute ma page ici afin d'avoir une meilleure idee
merci
<?php
// On initialise l'action à réaliser
$action = (isset($_POST['action'])) && !empty($_POST['action']) ? $_POST['action'] : NULL;
switch ($action) {
case 'UPDATE_Voiturier' : // Mise à jour des données de l'utilisateur
$erreur = false;
$erreur_img = false;
if (isset($_FILES['photo']) && !empty($_FILES['photo'])) {
if ($_FILES['photo']['error'] > 0) {
switch ($_FILES['photo']['error']) {
case 1 : $msgErreur[] = 'Le fichier téléchargé excède la taille de 2 mo.';
break;
case 2 : $msgErreur[] = 'Le fichier téléchargé excède la taille MAXFILE SIZE de 200 ko';
break;
case 3 : $msgErreur[] = 'Le fichier a été que partiellement téléchargé.';
break;
case 4 : $msgErreur[] = 'Aucun fichier a été téléchargé';
break;
case 5 : $msgErreur[] = 'erreur';
break;
case 6 : $msgErreur[] = 'Un dossier temporaire est manquant';
break;
case 7 : $msgErreur[] = 'Échec de l\'ecriture du fichier sur le disque';
break;
case 8 : $msgErreur[] = 'Une extension PHP a arrété l\'envoi de fichier';
break;
}
if (isset(!in_array($extension, $extensions))) { //Si l'extension n'est pas dans le tableau
$erreur = true;
$msgErreur[] = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, ou bmp...';
//echo 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, ou bmp...';
}
$erreur_img = true;
}
else {
$msgErreur[] = 'Veuillez rechercher une photo';
}
if ($erreur_img == false) {
$fichier = basename($_FILES['photo']['name']);
$taille_maxi = 200000;
$taille = filesize($_FILES['photo']['tmp_name']);
$extensions = array('image/png', 'image/gif', 'image/jpg', 'image/jpeg', 'image/bmp');
//$extension = strrchr($_FILES['photo']['name'], '.');
$extension = $_FILES['photo']['type'];
$fichier = strtr($fichier, '
ÀÁÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
$dossier = '../images/';
if (move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $fichier) == false) {
$erreur_img = true;
}
}
}
else {
// Aucune image de recherchée
$erreur_img = true;
}
if ($erreur == false) {
$photo = '';
if (isset($fichier) && $erreur_img == false) {
$photo = "photo = '".mysql_real_escape_string($fichier)."', ";
}
$nom = mysql_real_escape_string(htmlspecialchars($_POST['nom']));
$prenom = mysql_real_escape_string(htmlspecialchars($_POST['prenom']));
$adresse = mysql_real_escape_string(htmlspecialchars($_POST['adresse']));
$ville = mysql_real_escape_string(htmlspecialchars($_POST['ville']));
$pays = mysql_real_escape_string(htmlspecialchars($_POST['pays']));
$province = mysql_real_escape_string(htmlspecialchars($_POST['province']));
$code_postal = mysql_real_escape_string(htmlspecialchars($_POST['code_postal']));
$telephone = mysql_real_escape_string(htmlspecialchars($_POST['telephone']));
$cellulaire = mysql_real_escape_string(htmlspecialchars($_POST['cellulaire']));
$occupation = mysql_real_escape_string(htmlspecialchars($_POST['occupation']));
$sexe = mysql_real_escape_string(htmlspecialchars($_POST['sexe']));
$annee = mysql_real_escape_string(htmlspecialchars($_POST['annee']));
$mois = mysql_real_escape_string(htmlspecialchars($_POST['mois']));
$jour = mysql_real_escape_string(htmlspecialchars($_POST['jour']));
$date_naissance = $annee . "-" . $mois . "-" . $jour;
//$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
$email = mysql_real_escape_string(htmlspecialchars($_POST['email']));
//$password = mysql_real_escape_string(htmlspecialchars($_POST['password']))or die(mysql_error());
//$date_inscription = date('Y-m-d');
$permis_conduire = mysql_real_escape_string(htmlspecialchars($_POST['permis_conduire']));
$annee_experience = mysql_real_escape_string(htmlspecialchars($_POST['annee_experience']));
$message = mysql_real_escape_string(htmlspecialchars($_POST['message']))or die(mysql_error());
$sql=" UPDATE gestion_voiturier
SET nom = '" . $nom . "',
prenom = '" . $prenom . "',
adresse = '" . $adresse . "',
ville = '" . $ville . "',
pays = '" . $pays . "' ,
province = ' " . $province . "',
code_postal = '" . $code_postal . "',
telephone = '" . $telephone . "',
cellulaire = '" . $cellulaire . "',
occupation = '" . $occupation . "',
sexe = '" . $sexe . "' ,
date_naissance = '" . $date_naissance . "' ,
message = '" . $message . "' ,
email = '" . $email . "',
annee_experience = '" . $annee_experience . "',
$photo
permis_conduire = '" . $permis_conduire . "'
WHERE membres_id = " . $_SESSION['membreID']or die(mysql_error());
echo $sql;
if (!mysql_query($sql))
{
die('Erreur - table gestion_voiturier: ' . mysql_error());
}
}
header( "Location: session_voiturier.php" );
break;
}
?>
Réponses apportées à cette discussion
Salut,
on va corriger quelques erreurs :
if (isset(!in_array($extension, $extensions)))
Ça, ce n'est pas bon, à quoi te sert le isset ? Ici à rien, on le vire et on ne laisse que
if (!in_array($extension, $extensions))
Ensuite ta requête SQL qui se termine par un « or die() » qui n'a strictement rien à faire là et ne peux que générer une erreur. Donc :
$sql=" UPDATE gestion_voiturier SET
nom = '" . $nom . "',
prenom = '" . $prenom . "',
adresse = '" . $adresse . "',
ville = '" . $ville . "',
pays = '" . $pays . "' ,
province = ' " . $province . "',
code_postal = '" . $code_postal . "',
telephone = '" . $telephone . "',
cellulaire = '" . $cellulaire . "',
occupation = '" . $occupation . "',
sexe = '" . $sexe . "' ,
date_naissance = '" . $date_naissance . "' ,
message = '" . $message . "' ,
email = '" . $email . "',
annee_experience = '" . $annee_experience . "',
$photo
permis_conduire = '" . $permis_conduire . "'
WHERE membres_id = " . $_SESSION['membreID'];
Essaye déjà avec ça et reviens avec la suite s'il y a besoin ;)
merci beaucoup de ta réponse Cyrano
j'ai modifier ce qui n'as pas d'affaires la comme le le isset et enlever le die mysql error
if (!in_array($extension, $extensions))
, il ne traite pas l'erreur , le script passe par dessus, j'en deduis que soit il n,est pas a la bonne place
avez-vous une solution?
merci
// On initialise l'action à réaliser
$action = (isset($_POST['action'])) && !empty($_POST['action']) ? $_POST['action'] : NULL;
switch ($action) {
case 'UPDATE_Voiturier' : // Mise à jour des données de l'utilisateur
$erreur = false;
$erreur_img = false;
if (isset($_FILES['photo']) && !empty($_FILES['photo'])) {
if ($_FILES['photo']['error'] > 0) {
switch ($_FILES['photo']['error']) {
case 1 : $msgErreur[] = 'Le fichier téléchargé excède la taille de 2 mo.';
break;
case 2 : $msgErreur[] = 'Le fichier téléchargé excède la taille MAXFILE SIZE de 200 ko';
break;
case 3 : $msgErreur[] = 'Le fichier a été que partiellement téléchargé.';
break;
case 4 : $msgErreur[] = 'Aucun fichier a été téléchargé';
break;
case 5 : $msgErreur[] = 'erreur';
break;
case 6 : $msgErreur[] = 'Un dossier temporaire est manquant';
break;
case 7 : $msgErreur[] = 'Échec de l\'ecriture du fichier sur le disque';
break;
case 8 : $msgErreur[] = 'Une extension PHP a arrété l\'envoi de fichier';
break;
}
if (!in_array($extension, $extensions)) { //Si l'extension n'est pas dans le tableau
$erreur_img = true;
$msgErreur[] = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, ou bmp...';
//echo 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, ou bmp...';
}
$erreur_img = true;
}
else {
$msgErreur[] = 'Veuillez rechercher une photo';
}
if ($erreur_img == false) {
$fichier = basename($_FILES['photo']['name']);
$taille_maxi = 200000;
$taille = filesize($_FILES['photo']['tmp_name']);
$extensions = array('image/png', 'image/gif', 'image/jpg', 'image/jpeg', 'image/bmp');
//$extension = strrchr($_FILES['photo']['name'], '.');
$extension = $_FILES['photo']['type'];
$fichier = strtr($fichier, '
ÀÁÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
$dossier = '../images/';
if (move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $fichier) == false) {
$erreur_img = true;
}
}
}
else {
// Aucune image de recherchée
$erreur_img = true;
}
Il manque un bout dans ton code : où est donc définie la variable $extensions ? Tout comme la variable $extension (sans «s») d'ailleurs.
pourtant je les vois a la ligne 52 et 54 du code précedent juste en haut
Effectivement, mais donc après l'endroit où elles sont invoquées... sois logique et réfléchis à l'ordre dans lequel est exécutée chaque ligne du code ;-)
Merci Cyrano pour ton aide , j'ai resolu a moitie mon probleme, effectivement, les variables $extension et $esxtension etaient pas au bon endroit mais le pire c'est que la condition des extensions ne l'était pas non plus, (mal places dans les accolades)
Maintenant la condition fonctionne mais pas comme je voudrais pour la raison suivante:
etant donné que je suis dans un formulaire UPDATE, il n'est pas obligatoire de modifier sa photo donc si on modifie d'autres infos comme son telephone, etc, sans modifier sa photo, le script affiche une erreur
case 4 : $msgErreur[] = 'Aucun fichier a été téléchargé'; et
$msgErreur[] = ' ERREUR - Vous devez uploader un fichier de type png, gif, jpg, jpeg, ou bmp seulement!';
mais UPload dans la BDD quand meme les autres modifications
COMMENT ne pas compter une $erreur_img quand il n'y a pas de photo?? voila la question....
moi j'ai fait ceci
mon script a jour
if (!empty($_FILES['photo'])) {
//if (isset($_FILES['photo']) && !empty($_FILES['photo'])) {
//$extensions = array('image/png', 'image/gif', 'image/jpg', 'image/jpeg', 'image/bmp');
//$extension = $_FILES['photo']['type'];
// var_dump($extension);
if ($_FILES['photo']['error'] > 0) { // de ici
switch ($_FILES['photo']['error']) {
case 1 : $msgErreur[] = 'Le fichier téléchargé excède la taille de 2 mo.';
break;
case 2 : $msgErreur[] = 'Le fichier téléchargé excède la taille MAXFILE SIZE de 200 ko';
break;
case 3 : $msgErreur[] = 'Le fichier a été que partiellement téléchargé.';
break;
case 4 : $msgErreur[] = 'Aucun fichier a été téléchargé';
break;
// case 5 : $msgErreur[] = 'erreur';
// break;
case 6 : $msgErreur[] = 'Un dossier temporaire est manquant';
break;
case 7 : $msgErreur[] = 'Échec de l\'ecriture du fichier sur le disque';
break;
case 8 : $msgErreur[] = 'Une extension PHP a arrété l\'envoi de fichier';
$erreur_img = true;
break;
}
}
$extensions = array('image/png', 'image/gif', 'image/jpg', 'image/jpeg', 'image/bmp');
$extension = $_FILES['photo']['type'];
if(!in_array($extension, $extensions)) { //Si l'extension n'est pas dans le tableau
$msgErreur[] = ' ERREUR - Vous devez uploader un fichier de type png, gif, jpg, jpeg, ou bmp seulement!';
$erreur_img = true;
}
if ($erreur_img == false) {
$fichier = basename($_FILES['photo']['name']);
$taille_maxi = 200000;
$taille = filesize($_FILES['photo']['tmp_name']);
//$extension = strrchr($_FILES['photo']['name'], '.');
$fichier = strtr($fichier, '
ÀÁÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
$dossier = '../images/';
if (move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $fichier) == false) {
$erreur_img = true;
}
}
}
else {
// Aucune image de recherchée
$erreur_img = false;
}
ah! ben mon cas est résolu
merci encore Cyrano
Encore une question d'accolades!!!!!!!!!