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

Langage PHP Discussion :

Ne pas enregistrer dans la bdd un champ de type file si vide


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 64
    Points : 31
    Points
    31
    Par défaut Ne pas enregistrer dans la bdd un champ de type file si vide
    bonjour,

    j'ai un formulaire de mise a jour de fiche moto ,

    et je rencontre un probleme avec les input type file , qui si même vide s'enregistre dans la bdd , je souhaiterais donc y mettre une conditions que si aucun fichier n'est uploadé , on enregistre rien .

    Après avoir testé différentes solution , je m'en remts à vous , sachant que le traitement est opérationnel , champ texte et file , mais avec le problème cité plus haut pour les champs files.

    merci pour le petit coup de main .....

    voici le code de traitement :
    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
     
    <?php
      //connection au serveur
      $BDD = mysql_connect("""""");  // Connexion à la base de données.
     
                mysql_select_db("db657178822");       // Sélection de la base de données utilisée.
    ?>
     
    <?php
    $dossier = 'images/';
    $fichier = basename($_FILES['image_localisation']['name']);
    $taille_maxi = 1000000;
    $taille = filesize($_FILES['image_localisation']['tmp_name']);
    $extensions = array('.png', '.gif', '.jpg', '.jpeg');
    $extension = strrchr($_FILES['image_localisation']['name'], '.'); 
    //Début des vérifications de sécurité...
    if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
    {
         $erreur = 'Vous devez uploader un fichier de type png, gif, jpg, jpeg, txt ou doc...';
    }
    if($taille>$taille_maxi)
    {
         $erreur = 'Le fichier est trop gros...';
    }
    if(!isset($erreur)) //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);
         if(move_uploaded_file($_FILES['image_localisation']['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 !';
     
         }
    	 if (isset($_FILES['image_localisation']) && is_array($_FILES['image_localisation'])){
     
                foreach($_FILES['image_localisation'] as $index=>$valeur){
                    $valeur = trim($valeur);
     
                   if (!empty($valeur)) {
                   $sql5 =" UPDATE modele SET image_localisation = '".$valeur."' WHERE id_modele = '".$id_modele."'";
                   mysql_query($sql5) or die(mysql_error());   
                   }
                }   
    }
    }
    else
    {
         echo $erreur;
    }
    ?>
    <?php
     
     
    	$illustration_1  = $_FILES['illustration_1']['name'];
        $nom_fichier = $_FILES['illustration_1']['tmp_name'];
        $nom_destination = 'images/'.$illustration_1;
        move_uploaded_file($nom_fichier, $nom_destination);
     
    	$illustration_2  = $_FILES['illustration_2']['name'];
        $nom_fichier = $_FILES['illustration_2']['tmp_name'];
        $nom_destination = 'images/'.$illustration_2;
        move_uploaded_file($nom_fichier, $nom_destination);
     
    	$illustration_3  = $_FILES['illustration_3']['name'];
        $nom_fichier = $_FILES['illustration_3']['tmp_name'];
        $nom_destination = 'images/'.$illustration_3;
        move_uploaded_file($nom_fichier, $nom_destination);
     
    	$illustration_4  = $_FILES['illustration_4']['name'];
        $nom_fichier = $_FILES['illustration_4']['tmp_name'];
        $nom_destination = 'images/'.$illustration_4;
        move_uploaded_file($nom_fichier, $nom_destination);
     
     
     
      //récupération des valeurs des champs:
      //marque:
      $marque     = $_POST["marque"] ;
      $marque     = addslashes( $marque ) ;
      //id modele:
      $id_modele = $_POST["id_modele"] ;
      $id_modele    = addslashes( $id_modele ) ;
      //modele:
      $modele = $_POST["modele"] ;
      $modele    = addslashes( $modele ) ;
      //categorie:
      $numero_fiche 	= $_POST["numero_fiche"] ;
      $numero_fiche     = addslashes( $numero_fiche ) ;
      //millesime:
      $millesime 	= $_POST["millesime"] ;
      $millesime     = addslashes( $millesime ) ;
      //creation:
      $crea = $_POST["crea"] ;
      $crea    = addslashes( $crea ) ;
      //mise à jour:
      $maj 	= $_POST["maj"] ;
      $maj     = addslashes( $maj ) ;
      //indice:
      $indice 	= $_POST["indice"] ;
      $indice     = addslashes( $indice ) ;
      //indice:
      $support	= $_POST["support"] ;
      $support     = addslashes( $support ) ;
      //percage:
      $percage 	= $_POST["percage"] ;
      $percage     = addslashes( $percage ) ; 
      //decoupe:
      $decoupe 	= $_POST["decoupe"] ;
      $decoupe     = addslashes( $decoupe ) ; 
      //autre:
      $autre 	= $_POST["autre"] ;
      $autre     = addslashes( $autre ) ; 
      //autre:
      $operation_text_autre 	= $_POST["operation_text_autre"] ;
      $operation_text_autre     = addslashes( $operation_text_autre ) ;
      //localisation:
      $localisation	  = $_POST["localisation"] ;
      $localisation    = addslashes( $localisation ) ;
      //localisation_text_autre:
      $localisation_text_autre	  = $_POST["localisation_text_autre"] ;
      $localisation_text_autre    = addslashes( $localisation_text_autre ) ;
      //gamme:
      $gamme	  = $_POST["gamme"] ;
      $gamme    = addslashes( $gamme ) ;
      //titre_illustration_1:
      $titre_illustration_1	  = $_POST["titre_illustration_1"] ;
      $titre_illustration_1    = addslashes( $titre_illustration_1 ) ;
      //titre_illustration_2:
      $titre_illustration_2	  = $_POST["titre_illustration_2"] ;
      $titre_illustration_2    = addslashes( $titre_illustration_2 ) ;
      //titre_illustration_3:
      $titre_illustration_3	  = $_POST["titre_illustration_3"] ;
      $titre_illustration_3    = addslashes( $titre_illustration_3 ) ;
      //titre_illustration_4:
      $titre_illustration_4	  = $_POST["titre_illustration_4"] ;
      $titre_illustration_4    = addslashes( $titre_illustration_4 ) ;
     
     
     
     
     
     
      //création de la requête SQL:
      $sql = "UPDATE modele
                SET marque = '".$marque."',
                  modele = '".$modele."',
                  numero_fiche = '".$numero_fiche."',
                  millesime = '".$millesime."',
    			  crea = '".$crea."',
    			  maj = '".$maj."',
    			  indice = '".$indice."',
    			  support = '".$support."',
    			  percage = '".$percage."',
    			  decoupe_plastique = '".$decoupe."',
    			  operation_autre = '".$autre."',
    			  operation_text_autre = '".$operation_text_autre."',
    			  localisation = '".$localisation."',
    			  localisation_text_autre = '".$localisation_text_autre."',
    			  gamme = '".$gamme."',
    			  titre_illustration_1 = '".$titre_illustration_1."',
    			  titre_illustration_2 = '".$titre_illustration_2."',
    			  titre_illustration_3 = '".$titre_illustration_3."',
    			  titre_illustration_4 = '".$titre_illustration_4."',
    			  illustration_1 = '".$illustration_1."',
    			  illustration_2 = '".$illustration_2."',
    			  illustration_3 = '".$illustration_3."',
    			  illustration_4 = '".$illustration_4."'
                  WHERE id_modele = ".$id_modele ;
     
     
     
      //exécution de la requête SQL:
      $requete = mysql_query($sql, $BDD) or die( mysql_error() ) ;
     
     
      //affichage des résultats, pour savoir si la modification a marchée:
      if($requete)
      {
        echo("<h3>Votre fiche ".$marque." ".$modele." ".$millesime." a bien été modifié</h3> ") ;
      }
      else
      {
        echo("La modification à échouée") ;
      }
     
     
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans titre</title>
    </head>
     
    <body>
    </body>
    </html>

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu peux tester le code erreur UPLOAD_ERR_NO_FILE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ($_FILES['image_localisation']['error'] == UPLOAD_ERR_NO_FILE) {
       echo 'pas de fichier envoyé';
    }
    En fait, de manière générale, si $_FILES['image_localisation']['error'] est différent de UPLOAD_ERR_OK , c'est que quelque chose s'est mal passé.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre régulier
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2010
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 153
    Points : 107
    Points
    107
    Par défaut
    Bonjour,
    Il y a un certain nombre de choses curieuses.

    A commencer par le fait que tu traites $_FILES['image_localisation']['name'] en début de fichier avant de tester plus bas si $_FILES['image_localisation'] existe et si c'est un tableau.

    Ensuite tu fais un foreach sur $_FILES['image_localisation'] alors que tu as toi-même traité avant le fait qu'il ne contient pas la liste des images mais contient 'name' et 'tmp_name', veux-tu vraiment mettre à jour en base avec un nom temporaire, et une variable $id_modele qui n'est pas instanciée ?

    Le processus ne semble pas très clair.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2012
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 64
    Points : 31
    Points
    31
    Par défaut
    bonjour à vous et merci de votre aide ,

    en effet comme je l'ai dis , j'ai fais des test , mais je dois avouer que je mis perd ....

    le but étant que lorsque on modifie un des champs file dans le formulaire , cela ne m'efface pas tout les autres ....

    il faudrait que je traite le files après la avoir récupéré les fichiers post ? car comme tu peux le voir le $id_modele est récupéré dans les post après .

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/04/2013, 00h05
  2. Réponses: 2
    Dernier message: 17/04/2007, 11h44
  3. [MySQL] Savoir le nombre d'enregistrements dans la BDD
    Par achos dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 14/02/2007, 12h55
  4. [C#] Supprimer un enregistrement dans une BDD
    Par Filippo dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/07/2006, 12h02
  5. comment ne pas enregistrer dans le fichier log?
    Par trotters213 dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 21/03/2005, 14h56

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