Partage
  • Partager sur Facebook
  • Partager sur Twitter

Vérifier la présence d'un fichier

Problème de conditions

    29 août 2006 à 12:29:36

    Bonjour tout le monde !

    Tout d'abord j'en profite pour remercier Mathéo et les Zéros pour tous ces tutos qui m'ont fait découvrir le PHP. (Je posterai dans le livre d'or quand mon site sera opérationnel, promis !!)

    Voici ma question :

    Je dispose d'un formulaire d'envoi de fichier photo dans une BDD accompagné d'un titre et d'une description.
    Ce formulaire fonctionne à merveille, rien à redire.
    Une fois la photo envoyée, elle figure dans un book avec son titre et sa description.
    L'utilisateur peut cliquer sur modifier pour changer son titre ou sa description. Il arrive sur un nouveau formulaire qui est prérempli dans les champs "Titre" et "Description" mais vide dans le champ "Parcourir" car, entre temps, le nom du fichier image a changé et n'est plus celui du fichier présent dans son PC. Bref, c'était juste une petite explication de départ.

    Mon soucis est celui-ci :

    L'utilisateur doit pouvoir modifier uniquement le titre et la description sans, à nouveau, uploader une nouvelle image. Le champ "Parcourir" reste donc vide.
    Si ce champ est vide, dans mon code, je dois pouvoir passer directement à la partie qui ne mettra à jour QUE les champs concernés dans la BDD.
    Si le champ "Parcourir" comporte un nouveau fichier, dans mon code, j'effectue les action qui vérifient le type de fichier etc ... et cela met à jour la BDD avec la nouvelle image.

    Cependant, quand mon champ "Parcourir" est vide, la vérification sur le type d'image se fait quand même. Je n'arrive pas à la sauter pour ne traiter QUE le texte.

    Où est mon erreur ?

    Je vous livre ci-dessous mon code complet de la page qui traite le résultat de mon formulaire.

    <?php
    mysql_connect("localhost", "root", "");
    mysql_select_db("vince");

    if (isset ($_FILES['fichier']))

            {
                    $poids_max = 512000; // Poids max de l'image en octets (1Ko = 1024 octets)
                    $repertoire = 'photos/'; // Repertoire d'upload
                    $titre = addslashes($_POST['titre']);
                    $description = addslashes($_POST['description']);

                    if (isset($_FILES['fichier']))
                    {
       
                       // On vérifit le type du fichier
                       if ($_FILES['fichier']['type'] != 'image/png' && $_FILES['fichier']['type'] != 'image/jpeg' && $_FILES['fichier']['type'] != 'image/jpg' && $_FILES['fichier']['type'] != 'image/gif')
                       {
                              $erreur = 'Le fichier doit être au format *.jpeg, *.gif ou *.png .';
                       }
                      
                       // On vérifit le poids de l'image
                       elseif ($_FILES['fichier']['size'] > $poids_max)
                       {
                              $erreur = 'L\'image doit être inférieur à ' . $poids_max/1024 . 'Ko.';
                       }
                      
                       // On vérifit si le répertoire d'
    upload existe
                       elseif (!file_exists($repertoire))
                       {
                              $erreur = 'Erreur, le dossier d\'upload n\'existe pas.';     
                       }
                      
                       // Si il y a une erreur on l'affiche sinon on peut uploader
                       if(isset($erreur))
                       {
                              echo '' . $erreur . '<br><a href="javascript:history.back(1)">Retour</a>';
                       }
                       else
                       {
                                    
                              // On définit l'extention du fichier puis on le nomme par le timestamp actuel
                              if ($_FILES['fichier']['type'] == 'image/jpeg') { $extention = '.jpeg'; }
                              if ($_FILES['fichier']['type'] == 'image/jpeg') { $extention = '.jpg'; }
                              if ($_FILES['fichier']['type'] == 'image/png') { $extention = '.png'; }
                              if ($_FILES['fichier']['type'] == 'image/gif') { $extention = '.gif'; }
                              $nom_fichier = time().$extention;
                                            
                              // On upload le fichier sur le serveur.
                              if (move_uploaded_file($_FILES['fichier']['tmp_name'], $repertoire.$nom_fichier))
                              {
                                     // C'est une modification, on met juste à jour le titre et le contenu
            mysql_query("UPDATE book SET titre='" . $titre . "', fichier='" . $nom_fichier . "', description='" . $description . "' WHERE id=" . $_POST['id_book']);
                   
                                     echo 'Votre image à été uploadée sur le serveur avec succès !';
                              }
                              else
                              {
                                     echo 'L\'image n\'a pas pu être uploadée sur le serveur.';
                              }
                            
                       }
                      
                    }
            }
           
    elseif (empty ($_POST['var']))

    {
    if (isset ($_POST['titre']) AND isset ($_POST['description']) AND isset ($_POST['id_book'])) // C'est qu'on met à jour une photo
    // On récupère les nouvelles données postées et on en fait des variables
    {
        $titre = addslashes ($_POST['titre']);
        $description = addslashes ($_POST['description']);
           
            if ($_POST['id_book'] !=0)
    {       
            {
            // C'est une modification, on met juste à jour le titre et le contenu
            mysql_query("UPDATE book SET titre='" . $titre . "', description='" . $description . "' WHERE id=" . $_POST['id_book']);
        }
                    echo 'La modification du texte de cette photo a bien été prise en compte.';
    }
    else
    {
    ?>
                    <h2>Erreur dans la modification. Il faut recommencer.</h2>
    <?php
    }
    }
    }
    ?>


    Voilà.
    Je suis également ouvert à toutes suggestions ou questions sur ce code qui est, pensez-y, l'oeuvre d'un zéro débutant ! ;)

    A bientôt et merci pour vos réponses !
    • Partager sur Facebook
    • Partager sur Twitter
      29 août 2006 à 12:38:50

      Salut,


      if (isset ($_FILES['fichier']))
      Ce code est toujours vrai à partir du moment où tu valide ton formulaire. La variable est créé. Donc isset te renvoi TRUE.
      Essaye plutot avec du !empty

      A+ ;)
      • Partager sur Facebook
      • Partager sur Twitter
        30 août 2006 à 12:34:45

        Et voilà, c'est résolu !!

        Merci pour ton conseil.

        Malheureusement, j'ai opté pour une solution différente :
        J'ai créé 2 liens séparés : un pour changer l'image, l'autre pour ne changer que le texte.
        Cela m'a évité de faire cohabiter sur la même page le code pour une nouvelle image et le code pour un nouveau texte.
        Car quand je ne rentrai qu'un nouveau texte, php pensait que j'envoyais aussi une image au mauvais format alors qu'en fait il n'y en avait pas.

        Bon enfin voilà, c'est résolu.

        M'attaque à aut' chose maintenant ... piouf ! :-°
        • Partager sur Facebook
        • Partager sur Twitter

        Vérifier la présence d'un fichier

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown