Partage
  • Partager sur Facebook
  • Partager sur Twitter

Mettre plusieurs image

    26 octobre 2021 à 22:09:17

    J'utilise la méthode PDO et je travail sur un projet ou une personne doit telecharger deux image grace a un input file ensuite une image va dans un ficher "upload" et l'autre dans un fichier "upload2" puis les deux s'affiche cote a cote sur le site j'ai reussi a faire afficher la premiere image mais paa la deuxieme. Merci de bien vouloir m'aider 

    Ou je demande d'inserer les deux images

    <?php 
    
    include "connect.php";
    
    if(isset($_POST['ok'])) 
    
    { 
    
    $folder ="uploads/"; 
    
    $image = $_FILES['image']['name']; 
    
    $path = $folder . $image ; 
    
    $target_file=$folder.basename($_FILES["image"]["name"]);
    
    
    $imageFileType=pathinfo($target_file,PATHINFO_EXTENSION);
    
    
    $allowed=array('jpeg','png' ,'jpg'); $filename=$_FILES['image']['name']; 
    
    $ext=pathinfo($filename, PATHINFO_EXTENSION); if(!in_array($ext,$allowed) ) 
    
    { 
    
     echo "Sorry, only JPG, JPEG, PNG & GIF  files are allowed.";
    
    }
    
    if(file_exists('uploads/'.$filename)){
        echo"Changer le nom de votre image";
    }
    else{ 
    
    move_uploaded_file( $_FILES['image'] ['tmp_name'], $path); 
    
    $sth=$con->prepare("insert into users(image)values(:image) "); 
    
    $sth->bindParam(':image',$image); 
    
    $sth->execute(); 
    
    } 
    
    } 
    
    ?> 
    <?php 
    
    include "connect.php";
    
    if(isset($_POST['ok'])) 
    
    { 
    
    $folder2 ="uploads2/"; 
    
    $image2 = $_FILES['image2']['name']; 
    
    $path2 = $folder2 . $image2 ; 
    
    $target_file2=$folder2.basename($_FILES["image"]["name"]);
    
    
    $imageFileType2=pathinfo($target_file,PATHINFO_EXTENSION);
    
    
    $allowed2=array('jpeg','png' ,'jpg'); $filename2=$_FILES['image2']['name']; 
    
    $ext2=pathinfo($filename2, PATHINFO_EXTENSION); if(!in_array($ext2,$allowed2) ) 
    
    { 
    
     echo "Sorry, only JPG, JPEG, PNG & GIF  files are allowed.";
    
    }
    
    if(file_exists('uploads2/'.$filename2)){
        echo"Changer le nom de votre image";
    }
    else{ 
    
    move_uploaded_file( $_FILES['image2'] ['tmp_name'], $path2); 
    
    $sth2=$con->prepare("insert into users(image2)values(:image2) "); 
    
    $sth2->bindParam(':image2',$image2); 
    
    $sth2->execute(); 
    
    } 
    
    } 
    
    ?> 
    
    <form method="POST" enctype="multipart/form-data"> 
    
    <input type="file" name="image" /> 
    
    <input type="file" name="image2" /> 
    
    <input type="submit" name="ok"/> 
    
    </form>
    
    <a href="select.php">See Image</a>

    Ou j'afficher les deux images

    <table border="2">
    <tr>
    <th>ID</th>
    <th>Image</th>
    </tr>
    <?php
    include "connect.php";
    $select = $con->prepare("SELECT * FROM users ");
    $select->setFetchMode(PDO::FETCH_ASSOC);
    $select->execute();
    while($data=$select->fetch()){
    ?><tr>
    <td><?php echo $data['id']; ?></td>
    <td><img src="uploads/<?php echo $data['image']; ?>" width="100" height="100"></td>
    <td><img src="uploads2/<?php echo $data['image2']; ?>" width="100" height="100"></td>
    <?php
    }?>
    </tr></table>
    <a href="index.php">Add new image</a>


    Ma base de donner PhpMyAdmin

    • Partager sur Facebook
    • Partager sur Twitter
      26 octobre 2021 à 23:36:13

      Bonsoir,

      Dans ton second code, ligne 15, tu renseignes le mauvais nom de dossier : "uploads2" au lieu de "uploads".

      EDIT

      Après une relecture plus poussée de ton premier code source, il s'avère que tu as procédé à un bête copier-coller de ton bloc : tu inclus deux fois le fichier de connexion, tu te retrouves avec deux dossiers d'uploads, etc. Mauvaise pratique, à mon avis. La première chose que tu devrais faire est de refactoriser le tout pour obtenir un code plus clair et concis.

      La table que tu as créée côté base de données est également mauvaise : chaque identifiant ne devrait correspondre qu'à une seule image uploadée, au lieu de deux.

      -
      Edité par Omiganox 26 octobre 2021 à 23:49:49

      • Partager sur Facebook
      • Partager sur Twitter
        26 octobre 2021 à 23:44:46

        Omiganox a écrit:

        Bonsoir,

        Dans ton second code, ligne 15, tu renseignes le mauvais nom de dossier : "uploads2" au lieu de "uploads".

        j'utilise "uploads2" pour "image2"


        -
        Edité par IstenzMx 26 octobre 2021 à 23:45:30

        • Partager sur Facebook
        • Partager sur Twitter
          27 octobre 2021 à 17:34:54

          Avoir deux dossiers différents pour les uploads d'image est contre-productif. Avant d'aller plus loin, tu peux fournir un screenshot du contenu de ta table "users", s'il te plaît ?

          -
          Edité par Omiganox 27 octobre 2021 à 17:35:18

          • Partager sur Facebook
          • Partager sur Twitter
            27 octobre 2021 à 17:47:05

            Tu fais 2 INSERT donc une ligne n'aura toujours qu'une seule image (image ou image2), jamais 2 (image et image2).

            => Il ne faut faire qu'un INSERT en renseignant les 2 colonnes en même temps, pas 2 INSERT avec tour à tour 1 colonne.

            Et, niveau conception/modélisation, je suis plus que sceptique. Il faudrait envisager l'écriture d'une fonction pour DRY le code également.

            -
            Edité par julp 27 octobre 2021 à 17:52:58

            • Partager sur Facebook
            • Partager sur Twitter

            Mettre plusieurs image

            × 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