mehrere Blder hochldaden und speichen???

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mehrere Blder hochldaden und speichen???

    Hallo Leute,

    bin grad dabei mir nen Script zusammenzubasteln, mit dem ich mehrere Bilder hochladen, deren Größe ändern und sie dann speichern kann.

    Mit einem Bild klappt das auch. Schaffe es aber nicht das mit allen Bilder zu machen.

    Komme nach "move_uploaded_file()" nicht mehr weiter!

    Hoffe auf eure Hilfe.

    PHP-Code:
    <?php  

    require ('connect.php');

    if (isset( 
    $_POST['submitbutton'] )) {
      for(
    $i=0$i<count($_FILES['datei']['name']); $i++) {
        
    $Erlaubte_Dateiendungen = array( "jpg""gif""png" );  
        
    $Dateiname_bereinigen = array( 'ä' => 'ae''ö' => 'oe''ü' => 'ue''ß' => 'ss'' ' => '_' );  
        if (
    $_FILES['datei']['size'][$i] > 0)  
        {  
            
    $UploadDateiEndung array_popexplode"."strtolower$_FILES['datei']['name'][$i] ) ) );  
            if (!
    in_array$UploadDateiEndung$Erlaubte_Dateiendungen ))  
            {  
                die( 
    "Die angeh&auml;ngte Datei hat eine nicht erlaubte Dateiendung!" );  
            }  
            
    $DateiNameNeu strtrstrtolower$_FILES['datei']['name'][$i] ), $Dateiname_bereinigen );  
            
    $umask_alt umask);  
            
            
    move_uploaded_file$_FILES['datei']['tmp_name'][$i], "Bilder_fu/" .$DateiNameNeu );
        }

    echo 
    $_FILES['datei']['name'][0];
    echo 
    $_FILES['datei']['name'][1];
    echo 
    $_FILES['datei']['name'][2];

    $bild "Bilder_fu/" .$DateiNameNeu;

    $size getimagesize($bild);

    $width $size[0];
    $height $size[1];

    if (
    $width >= $height) {
    $newwidth 240
    $newheight $newwidth/$width*$height;
    } else {
    $newheight 240
    $newwidth $newheight/$height*$width;
    }

    //echo $newwidth;
    //echo $newheight;

    if ($size[2] == 1) {
    //GIF
    $altesBild ImageCreateFromGIF($bild);
    $neuesBild ImageCreate($newwidth$newheight);
    ImageCopyResized ($neuesBild$altesBild0000$newwidth$newheight$width$height);
    ImageGIF ($neuesBild);
    }

    if (
    $size[2] == 2) {
    //JPG
    $altesBild ImageCreateFromJPEG($bild);
    $neuesBild ImageCreate($newwidth$newheight);
    ImageCopyResized ($neuesBild$altesBild0000$newwidth$newheight$width$height);
    ImageJPEG ($neuesBild);
    }

    if (
    $size[2] == 1) {
    //PNG
    $altesBild ImageCreateFromPNG($bild);
    $neuesBild ImageCreate($newwidth$newheight);
    ImageCopyResized ($neuesBild$altesBild0000$newwidth$newheight$width$height);
    ImagePNG ($neuesBild);
    }

    $newpic $DateiNameNeu;
      
    $pic "$newpic";
      
    $to "Bilder_fu/$newpic";
      
    $to2 "Bilder_fu/";

      
    //Pfad ohne Bild im Pfad
      
    $fuellen "INSERT into Bild SET pic='".$pic."', path='".$to2."'";
      
      
    $ergebnis mysql_query($fuellen);

     if (
    $ergebnis) { echo ''; }
     else {echo 
    '';
             echo 
    mysql_error();
     }

    mysql_close ($connect);
      
      }
    }
     
    ?>

    <form name="DateiUpload" id="DateiUpload" method="post" action="mehrerebilder.php" enctype="multipart/form-data">  
        <input type="file" name="datei[]" id="datei"><br>
        <input type="file" name="datei[]" id="datei"><br>
        <input type="file" name="datei[]" id="datei"><br>
        <input type="submit" name="submitbutton" id="submitbutton" value="Datei hochladen">  
    </form>

  • #2
    hm.

    Hi,

    also ich würde zunächst einmal die INPUT-Namen unterschiedlich machen. also statt:
    PHP-Code:
    <input type="file" name="datei[]" id="datei"><br>
    <
    input type="file" name="datei[]" id="datei"><br>
    <
    input type="file" name="datei[]" id="datei"><br
    das:
    PHP-Code:
    <input type="file" name="datei1" id="datei"><br>
    <
    input type="file" name="datei2" id="datei"><br>
    <
    input type="file" name="datei3" id="datei"><br
    Wie soll die Routine sonst wissen, was zu was gehört.
    Gruss,
    Stefan

    Kommentar


    • #3
      lass dir $_FILES ausgeben ... dann weisst du was du machen musst, um das script für mehrere dateien "aufzubohren".
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        Daran, dass durch ein angehängtes [] automatisch ein Array von PHP generiert wird ...
        [FONT="Helvetica"]twitter.com/unset[/FONT]

        Shitstorm Podcast – Wöchentliches Auskotzen

        Kommentar


        • #5
          Original geschrieben von unset
          Daran, dass durch ein angehängtes [] automatisch ein Array von PHP generiert wird ...
          Ok. Sorry, wusste ich (noch) nicht.
          Aber ist der (X)HTML Code dann noch W3C / XHTML konform?
          Gruss,
          Stefan

          Kommentar


          • #6
            Warum sollte er es nicht sein?
            [FONT="Helvetica"]twitter.com/unset[/FONT]

            Shitstorm Podcast – Wöchentliches Auskotzen

            Kommentar


            • #7
              Original geschrieben von unset
              Warum sollte er es nicht sein?
              deshalb (HTML 4.01 W3C):
              ".... ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods ("."). ..."

              aber ist ja dann konform. Ich dachte, ich hätte mal gelesen, dass
              Bezeichnung EINDEUTIG sein müssen. Andernfalls hat man auch
              probs mit javascript ("GetElementByName" z.B.)
              Aber ist ja egal und offtopic.

              @TE: versuch mal "copy" statt "move_uploaded_file" (nur zum Test).
              kopiert er die 1te Datei noch in Dein Zielverzeichnis?
              Gruss,
              Stefan

              Kommentar


              • #8
                ja bei copy wird die erste datei gespeichert!

                Kommentar


                • #9
                  komisch.

                  hm.

                  hab mir mal die Zeit genommen und das Ding auf einem meiner
                  Server ausgeführt und bei mir kopiert er alle 3 Dateien fehlerlos!

                  Sind die Berechtigungen auf Deinem Server ok?

                  Achja, wenn Du Deine Bilder mit richtigem Aspekt verkleinern willst,
                  hilft Dir vielleicht diese Routine von mir:
                  PHP-Code:
                      function calc_image_size($img_file)
                      {
                      global 
                  $config;
                      
                          
                  $img getimagesize($img_file);
                          
                  $imgx $img[0];
                          
                  $imgy $img[1];

                   
                  // thumb_x ist die Zielgroesse 
                  // dito fuer y
                      
                      
                  $aspect $imgx / ($imgy+1);
                      
                      
                  // x and y lower
                      
                  if ( $imgx $config['thumb_x'] OR $imgy $config['thumb_y'])
                        {
                        
                  // too big?    
                            // prio to y dim
                            
                  $img_y $config['thumb_y'];
                            
                  $d_y 0;
                            
                  $img_x $config['thumb_y'] * $aspect
                            
                  $d_x = ( $config['thumb_x'] - $img_x ) /2;
                           
                        }
                      else 
                        {
                        
                  $img_x $imgx;
                        
                  $d_x = ( $config['thumb_x'] - $img_x ) /2;
                        
                  $img_y $imgy;
                        
                  $d_y = ( $config['thumb_y'] - $imgy ) /2;
                        }  
                    
                          
                  $img = array();
                          
                      
                  $img[0] = $img_x;
                      
                  $img[1] = $img_y;
                      return 
                  $img;
                      } 
                  gibt ein Array ($img) zurück mit den neuen x,y werten.
                  Diese kann man (unschoen) ins <img width=x....> Tag stecken oder
                  besser die Grafiken neu erzeugen, wie Du es eh vorhast.
                  $d_x und $d_y wären die Abstände für vspace und hspace für die
                  unschoene img Variante
                  Zuletzt geändert von Beyond; 14.04.2008, 19:00.
                  Gruss,
                  Stefan

                  Kommentar

                  Lädt...
                  X