Gestion des erreurs dans un formulaire avec UPDATE et UPLOAD

Rechercher

Gestion des erreurs dans un formulaire avec UPDATE et...

Par trajex  -  7 reponses  -  Le 17/06/2010 23:28  -  Editer  - 

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

Par Cyrano  -  Le 18/06/2010 09:08  -  Haut de page  - 

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 ;)

 

 
Par trajex  -  Le 18/06/2010 16:08  -  Haut de page  - 

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;
        }
 
Par Cyrano  -  Le 19/06/2010 11:01  -  Haut de page  - 

Il manque un bout dans ton code : où est donc définie la variable $extensions ? Tout comme la variable $extension (sans «s») d'ailleurs.

 
Par trajex  -  Le 19/06/2010 11:58  -  Haut de page  - 

pourtant je les vois a la ligne 52 et 54 du code précedent juste en haut

 
Par Cyrano  -  Le 19/06/2010 16:29  -  Haut de page  - 

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 ;-)

 
Par trajex  -  Le 20/06/2010 05:02  -  Haut de page  - 

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;
    }

 

 

 

 
Par trajex  -  Le 20/06/2010 06:30  -  Haut de page  - 

ah! ben mon cas est résolu

merci encore Cyrano

Encore une question d'accolades!!!!!!!!!

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |