Else pas prit en compte

Chooper01

Chooper01 Le 3 septembre 2016 à 18:22 (Édité le 25 janvier 2019 à 17:52)

Bonjour,

Voila comme le titre le dis mes else ne sont pas prit en compte.

Exemple:
Si je mets un format autre que png jpg ect il me dit "Veuillez remplir tous les champs" ...

Je vous mets mon code :

<?php
   if (isset($_POST['envoye'])) 
   {
      if (isset($_FILES['Image']) AND !empty($_FILES['Image']['name'])) 
       {
           $taillemax = 2097152 ;
           $extensionval = array('jpg' , 'jpeg' , 'gif' , 'png') ;
           if ($_FILES['Image']['size'] <= $taillemax) 
           {
               $extensionUpload = strtolower(substr(strrchr($_FILES['Image']['name'], '.'), 1));
                 
               if (in_array($extensionUpload, $extensionval)) 
               {
                   $chemin = "imagesrecette/recette/".$_SESSION['id'].".".$extensionUpload;
                   $resultat = move_uploaded_file($_FILES['Image']['tmp_name'], $chemin) ;
                       
                   if ($resultat) 
                   {
                             $updateavatar = $bdd->prepare('UPDATE recette SET Image = :Image WHERE id = :id ') ;
                             $updateavatar->execute(array(
                             'Image' => $_SESSION['id']. "." .$extensionUpload ,
                             'id' => $_SESSION['id'] 
                              ));
                          
                       if (isset($_POST['titre'],$_POST['type'],$_POST['nbrpers'],$_POST['1ing'],$_POST['contenu']) AND !empty($_POST['titre']) AND !empty($_POST['type']) AND !empty($_POST['nbrpers']) AND !empty($_POST['1ing']) AND !empty($_POST['contenu'])) 
                           {
                     
                                 $titre = htmlspecialchars($_POST['titre']);
                                 $type = htmlspecialchars($_POST['type']);
                                 $nbrpers = htmlspecialchars($_POST['nbrpers']);
                                 $_1ing = htmlspecialchars($_POST['1ing']);
                                 $_2ing = htmlspecialchars($_POST['2ing']);
                                 $_3ing = htmlspecialchars($_POST['3ing']);
                                 $_4ing = htmlspecialchars($_POST['4ing']);
                                 $_5ing = htmlspecialchars($_POST['5ing']);
                                 $_6ing = htmlspecialchars($_POST['6ing']);
                                 $_7ing = htmlspecialchars($_POST['7ing']);
                                 $_8ing = htmlspecialchars($_POST['8ing']);
                                 $_9ing = htmlspecialchars($_POST['9ing']);
                                 $_10ing = htmlspecialchars($_POST['10ing']);
                                 $contenu = htmlspecialchars($_POST['contenu']);
                                 $image = $_FILES['Image'];
                                 $ins = $bdd->prepare("INSERT INTO recette (Image, Titre, Contenu, Nbrpers, 1ing, 2ing, 3ing, 4ing, 5ing, 6ing, 7ing, 8ing, 9ing, 10ing, type, datepub) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW())");
                                 $ins->execute(array($image, $titre, $contenu, $nbrpers, $_1ing, $_2ing, $_3ing, $_4ing, $_5ing, $_6ing, $_7ing, $_8ing, $_9ing, $_10ing, $type));
                                 
                                 $msg = 'Votre recette a bien été envoyée !' ;
                        }
                        else { $erreur ='Veuillez remplir tous les champs'; }                              
            }
            else {$erreur ='Erreur lors de votre importation d\'images.';}
         }
         else{$erreur='L\'extenstion de l\'image est invalide !';}
   }
   else { $erreur ='La taille du fichier ne doit pas dépasser les 2Mo';}
      
   }
   else {$erreur ='Veuillez mettre une image ';}
   }
?>
TheOldNoob

TheOldNoob Le 3 septembre 2016 à 20:10

Salut Chooper,

Alors, bon, j'aime pas se genre de construction, les else sont difficilement différenciable. Mais ça marche quand même comme genre de code.
Pour insérer une image en bdd ainsi que des champs, je fait un If pour l'image, avec mes else bien comme il faut,
puis je met un autre if que pour les autre champs. ça me donne plus de visibilité.

Après, je pense que ça viens du type MIME a la place de :
$extensionval = array('jpg' , 'jpeg' , 'gif' , 'png') ;
J'aurais mis :

$extensionval= array('image/jpeg', 'image/jpg', 'image/png', 'image/gif'); // Attention, image n'indique pas le répertoire, mais le type mime !
Chooper01

Chooper01 Le 3 septembre 2016 à 22:47

Salut merci de ta réponse mais c'est résolu j'avais juste oublier le
enctype="multipart/form-data"
Merci !
Profil introuvable

Profil introuvable Le 10 septembre 2016 à 19:43

Salut je met ce message juste car tu devrais rajouter dans ton array les extensions en majuscule ex. .GIF, .PNG, ... car c'est sensible à la casse j'ai déjà eu des erreurs sur mon site a cause de ça ^^

Et tu peux aussi mettre le topic en résolu 😋
TheOldNoob

TheOldNoob Le 10 septembre 2016 à 21:29

hahah, en fait, l'erreur venais d'une parti du code qu'on avait pas.. pratique pour aider 😉
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte