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

PHP & Base de données Discussion :

Écrasement photo avec mise à jour membre [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Par défaut Écrasement photo avec mise à jour membre
    Bonjour,
    j'ai 2 petits problèmes avec mon script Update membre

    1-quand un utilisateur vient faire une modification a son profil et qu'il ne met rien dans la case photo, le traitement update vient écraser et effacer l'ancienne inscription photo dans la table.


    2- Dans mon script function insertPhoto()
    j'ai une restriction limite a 200K mais voila que si un membre ajoute une photo depassant 200k, le traitement update se fait quand meme et inscrit le nom de la photo dans la table mais elle n'est pas Uploader dans ../images.

    j'aimerais bien savoir comment je pourrais améliorer mon code pour la bonne gestion des upolad photos dans mon Update membre.

    merci

    je vous mets ici le script photo du formulaire: mod_voiturier.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <p>    
          <label for="photo">Modifier une photo</label>
          <input type="hidden" name="MAX_FILE_SIZE"  value="200000" />
          <input type="file" name="photo" id="photo" value="<?php echo $info['photo'];?>" />
        </p>
    et update_voiturier.php

    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
    <?php
     
    function insertPhoto() {
      if (isset($_FILES['photo'])) 
        {
     
          $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'];
          //Début des vérifications de sécurité...
     
          if($_FILES['photo'] ['error'] != 0)
    	{
    	  echo ' une erreur est rencontree !';
    	  echo $_FILES['photo']['error'];
    	}
          elseif(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    	{
    	  echo 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, ou bmp...';
    	}
          elseif($taille>$taille_maxi)
    	{
    	  echo 'Erreur!! Le fichier depasse 200 K...';
    	}
          else // s'il n'y a pas d'erreur on upload!
    	{
    	  //On formate le nom du fichier ici...
    	  $fichier = strtr($fichier, 
    			   'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
    			   'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    	  $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier)or die(mysql_error());
    	  $dossier = '../images/'or die(mysql_error());
    	  if(move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
    	    {
    	      echo 'Upload effectué avec succès !';
    	    }
    	  else //Sinon (la fonction renvoie FALSE).
    	    {
    	      echo 'Echec de l\'upload !';
    	    }
     
    	}
        }
    }
     
     function checkForm() {
       if ($_POST['email'] != "" &&
           $_POST['pseudo'] != ""
          ) {
         return true;
       }
     
       return false;
     }
     
    function updateVoiturier() {
      if (isset($_FILES['photo'])) {
        $photo = mysql_real_escape_string(htmlspecialchars($_FILES['photo']['name']));  
      } else {
        $photo = '';
      }
      $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']));
      $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']));
     
      $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 . "',
                  date_inscription = '" . $date_inscription . "',
                  photo = '" . $photo . "' ,
                  annee_experience = '" . $annee_experience . "',
                  permis_conduire =  '" . $permis_conduire . "' 
               
              WHERE membres_id = " . $_SESSION['membreID'];
     
      echo $sql;
      if (!mysql_query($sql))
        {
          die('Erreur - table gestion_voiturier: ' . mysql_error());
        }
      if (!mysql_query($sql))
      {
        die('Erreur - table voitures:' . mysql_error());
      }
      if (isset($password)) {
        $sql = "UPDATE membres set password = md5('" . $password . "') WHERE id = " . $_SESSION['membreID'];
        mysql_query($sql) or die(mysql_error());
      }
      header( "Location: session_voiturier.php" );
    }
     
    $show_form = true;
    if (isset($_POST['submit'])) {
      if (isset($_POST['email'])) { 
        insertPhoto();
        updateVoiturier();
     
    	die();
      } else {
       die("check pseudo");
      }
    }
    ?>

  2. #2
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    En faite, et en cas d'erreur sur l'upload, tu ne fais que faire des echo retournant un message d'erreur, mais coté requête, tu ne traite pas le cas.
    Du coup, c'est le phénomène que tu remarque.

    D'ailleurs, tu devrais remarquer le même problème sur toutes les autres données.
    Si la personne ne mets pas de nom par exemple, tu vas obtenir un champ vide.

    C'est l'un des points les plus pénible à faire : Vérifier chaque donnée entrante (GET, POST, etc ...), contrôler quelle soit conforme à ce qu'on attend, et traiter le cas (au cas par cas) si elle ne l'ai pas.

    Il ne faut pas mettre à jours le nom de la photo s'il y a une erreur.
    Ca débouche sur (au moins) une alternative.
    Exemple :
    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
     
    <?php
    // On fait en sorte de savoir si l'upload à correctement été fait ou pas
    $insert_photo = insertPhoto();
    //
    $photo = null;
    if ($insert_photo === true) {
        $photo = "photo = '".mysql_real_escape_string(htmlspecialchars($_FILES['photo']['name']))."', ";
    }
     
    //
    $sql = "  UPDATE gestion_voiturier 
    	SET nom =     '" . $nom . "',
    	prenom =  '" . $prenom . "',
    	... etc ...
    	$photo
    	... etc ...
    	WHERE membres_id = " . $_SESSION['membreID'];
    ?>
    Ici, par défaut $photo est initialisé à null, du coup ce champ ne sera pas mise à jour en cas d'erreur.

    Par contre, pour faire il va falloir modifier pas mal de choses, entre autre tes 2 fonctions insertPhoto() et updateVoiturier().


    Aussi, pose toi la question sur le nom de cette photo.
    Si on regarde bien, il risque d'avoir un problème dans le cas où le nom comporte des caractères spéciaux.
    Le nom du fichier enregistré dans la Bdd sera différent de celui déplacé après upload.
    Au niveau du déplacement du fichier, tu fais des remplacements de caractères spéciaux, alors que coté Bdd, tu applique juste un htmlspecialchars(), ce n'est pas synchro.

  3. #3
    Membre éclairé Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Par défaut
    merci Runcodephp de ta réponse

    en fait, pour les noms, prenom, etc, je n'ai pas ces problèmes, car lors de l'inscription, j'ai mis des validations javascript obligatoires on blur sur ces champs , ce qui oblige a remplir tous les champs


    et lors du Update, je fais des echos dans tous mes champs de formulaire, ce qui remplit aussi tous les champs par defaut

    mais avec le champ photos, le traitement ne ramene pas la valeur de photo dans la base

    peut-etre qu'il y a une erreur dans ceci a cause que je mets 2 values dans le meme champ


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <p>    
          <label for="photo">Modifier une photo</label>
          <input type="hidden" name="MAX_FILE_SIZE"  value="200000" />
          <input type="file" name="photo" id="photo" value="<?php echo $info['photo'];?>" />
        </p>

  4. #4
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Citation Envoyé par monlou
    en fait, pour les noms, prenom, etc, je n'ai pas ces problèmes, car lors de l'inscription, j'ai mis des validations javascript obligatoires on blur sur ces champs , ce qui oblige a remplir tous les champs
    Non, Javascript, on ne cesse de dire que c'est coté client (navigateur).
    Tu n'as aucun garanti de ce coté, vraiment aucune.
    Le plus important (et de loin), c'est de vérifier les données qui arrivent coté serveur, sinon, tu risque d'obtenir n'importe quoi.
    Javascript dans ce contexte là (formulaire), c'est un petit plus, c'est juste un confort pour la personne en face.
    Bref, le gars en 1er à tout le loisir de désactiver Javascript si ça lui casse les pieds.
    Aussi, tu n'est pas à l'abri de faire une erreur de syntaxe dans ton code JS, une simple étourderie et voilà que les vérifs ne fonctionnent plus.
    Je peux en rajouter des comme ça.


    et lors du Update, je fais des echos dans tous mes champs de formulaire, ce qui remplit aussi tous les champs par defaut
    Lors du Update, d'accord, mais avant ?
    Puis même si tu prévois de pré-remplir le formulaire, la personne peut très supprimer le contenu, ne serait-ce accidentellement.
    Là encore, ce sont des manips coté client dont tu n'a pas grand chose pour garantir quoi que ce soit.

    Bref, tu part du principe que tous le gens auront JS d'activé, que le données qui transiteront du serveur vers le poste client (et inversement) ne soient jamais altérées, que tout fonctionne bien (serveur, internet, modem, le Pc du gars, etc, etc...), que les personnes ne fassent jamais d'erreurs, etc ...
    Ca fait beaucoup de principes


    Pour ce qui est de l'upload de la photo, je pense que tu n'as pas vraiment compris qu'il faut traiter le cas quand tu fais la mise à jours de la Bdd.
    Tu spécifie que l'image ne doit pas dépasser 200000 octets (ce qui fait 195.3125 Kilo Octet soit dit en passant), du coup, ça va déboucher sur une erreur.
    Si tu ne traite pas cette erreur, tu auras obligatoirement une erreur dans la Bdd, ça coule de source.
    Ce n'est pas un problème de HTML, mais de code Php qu'il faudra rajouter.
    SI c'est bon -> On upload + mise à jour du nom
    SINON On ne fait rien (pas de mise à jour sur le nom)

    Ceci quelque soit l'erreur.
    -Erreur de dépassement en Octets
    -Erreur sur le type de fichier
    -Le serveur à mal obtenu les paquets de donnée
    etc, etc ...

    <input type="file" name="photo" id="photo" value="<?php echo $info['photo'];?>" />
    Ceci est inutile. Ce n'est pas parce que tu rajoutera le nom de la photo ici que le navigateur renverra le flux de l'image.
    D'ailleurs, tu n'as aucune main mise de ce coté.
    D'une part, tu ne sauras jamais où se trouve son image sur son PC, de même que la personne peut très bien venir sur ton site d'un autre PC, etc, etc ...

    Toujours le même crédo : Le coté client tu ne le maitrisera jamais, c'est pour ça qu'il faut traiter chaque erreur possible coté serveur.
    Si le gars ne recherche pas sa photo, et bien coté serveur il y aura rien.
    Et bien "rien" ça se gère.
    C'est casse bonbon, mais on a pas le choix. (si tu veux un truc qui fonctionne)


    Donc reprend le code, la logique que je t'ai mis auparavant (ce n'était qu'un exemple).
    As tu compris d'ailleurs l'intérêt de ce code ?

  5. #5
    Membre éclairé Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Par défaut
    oui RunCodePhp, je m' rends!!
    merci de me le faire rappeler, je cherchais peut-etre la méthode facile et je suis conscient de l'importance de traiter les erreurs cote serveur.

    il y avait sur un tuto que j'ai deja étudier auparavant une mise en garde qui disait:
    ''Il ne faut jamais faire confiance a l'utilisateur''

    alors, je comprends que je dois modifier mes 2 fonctions insertPhoto() et updateVoiturier().
    si je comprends bien, je dois traiter chacun des champs de mon formulaire
    pour les erreurs d'omissions en plus des attaques sql


    Il ne faut pas mettre à jours le nom de la photo s'il y a une erreur.
    Ca débouche sur (au moins) une alternative.
    Exemple :............

    Ici, par défaut $photo est initialisé à null, du coup ce champ ne sera pas mise à jour en cas d'erreur.

    Par contre, pour faire il va falloir modifier pas mal de choses, entre autre tes 2 fonctions insertPhoto() et updateVoiturier().
    mais la! peux-tu me renseigner sur un tuto qui traite de ce sujet car présentement c'est nouveau pour moi a part la lecture d'un petit script
    CheckForm()

  6. #6
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    il y avait sur un tuto que j'ai deja étudier auparavant une mise en garde qui disait:
    ''Il ne faut jamais faire confiance a l'utilisateur''
    Je suis totalement d'accord sur ce point aussi.
    Il faut adhérer, sinon, c'est un peu se mettre la tête dans le sable (politique de l'autruche).
    Par contre, il faudra à mon sens ne pas tomber non plus dans la paranoïa.
    Mais pour ton code par exemple, il n'en fait pas assez, tu as trop miser, voir tout miser sur JS alors que c'est l'inverse qu'il faut faire en 1er.

    mais la! peux-tu me renseigner sur un tuto qui traite de ce sujet car présentement c'est nouveau pour moi a part la lecture d'un petit script
    CheckForm()
    Je n'ai pas de tuto sous le coude malheureusement, ou alors ça fait trop longtemps.

    A mon sens, et vu que tu débute, il faudrait peut être mettre de coté tes 2 fonctions insert/update provisoirement, et faire les choses dans l'ordre, les unes après les autres.
    Tant pis si ce code se répètera plusieurs fois dans d'autres pages, tu rationaliseras ceci après.

    En 1er, les vérifications sont normalement à faire avant le code HTML, avant le doctype/html/body, ce qui n'est pas le cas de ton coté.
    Faudrait déjà revoir un peu ton principe/structure sur ce plan là, car c'est justement en faisant ainsi qu'on parvient à rationaliser le code, d'automatiser certaines de ces tâches répétitives.

    En faite, il faudrait que ta(es) page(s) ait une structure comme celle ci : (c'est un exemple)
    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
     
    <?php
    // ---------- TRAITEMENTS ----------
    // connexion bdd
    $connexion = la_connexion;
    // démarre la session
    session_start();
     
    // On initialise l'action à réaliser
    $action = (isset($_POST['action'])) && !empty($_POST['action'])) ? $_POST['action'] : NULL;
     
    switch ($action) {
        case 'update' : // Mise à jour des données de l'utilisateur
            $erreur = false;
     
            // On vérifie les données
            if (isset($_POST['nom']) && !empty($_POST['nom'])) {
                $nom = $_POST['nom'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre nom';
            }
            //
            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 xxx';
                        break;
                        case 2 : $msgErreur[] = 'Le fichier téléchargé excède la taille de xxx';
                        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;
                        ... etc ... (il y a jusquà 8 erreurs "type")
                    }
                }
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez rechercher une photo';
            }
     
            ... etc, etc pour chaque donnée ...
     
            if ($erreur == false) {
                // On met à jour la Bdd (UPDATE)
                // Puis on pourra redigirer vers une autre page si on veut
                header('Location : autre_page.php');
            }
        break;
    }
     
    // On récupère les donnée nécessaires à l'interface
    // Requêtes
    // Fichiers
    // ... etc, etc ...
     
    // ---------- INTERFACE (html) ----------
    ?>
    <doctype ... >
    <html>
    ... etc...
    <body>
     
    <?php
    // On affiche les erreurs éventuelles
    if (isset($msgErreur) && is_array($msgErreur) && !empty($msgErreur)) {
        foreach($msgErreur as $erreur) {
            echo '<p>'.$erreur.'</p>';
        }
    }
    ?>
     
    <formu ... etc ...>
        ... etc ...
    </formu>
     
    </body>
    </html>
    Voir la doc sur les différentes erreur que peu renvoyer $_FILES : http://fr2.php.net/manual/fr/feature...oad.errors.php

    En procédant ainsi, la mise à jours de la Bdd ne se fera QUE si TOUTES les données prévues sont cohérentes, y compris la photo.
    C'est une autre manière d'aborder la chose, ce qui évitera de faire comme je l'avait proposé précédemment, ici c'est théoriquement plus simple (et plus sur).

    Donc si 1 seul élément n'est pas conforme, aucune mise à jour sera faite, mais le script continuera, donc les données obtenues en POST seront dispos, et ceci permettra de les ré-afficher au lieu de celle de la Bdd (par exemple).


    C'est un principe, une manière de faire, à toi de voir si tu adhère ou pas.

  7. #7
    Membre éclairé Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Par défaut
    bonjour RuncodePhp

    j'ai pris soin d'étudier ton script et je crois que je vais le placer au debut sur mes pages update et insert, ce qui m'amene a te poser la question suivante au sujet de la page update membre

    Que se passe t-il avec le script de vérification photo si le membre qui vient sur sa page de modification pour modifier d'autres données que sa photo et désire garder sa photo actuelle, celle qui est deja sur le serveur?

    ce script de vérification totale de la photo convient-il plus dans une page INSERT bla bla bla... que de update ....?

    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
    //
            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 xxx';
                        break;
                        case 2 : $msgErreur[] = 'Le fichier téléchargé excède la taille de xxx';
                        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;
                        ... etc ... (il y a jusquà 8 erreurs "type")
                    }
                }
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez rechercher une photo';
            }

  8. #8
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Que se passe t-il avec le script de vérification photo si le membre qui vient sur sa page de modification pour modifier d'autres données que sa photo et désire garder sa photo actuelle, celle qui est deja sur le serveur?
    C'est vrai que le principe que j'ai mis est assez expéditif, mais c'est pour ce faciliter la tache, et aussi par mesure de sécurité.

    S'il y a une exception comme celle ci, comme vouloir mettre à jour malgré une erreur sur la photo (comme le simple fait que la personne ne fasse rien, donc il y aura rien).
    Et bien suffit de supprimer les $erreur = true; Grâce à ça, et s'il y a pas d'autres erreurs on entrera dans la condition -> if ($erreur == false)
    Ensuite, il faut reprendre le même principe que j'avais mis au début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $photo = '';
    if (move_uploaded_file(... etc ...)) {
    	$photo = "photo = '".mysql_real_escape_string($fichier)."', ";
    }
    // Mise à jour de la table
    $sql = "UPDATE gestion_voiturier 
    SET nom = '" . $nom . "',
    prenom = '" . $prenom . "',
    ... etc ...
    $photo
    ... etc ...
    WHERE membres_id = " . $_SESSION['membreID'];

    Maintenant, on peu très bien voir les choses de manière un peu différente.
    Si tu regarde comment ce forum procède, les données propre aux membres (nom, prénom, etc ...) sont à part, et la modification de l'avatar à part.
    Donc on peu très bien adopter ce principe, en se disant que ce n'est pas tous les 4 matins que le nom, prénom, etc ... seront modifiés, la photo un peu plus.
    En gros, se dire dire que si plantage il y aura un jour, ce n'est pas tout qui sera perdu.

    Du coup, on peu très bien envisager de créer dans la même page 2 formulaires :
    1 Pour les données personnelles pure
    1 juste pour la photo

    Le principe que j'ai donné intègre parfaitement ce genre de situation, car il est déjà prévue de faire plusieurs actions (Insertion, mise à jour).
    Suffit de modifier ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $action = (isset($_POST['action'])) && !empty($_POST['action'])) ? $_POST['action'] : NULL;
     
    switch ($action) {
        case 'update_perso' : // Mise à jour des données de l'utilisateur
            $erreur = false;
            ... etc ...
        break;
        case 'update_photo' : // Mise à jour de la photo
            $erreur = false;
            ... etc ...
        break;
    }
    Suffit de déporter les traitement de la photo dans le update_photo.

    Coté formulaire (Partie HTML) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <form name="formu_perso" action="meme_page.php" method="post">
        .... etc ....
        <input type="submit" name="valider_perso" value="Valider les données personnelles" />
        <input type="hidden" name="action" value="update_perso" />
    </form>
     
    <form name="formu_photo" action="meme_page.php" method="post" enctype="... etc ...">
        .... etc ....
        <input type="submit" name="valider_photo" value="Modifier Photo" />
        <input type="hidden" name="action" value="update_photo" />
    </form>
    Comme tu peux voir, j'ai rajouté un champ caché pour permettre de savoir quelle action il faudra faire suite à la validation du formulaire.


    Bref ... Il peu avoir comme ça bien d'autres manières de faire, chacun à sa manière.
    Il ne faut pas rester bloquer sur des trucs pareil, il faut juste exploiter ce que php permet de faire et imaginer des manières de faire.

  9. #9
    Membre éclairé Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Par défaut
    Bonjour RuncodePhp

    j'ai opté pour un script avec un formulaire pour commencer pour voir si j'ai bien compris et ensuite, j'envisage de traiter photo et les données personnelles avec 2 formulaires.

    Est-ce que tu pourrais vérifier mon script S.T.P pour voir si j'ai bien compris?

    en tenant compte des points suivants
    1- j'ai enlevé $erreur= true; pour les donnes photos, cellulaire,, occupation et message dont je ne veux pas qu'il soit obligatoire

    2- a la ligne 22, case = 5 php ne propose pas de message d'erreur pour case =5

    3- A la fonction insertPhoto() je l'ai laisse tel quel

    4- a la ligne 237-238-239
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $photo = '';
    	if (move_uploaded_file) {
    	$photo = "photo = '".mysql_real_escape_string($fichier)."', ";
    pourquoi $photo = "photo = '".mysql_real_escape_string($fichier)."', ";

    5- a la ligne 286 a 294 je ne sais pas si cette partie du script est toujours utile de garder

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    echo $sql;
      if (!mysql_query($sql))
        {
          die('Erreur - table gestion_voiturier: ' . mysql_error());
        }
      if (!mysql_query($sql))
      {
        die('Erreur - table voitures:' . mysql_error());
      }
    je n'inclue pas ici ma page de formulaire puisque elle est deja ci-haut auquel j'ai initiliasé ma connection et Session start() et afficher le code des erreurs eventuelles dans body

    merci,

    je l'ai testé et je n'arrive pas a me débarasser d'un parse erreur ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $action = (isset($_POST['action'])) && !empty($_POST['action'])) ? $_POST['action'] : NULL;
    Voici le script updateVoiturier.php
    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
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    <?php
    // On initialise l'action à réaliser
    $action = (isset($_POST['action'])) && !empty($_POST['action'])) ? $_POST['action'] : NULL;
     
    switch ($action) {
        case 'updateVoiturier' : // Mise à jour des données de l'utilisateur
            $erreur = false;
     
            // On vérifie les données
     
    		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 xxx';
                        break;
                        case 2 : $msgErreur[] = 'Le fichier téléchargé excède la taille de xxx';
                        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;
                    }
                }
            }
            else {
     
                $msgErreur[] = 'Veuillez rechercher une photo';
            }
     
            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';
            }
    		if (isset($_POST['adresse']) && !empty($_POST['adresse'])) {
                $nom = $_POST['adresse'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir une adresse valide';
            }
    		if (isset($_POST['ville']) && !empty($_POST['ville'])) {
                $nom = $_POST['ville'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre ville de résidence';
            }
    		if (isset($_POST['pays']) && !empty($_POST['pays'])) {
                $nom = $_POST['pays'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre pays';
            }
    		if (isset($_POST['province']) && !empty($_POST['province'])) {
                $nom = $_POST['province'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre province ou votre état';
            }
    		if (isset($_POST['code_postal']) && !empty($_POST['code_postal'])) {
                $nom = $_POST['code_postal'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre code postal';
            }
    		if (isset($_POST['telephone']) && !empty($_POST['telephone'])) {
                $nom = $_POST['telephone'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre numero de téléphone';
            }
    		if (isset($_POST['cellulaire']) && !empty($_POST['cellulaire'])) {
                $nom = $_POST['cellulaire'];
            }
            else {
     
                $msgErreur[] = 'Veuillez saisir votre numero de cellulaire';
            }
    		if (isset($_POST['occupation']) && !empty($_POST['occupation'])) {
                $nom = $_POST['occupation'];
            }
            else {
     
                $msgErreur[] = 'Veuillez saisir votre occupation';
            }
    		if (isset($_POST['sexe']) && !empty($_POST['sexe'])) {
                $nom = $_POST['sexe'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre sexe';
            }
    		if (isset($_POST['annee']) && !empty($_POST['annee'])) {
                $nom = $_POST['annee'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre annee de naissance';
            }
    		if (isset($_POST['mois']) && !empty($_POST['mois'])) {
                $nom = $_POST['mois'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre mois de naissance';
            }
    		if (isset($_POST['jour']) && !empty($_POST['jour'])) {
                $nom = $_POST['jour'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre jour de naissance';
            }
    		if (isset($_POST['jour']) && !empty($_POST['jour'])) {
                $nom = $_POST['jour'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre jour de naissance';
            }
    		if (isset($_POST['email']) && !empty($_POST['email'])) {
                $nom = $_POST['email'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre adresse couriel';
            }
    		if (isset($_POST['password']) && !empty($_POST['password'])) {
                $nom = $_POST['password'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre mot de passe';
            }
    		if (isset($_POST['peris_conduire']) && !empty($_POST['permis_conduire'])) {
                $nom = $_POST['permis_conduire'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre numero de permis de conduire';
            }
    		if (isset($_POST['date_inscription']) && !empty($_POST['date_inscription'])) {
                $nom = $_POST['date_inscription'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir la date du jour';
            }
    		if (isset($_POST['annee_experience']) && !empty($_POST['annee_experience'])) {
                $nom = $_POST['annee_experience'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir l\'anee';
            }
    		if (isset($_POST['message']) && !empty($_POST['message'])) {
                $nom = $_POST['message'];
            }
            else {
     
                $msgErreur[] = 'Veuillez saisir un message';
            }
     
    		if ($erreur == false) {
     
     
    function insertPhoto() {
      if (isset($_FILES['photo'])) 
        {
     
          $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'];
          //Début des vérifications de sécurité...
     
          if($_FILES['photo'] ['error'] != 0)
    	{
    	  echo ' une erreur est rencontree !';
    	  echo $_FILES['photo']['error'];
    	}
          elseif(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    	{
    	  echo 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, ou bmp...';
    	}
          elseif($taille>$taille_maxi)
    	{
    	  echo 'Erreur!! Le fichier depasse 200 K...';
    	}
          else // s'il n'y a pas d'erreur on upload!
    	{
    	  //On formate le nom du fichier ici...
    	  $fichier = strtr($fichier, 
    			   'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
    			   'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    	  $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier)or die(mysql_error());
    	  $dossier = '../images/'or die(mysql_error());
    	  if(move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
    	    {
    	      echo 'Upload effectué avec succès !';
    	    }
    	  else //Sinon (la fonction renvoie FALSE).
    	    {
    	      echo 'Echec de l\'upload !';
    	    }
     
    	}
        }
    }
     
    function updateVoiturier() {
    	$photo = '';
    	if (move_uploaded_file) {
    	$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']));
      $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']));
     
      $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 . "',
                  date_inscription = '" . $date_inscription . "',
                  photo = '" . $photo . "' ,
                  annee_experience = '" . $annee_experience . "',
                  permis_conduire =  '" . $permis_conduire . "' 
               
              WHERE membres_id = " . $_SESSION['membreID'];
     
      echo $sql;
      if (!mysql_query($sql))
        {
          die('Erreur - table gestion_voiturier: ' . mysql_error());
        }
      if (!mysql_query($sql))
      {
        die('Erreur - table voitures:' . mysql_error());
      }
      if (isset($password)) {
        $sql = "UPDATE membres set password = md5('" . $password . "') WHERE id = " . $_SESSION['membreID'];
        mysql_query($sql) or die(mysql_error());
      }
      header( "Location: session_voiturier.php" );
    }
     
    }
    ?>

  10. #10
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    		if ($erreur == false) {
     
     
    function insertPhoto() {
    ...etc ...
    }
    function updateVoiturier() {
    ...etc ...
    }
    Ca ne va pas du tout ça. Tu crée une fonction en plein traitement, dans une condition
    Les fonctions n'ont rien à faire là, faut les mettre, les rassembler dans un fichiers (genre mes_fonction.php) et on l'inclu dès le début de la page.
    Une fonction, comme toutes fonctions Php, elle est inerte, limite elle sert à rien.
    Ce n'est que lorsqu'on l'appel que là tous les traitements ce trouvent dans celle ci sera exécuté.

    Donc déjà, corrige ceci.

    Aussi, si te ne sais pas trop comment construire/modifier tes fonctions, et bien ne faite pas de fonction.
    Reprend juste ce qu'il se fait dans ces fonctions, intègre, et surtout adapte les codes par rapport à ce que tu as maintenant.
    En tout cas, tu ne peux plus faire du simple copier/coller, ta façon de procéder n'est plus la même, ou plus tout à fait la même.


    pourquoi $photo = "photo = '".mysql_real_escape_string($fichier)."', ";
    C'est pour mettre à jour le nom de la photo dans la Bdd, et cela uniquement SI l'upload à bien été effectué.
    C'est ce que tu veux, ce que tu as demandé.
    La logique de cette affaire ne s'arrête pas à cette ligne, mais à un ensemble, ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $photo = '';
    if (move_uploaded_file(... etc ...)) {
    	$photo = "photo = '".mysql_real_escape_string($fichier)."', ";
    }
    // Mise à jour de la table
    $sql = "UPDATE gestion_voiturier 
    SET nom = '" . $nom . "',
    prenom = '" . $prenom . "',
    $photo
    WHERE membres_id = " . $_SESSION['membreID'];
    Pour simplifer l'explication, on va admettre qu'on ne fait que cette requête.
    Celle ci est "dynamique" grâce à cette variable $photo, qui par défaut contient rien.
    Donc s'il y a une erreur pendant la phase d'upload, cette variable contiendra rien, sinon, Php génèrera ceci : photo = 'nom_de_la_photo.jpg'
    Au final, la (chaine) de requête pourra être comme ceci :
    UPDATE gestion_voiturier
    SET nom = 'un_nom',
    prenom = 'un_prenom',
    WHERE membres_id = 10
    -> Ici, aucune mise à jour aura lieu sur le champ "photo". Donc sa valeur sera la même qu'auparavant.

    Ou ceci
    UPDATE gestion_voiturier
    SET nom = 'un_nom',
    prenom = 'un_prenom',
    photo = 'nom_de_la_photo.jpg'
    WHERE membres_id = 10
    -> Cette fois, le champ "photo" sera mis à jour, car l'upload aura été effectué.

  11. #11
    Membre éclairé Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Par défaut
    merci de tes explications Run code Php,

    je comprends mieux maintenant l'exécution du script et je l'ai restructuré avec un 'include' pour mes fonctions

    maintenant le probleme c'est que updateVoiturier qui ne se fait pas et aucun message d'erreur

    lorsque j'essaie sans photos et que je modifie exemple adresse, le script s'exécute mais aucun message d'erreur et aucune modification ne se fait non plus

    quand j'essaie avec un chargement de photo, le Uploadphoto se fait mais pas le updateVoiturier



    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
    193
    194
    195
    196
    197
    198
    <?php
    include("res_fonctions.php");
     
    // On initialise l'action à réaliser
    $action = (isset($_POST['action'])) && !empty($_POST['action'])) ? $_POST['action'] : NULL;
     
    switch ($action) {
        case 'UPDATEVoiturier' : // Mise à jour des données de l'utilisateur
            $erreur = false;
     
            // On vérifie les données
     
    		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 xxx';
                        break;
                        case 2 : $msgErreur[] = 'Le fichier téléchargé excède la taille de xxx';
                        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;
                    }
                }
            }
            else {
     
                $msgErreur[] = 'Veuillez rechercher une photo';
            }
     
            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';
            }
    		if (isset($_POST['adresse']) && !empty($_POST['adresse'])) {
                $nom = $_POST['adresse'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir une adresse valide';
            }
    		if (isset($_POST['ville']) && !empty($_POST['ville'])) {
                $nom = $_POST['ville'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre ville de résidence';
            }
    		if (isset($_POST['pays']) && !empty($_POST['pays'])) {
                $nom = $_POST['pays'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre pays';
            }
    		if (isset($_POST['province']) && !empty($_POST['province'])) {
                $nom = $_POST['province'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre province ou votre état';
            }
    		if (isset($_POST['code_postal']) && !empty($_POST['code_postal'])) {
                $nom = $_POST['code_postal'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre code postal';
            }
    		if (isset($_POST['telephone']) && !empty($_POST['telephone'])) {
                $nom = $_POST['telephone'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre numero de téléphone';
            }
    		if (isset($_POST['cellulaire']) && !empty($_POST['cellulaire'])) {
                $nom = $_POST['cellulaire'];
            }
            else {
     
                $msgErreur[] = 'Veuillez saisir votre numero de cellulaire';
            }
    		if (isset($_POST['occupation']) && !empty($_POST['occupation'])) {
                $nom = $_POST['occupation'];
            }
            else {
     
                $msgErreur[] = 'Veuillez saisir votre occupation';
            }
    		if (isset($_POST['sexe']) && !empty($_POST['sexe'])) {
                $nom = $_POST['sexe'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre sexe';
            }
    		if (isset($_POST['annee']) && !empty($_POST['annee'])) {
                $nom = $_POST['annee'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre annee de naissance';
            }
    		if (isset($_POST['mois']) && !empty($_POST['mois'])) {
                $nom = $_POST['mois'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre mois de naissance';
            }
    		if (isset($_POST['jour']) && !empty($_POST['jour'])) {
                $nom = $_POST['jour'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre jour de naissance';
            }
    		if (isset($_POST['jour']) && !empty($_POST['jour'])) {
                $nom = $_POST['jour'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre jour de naissance';
            }
    		if (isset($_POST['email']) && !empty($_POST['email'])) {
                $nom = $_POST['email'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre adresse couriel';
            }
    		if (isset($_POST['password']) && !empty($_POST['password'])) {
                $nom = $_POST['password'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre mot de passe';
            }
    		if (isset($_POST['peris_conduire']) && !empty($_POST['permis_conduire'])) {
                $nom = $_POST['permis_conduire'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir votre numero de permis de conduire';
            }
    		if (isset($_POST['date_inscription']) && !empty($_POST['date_inscription'])) {
                $nom = $_POST['date_inscription'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir la date du jour';
            }
    		if (isset($_POST['annee_experience']) && !empty($_POST['annee_experience'])) {
                $nom = $_POST['annee_experience'];
            }
            else {
                $erreur = true;
                $msgErreur[] = 'Veuillez saisir l\'anee';
            }
    		if (isset($_POST['message']) && !empty($_POST['message'])) {
                $nom = $_POST['message'];
            }
            else {
     
                $msgErreur[] = 'Veuillez saisir un message';
            }
     
    		if ($erreur == false) {
     
    		insertPhoto();
    		updateVoiturier();
     
      header( "Location: session_voiturier.php" );
     
    		}
     
    ?>
    et aussi le sumit de mon formulaire

    <
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    input name="action" type="submit" class="submit" id="submit" value="Enregistrez les modifications" />
          <input type="hidden" name="action" value="UPDATEVoiturier" />
    res_fonctions.php

    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
    <?php
    function insertPhoto() {
      if (isset($_FILES['photo'])) 
        {
     
          $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'];
          //Début des vérifications de sécurité...
     
          if($_FILES['photo'] ['error'] != 0)
    	{
    	  echo ' une erreur est rencontree !';
    	  echo $_FILES['photo']['error'];
    	}
          elseif(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    	{
    	  echo 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, ou bmp...';
    	}
          elseif($taille>$taille_maxi)
    	{
    	  echo 'Erreur!! Le fichier depasse 200 K...';
    	}
          else // s'il n'y a pas d'erreur on upload!
    	{
    	  //On formate le nom du fichier ici...
    	  $fichier = strtr($fichier, 
    			   'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 
    			   'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    	  $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier)or die(mysql_error());
    	  $dossier = '../images/'or die(mysql_error());
    	  if(move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
    	    {
    	      echo 'Upload effectué avec succès !';
    	    }
    	  else //Sinon (la fonction renvoie FALSE).
    	    {
    	      echo 'Echec de l\'upload !';
    	    }
     
    	}
        }
    }
     
    function updateVoiturier() {
    	$photo = '';
    	if (move_uploaded_file) {
    	$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']));
      //$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']));
     
      $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 . "',
                  photo = '" . $photo . "' ,
                  annee_experience = '" . $annee_experience . "',
                  permis_conduire =  '" . $permis_conduire . "' 
               
              WHERE membres_id = " . $_SESSION['membreID'];
    }
    ?>

  12. #12
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Je suis désolé monlou, mais vraiment.
    C'est trop flagrand, tu ne sais absolument pas ce que tu fais, c'est pas possible.

    Tu te contente de faire des copier/coller de code, sans plus.
    Je l'avais déjà dis, il FAUT adapter le code, il est impossible de faire de simple appel à tes 2 fonctions comme ça sans plus.

    Pour ma part, tu te trompe de problème, car le vrai problème, c'est qu'il te manque des connaissances.
    Ce que tu souhaite mettre en place est quelque part au-dessus de tes moyens à mon sens.

    Bref ... si on ne te donne pas un code fonctionnel, tu est complétement bloqué.
    Je n'est pas le temps de te donner un code fonctionnel, de plus que j'y vois aucun intérêt.
    Pour ma part, c'est l'impasse.

  13. #13
    Membre éclairé Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Par défaut
    Je suis désolé RuncodePhp mais je ne fais pas que du copier-coller, j'ai passé toute la fin de semaine a essayer et de comprendre le déroulement du code,
    jai essayé plein de truc et meme s'il me manque des connaissances, je vais réussir a faire ce code d'une maniere et d'une autre.
    Quand a moi, je sais qu'il me manque plus grand chose pour y arriver
    alors merci beaucoup de ton aide jusqu'i ici et je vais aller voir ailleurs pour le reste!
    bonne journee!!!

  14. #14
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Je suis désolé RuncodePhp mais je ne fais pas que du copier-coller, j'ai passé toute la fin de semaine a essayer et de comprendre le déroulement du code,
    Si malheureusement, mais en plus tu effectues d'autres erreurs par-dessus, ce qui n'arrange pas les choses.

    Aussi, faut bien prendre conscience qu'il n'est pas utile de savoir programmer pour pouvoir décrire ligne par ligne ce qui doit être fait dans un cas pareil.
    Faut juste savoir comment fonction le Web.
    Si tu tente de faire ça sur papier, et de la manière la plus logique qui soit, tu devrais te rendre compte que dans ton code ci-dessus il y a des trucs pas logique.

    A mon sens, tu veux faire trop de chose d'un coup, ce qui justement complique les choses.
    Et bien commence par faire plus simple. D'ailleurs, c'est ce qu'il faudrait faire à chaque fois.
    On somme, d'abord en 1er obtenir quelque chose de fonctionnel, même si tous les cas ne sont encore gérés (comme les erreurs).
    A chaque étape, tu rajoute juste la logique (ou traitement) qui vient après, etc, etc ... comme ça 1 par 1, et ne rien rajouter tant que la précédente ne soit pas fonctionnel.

    Tu as une structure qui (théoriquement) maintenant devrait te permettre de mieux gérer tout cet ensemble.
    Donc commence par faire en sorte que l'upload fonctionne, et ça, sans avoir recourt à une quelconque fonction.


    Ce qui peu donner un truc du genre :
    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
     
    <?php
    include("res_fonctions.php");
     
    // On initialise l'action à réaliser
    $action = (isset($_POST['action']) && !empty($_POST['action'])) ? $_POST['action'] : NULL;
     
    switch ($action) {
        case 'UPDATEVoiturier' : // 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) {
                    // On gère qu'une seule erreur pour le moment
                    $erreur_img = true;
                }
     
                if ($erreur_img == false) {
                    // Pas derreur : on upload
                    $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'];
    	        //On formate le nom du fichier ici...
    	        $fichier = strtr($fichier, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
    'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
    	        $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($_POST['nom']);
                ... etc (prenom, ...) ...
                // Mise à jour de la table
                $sql = "UPDATE gestion_voiturier 
                    SET nom = '" . $nom . "',
                    prenom = '" . $prenom . "',
                    ... etc ...
                    $photo (/!\ c'est UNIQUEMENT -> $photo)
                    ... etc ...
                    WHERE membres_id = " . $_SESSION['membreID'];
     
                ... etc (exécution de la requête entre autre) ...
            }
        break;
    }
    Ce n'est pas complet, de plus tout le code a été fait directement, donc sans tester du coup il peu avoir des erreurs (syntaxe ou autre).
    En tout cas voilà il me semble une 1ère étape qui serait peut être à valider.

    Ca ne gère donc peu de types d'erreurs sur l'upload. (2 cas seulement théoriquement).
    Un fois avoir intégrer toutes les erreurs possible sur l'upload (par exemple), il devrait être possible d'intégrer tout ça dans une fonction par exemple.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier)or die(mysql_error());
    $dossier = '../images/'or die(mysql_error());
    Attention à ce genre d'erreur hyper flagrante (grosse comme une maison )
    Comment veux tu que MySQL retourne une erreur (mysql_error) alors que là il ne s'agit en rien d'un traitement concernant MySQL ?
    (corrigé plus haut)

    En espérant que ceci fasse avancer le chmilblik

  15. #15
    Membre éclairé Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Par défaut
    désolé pour le temps que ca a pris mais j'ai pris l'initiative de suivre quelques tutos de plus pour continuer ce script, entre autre, les expressions régulières.

    bon, suite a ta recommandation, j'ai repris la structure afin de s'assurer si le upload fonctionne et c'est fait. ca fonctionne

    ensuite, j"ai rajouter les vérifications généres par $_files a la condition

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    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.';
    //etc
    ici, ces vérifications fonctionnent mais n'affiche pas encore les messages d'erreurs

    ---les conditions de vérifications d'extensions ne sont pas encore la non plus

    j'ai aussi rajouter le UPDATE qui fonctionnent
    et si il y a une erreur aux vérifications de photos, il n'y a pas de UPDATE

    maintenant, il reste a rajouter les vérifications de $_POST

    et les vérifications de doublons de photos dans un second temps

    Euh!! Maintenant Je me pose ces questions la!!
    1- Les vérifications $_POST vont-ils immédiatement suite aux vérifications $_FILES ?
    2- ou ajouter la condition de vérification pour extension?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     if (isset(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    	{
    	  echo 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, ou bmp...';
    	}
    voici le rendu

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

  16. #16
    Membre éclairé Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Par défaut
    merci encore une fois Runcode Php

    tu m'as permis de me donner une piste de travail pour la gestion des erreurs dans un formulaire.

    il me reste a apporter des améliorations mais jusqu'ici ca répond bien au sujet de ce post

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/06/2015, 15h38
  2. Réponses: 6
    Dernier message: 28/11/2013, 12h55
  3. Référencement avec mise à jour asynchrone
    Par Heptaeon dans le forum Référencement
    Réponses: 2
    Dernier message: 12/09/2006, 17h06
  4. Liste déroulante avec mise à jour champ en dynamique
    Par B-Pascal dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/07/2006, 16h53
  5. Access Problème avec mise à jour données
    Par Yanmeunier dans le forum Access
    Réponses: 2
    Dernier message: 30/03/2006, 17h05

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