Announcement

Collapse
No announcement yet.

Mehrere Bilder per Input auswählen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mehrere Bilder per Input auswählen

    Hallo,
    ich möchte Nutzern die Möglichkeit geben, Bilder auszuwählen und hochzuladen.
    Dazu habe ich folgenden Code:
    <form method="post" action="?p=add" enctype="multipart/form-data">
    <input type="hidden" name="size" value="1000000" style="padding: 6px;">
    <input type="file" name="image" class="choose-image">
    <input type="submit" name="add-personal-data" value="Speichern" class="submitbutton">
    </form>

    Das Problem hierbei ist, dass der Nutzer nur ein Bild auswählen kann, er soll aber bis zu fünf Bildern auswählen können. Klar könnte ich diese Schaltfläche jetzt 5 mal anzeigen lassen allerdings ist das dann nicht so professionell und es ist auch nicht so toll, wenn der Nutzer nur zwei Bilder hochladen will.

    Ich stelle mir so vor:
    Der Nutzer wählt ein Bild aus, dann wird eine neue Schaltfläche angezeigt (maximal 5) und mit dem Submitbutton wird dann alles hochgeladen. Es wäre schön, wenn mir jemand mit den Schaltflächen helfen könnte.
    Zuletzt editiert von UnknownInncoent; 06.05.2019, 18:13. Reason: added tags

  • #2
    https://www.w3schools.com/tags/att_input_multiple.asp
    Christian

    Comment


    • UnknownInncoent
      UnknownInncoent commented
      Editing a comment
      Okay, und wie kann ich jetzt festlegen, dass der Nutzer maximal 5 Bilder auswählen kann?

  • #3
    Wenn du den Beitrag kommentierst, bekommt das keiner mit -> neuen Beitrag erstellen hier, so wie ich

    Gar nicht. Du kannst lediglich auf dem Server dann nur die ersten 5 annehmen oder noch eine Zwischenseite anzeigen, die alle ausgewählten Dateien enthält und der User soll nochmals auswählen
    Christian

    Comment


    • #4
      Okay und wie ist das mit der Datenauswertung? Ich mache das jetzt mit

      $image = $_FILES['image']['name'];

      aber da wird ja nur ein Bild gespeichert

      Comment


      • #5
        https://www.google.com/search?client...+file+multiple

        https://www.php.net/manual/de/featur...d.multiple.php
        Christian

        Comment


        • #6
          Also ich habe das jetzt mal ausprobiert mit folgendem Code:

          <input type="hidden" name="size" value="1000000" style="padding: 6px;">
          <input type="file" name="image[]" class="choose-image" multiple>

          echo count($_FILES['image']) . " <br>";

          for($i = 0; $i < count($_FILES['image']); $i++) {
          // Get image name
          $image = $_FILES['image']['name'][$i];

          // image file directory
          $target = "img/".basename($image);
          echo ("Image " . $target . " <br>");
          }

          Aber egal wieviele Dateien ich auswähle, es kommt bei count() immer fünf raus, wieso?

          Comment


          • #7
            Siehe 2. Link
            Die erste Dimension ist name, type,tmp_name,error,size = 5
            Christian

            Comment


            • #8
              Verstehe ich nicht :/
              Könntest du mir anhand meines Codes sagen, was ich ändern muss?

              Comment


              • #9
                Was ist nun an den vielen Beispielen auf der Seite schlecht?


                Code:
                function reArrayFiles(&$file_post) {
                
                $file_ary = array();
                $file_count = count($file_post['name']);
                $file_keys = array_keys($file_post);
                
                    for ($i=0; $i<$file_count; $i++) {
                        foreach ($file_keys as $key) {
                $file_ary[$i][$key] = $file_post[$key][$i];
                        }
                    }
                
                    return $file_ary;
                }
                
                ?>
                
                if ($_FILES['upload']) {
                $file_ary = reArrayFiles($_FILES['ufile']);
                
                    foreach ($file_ary as $file) {
                        print 'File Name: ' . $file['name'];
                        print 'File Type: ' . $file['type'];
                        print 'File Size: ' . $file['size'];
                    }
                }
                Wäre jetzt mein Favorit
                Christian

                Comment


                • #10
                  Gut ich vermute mal, ich muss das mal auf meine form anpassen. Ich habe jetzt
                  $file_ary = reArrayFiles($_FILES['image']); eingesetzt, allerdings erhalte ich keine Ausgabe. Hier mal der ganze Code falls es hilft.
                  PHP Code:
                  <?php    if(isset($_POST['upload'])){    
                   
                  $title $_POST['title'];    
                  $beschreibung $_POST['beschreibung'];   
                   function 
                  reArrayFiles(&$file_post) {    
                   
                  $file_ary = array();    
                  $file_count count($file_post['name']);    
                  $file_keys array_keys($file_post);
                  echo 
                  $file_count;       
                  or (
                  $i=0$i<$file_count$i++) {          
                    foreach (
                  $file_keys as $key) {                
                  $file_ary[$i][$key] = $file_post[$key][$i];            
                  }        
                  }        
                  return 
                  $file_ary;    
                  }      
                   if (
                  $_FILES['upload']) {    
                  $file_ary reArrayFiles($_FILES['image']);          
                  foreach (
                  $file_ary as $file) {            
                  print 
                  'File Name: ' $file['name'];            
                  print 
                  'File Type: ' $file['type'];            
                  print 
                  'File Size: ' $file['size'];        
                  }    
                  }    
                  }  
                  ?>  
                  <main>  
                  <div class="line">    
                   <div class="register">        
                  <form method="post" action="?p=add" enctype="multipart/form-data">          
                  <h2>Beitrag erstellen</h2>        
                  <hr />        
                  <p class="pflichtfeld"> Felder mit einem (<span class="redstar">*</span>) sind Pflichtfelder. </p>          
                  <h4>Titel<span class="redstar">*</span></h4>        
                  <input type="text" name="title" placeholder="Titel" class="datafield" required>          
                  <h4>Beschreibung</h4>        
                  <textarea name="beschreibung" wrap="soft" class="datafield" rows="5" placeholder="Beschreibung"></textarea>          
                  <h4>Profilbild ändern</h4>         <p style="margin-top: 5px;">(Zulässige Dateiformate: .png .jpg)</p>        
                  <input type="hidden" name="size" value="1000000" style="padding: 6px;">        
                  <div>           <input type="file" name="image[]" class="choose-image" multiple>        
                  </div>          
                  <div>          
                  <input type="submit" name="upload" value="Speichern" class="submitbutton">        
                  </div>      
                   </form>    
                  </div>    
                  </div>
                  </main>

                  Comment


                  • #11
                    if ($_FILES['upload']) {

                    würde ich auch ändern
                    Christian

                    Comment

                    Working...
                    X