Problem bei Bilderupload

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

  • Problem bei Bilderupload

    Hi Leute und schönen guten Abend!

    Ich verzweifel noch an meinem Script mit dem ich u.a. Bilder uploaden möchte...

    Derzeitiger Stand:
    Ich habe einen Shop kreiert ("zusammengebastelt"). Der läuft soweit auch einwandfrei.

    Nun habe ich eine Adminoberfläche, in welcher ich u.a. neue Produkte mit einem Bild hinzufügen

    kann. Funktioniert auch einwandfrei und wird fehlerfei angezeigt.

    Mein nächster Schritt war es nun, dass Script so zu erweitern, dass ich 3 Bilder uploaden kann -

    und da hängt's

    Das Script, das die Artikeldaten speichert, sieht so aus:
    PHP-Code:
    <?  // Includes

    error_reporting(E_ALL ^ E_NOTICE);
    ini_set('display_errors', true);
    mysql_error();

    include ("../config.php");


    // Variablen Deklaration

    if (!isset($_POST['artikelnummer']))$_POST['artikelnummer'] = "";
    if (!isset($_POST['name']))            $_POST['name'] = "";
    if (!isset($_POST['beschreibung']))    $_POST['beschreibung'] = "";
    if (!isset($_POST['preis']))        $_POST['preis'] = "";
    if (!isset($_POST['variante1']))    $_POST['variante1'] = "";
    if (!isset($_POST['variante2']))    $_POST['variante2'] = "";
    if (!isset($_POST['status']))        $_POST['status'] = "";
    if (!isset($_POST['nkategorie']))    $_POST['nkategorie'] = "";

    $post_vars['artikelnummer']            = htmlentities($_POST['artikelnummer'],ENT_QUOTES,$CHARSET);
    $post_vars['name']                    = htmlentities($_POST['name'],ENT_QUOTES,$CHARSET);
    $post_vars['beschreibung']            = htmlentities($_POST['beschreibung'],ENT_QUOTES,$CHARSET);
    $post_vars['preis']                    = htmlentities($_POST['preis'],ENT_QUOTES,$CHARSET);
    $post_vars['variante1']                = htmlentities($_POST['variante1'],ENT_QUOTES,$CHARSET);
    $post_vars['variante2']                = htmlentities($_POST['variante2'],ENT_QUOTES,$CHARSET);
    $post_vars['status']                = htmlentities($_POST['status'],ENT_QUOTES,$CHARSET);
    $post_vars['nkategorie']            = htmlentities($_POST['nkategorie'],ENT_QUOTES,$CHARSET);


    // Programm-Code

    if (!$post_vars['artikelnummer']): $action = "error";
    elseif (!$post_vars['name']): $action = "error";
    elseif (!$post_vars['beschreibung']): $action = "error";
    elseif (!$post_vars['preis']): $action = "error";
    else: $action = "erfolg";
    endif;

    if ($action == "erfolg") 
        {
        
            if (is_uploaded_file($_FILES['bild']['tmp_name'])) $bild1 = "ok";
            if (is_uploaded_file($_FILES['bild2']['tmp_name'])) $bild22 = "ok";
            if (is_uploaded_file($_FILES['bild3']['tmp_name'])) $bild33 = "ok";

            if (!isset($bild1)) $bild1 = "";
            if (!isset($bild22)) $bild22 = "";
            if (!isset($bild33)) $bild33 = "";
        
            $conn_id = mysql_connect($HOST,$ID,$PW);
            mysql_select_db($DB,$conn_id);
            
            mysql_query("insert into ".$PREFIX."_Artikel (kategorie,artikelnummer,name,beschreibung,preis,bild,bild2,
    bild3,variante1,variante2,status) VALUES ('{$post_vars['nkategorie']}','{$post_vars['artikelnummer']}',
    '{$post_vars['name']}','{$post_vars['beschreibung']}','{$post_vars['preis']}','$bild1','$bild22','$bild33',
    '{$post_vars['variante1']}','{$post_vars['variante2']}','{$post_vars['status']}')"); 
        {
            if ($bild1 == "ok") 
                {
        
                    $result = mysql_query("select id from ".$PREFIX."_Artikel where name = '{$post_vars['name']}'");
                    while ($row = mysql_fetch_object($result))
                        {
                        
                        $id     = $row->id;
                        
                        }
                    $fotoname = "$id.jpg";

                        {

                            move_uploaded_file(($_FILES['bild']['tmp_name']),"../images/artikel/$fotoname");
                            chmod ("../images/artikel/$fotoname", 0777);
                        }
                
                    mysql_close($conn_id);
                
                }
            
        header("Location: pro_index.php?action=$action");
        


            if ($bild22 == "ok") 
                {
        
                    $result = mysql_query("select id from ".$PREFIX."_Artikel where name = '{$post_vars['name']}'"); 
                    while ($row = mysql_fetch_object($result))
                        {
                        
                        $id     = $row->id;
                        
                        }
                    $fotoname2 = "$id.2.jpg";

                        {

                            move_uploaded_file(($_FILES['bild2']['tmp_name']),"../images/artikel/$fotoname2");
                            chmod ("../images/artikel/$fotoname2", 0777);
                        }
                
                    mysql_close($conn_id);
                
                }
            
        header("Location: pro_index.php?action=$action");
        
        
        
        
            if ($bild33 == "ok") 
                {
        
                    $result = mysql_query("select id from ".$PREFIX."_Artikel where name = '{$post_vars['name']}'"); 
                    while ($row = mysql_fetch_object($result))
                        {
                        
                        $id     = $row->id;
                        
                        }
                    $fotoname3 = "$id.3.jpg";

                        {

                            move_uploaded_file(($_FILES['bild3']['tmp_name']),"../images/artikel/$fotoname3");
                            chmod ("../images/artikel/$fotoname3", 0777);
                        }
                
                    mysql_close($conn_id);
                
                }
            
        header("Location: pro_index.php?action=$action");
        }
        
        }

    else header("Location: pro_neu.php?artikelnummer={$post_vars['artikelnummer']}&name={$post_vars['name']}
    &beschreibung={$post_vars['beschreibung']}&preis={$post_vars['preis']}&variante1={$post_vars['variante1']}
    &variante2={$post_vars['variante2']}&action=$action");

    ?>
    Es werden auch alle Daten gespeichert. Auch das erste Bild mit der "$id.jpg" als Name und das zweite Bild mit "$id.2.jpg" - Soweit perfekt.

    Aber das DRITTE Bild, das eigentlich "$id.3.jpg" heißen sollte, wird gar nicht auf den Server geladen...
    WARUM

    Die Daten an die DB werden auch richtig übergeben. Wenn ich zum Beispiel das erste Bild ("bild") uploade , steht auch nur bei "bild" in der DB "OK".
    Wenn ich alle 3 Bilder uploade, steht bei allen 3 "OK" in der DB, aber im Ordner liegen nur die ersten beiden Dateien.

    Wenn ich nur "bild2" und "bild3" uploade, zeigt er mir im Ordner wieder die beiden Dateien mit den richtigen Endungen "$id.2.jpg" und "$id.3.jpg" an.

    Also läuft er wohl auch alle arrays durch und verarbeitet sie. Allerdings lässt er immer einen "aus". Kann sich das jemand erklären?

    Hab schon alles mögliche ausprobiert und mich durchgegoogelt - find aber nix dazu. Ich hoffe hier kann mir jemand weiterhelfen...

    Sorry für den langen Text
    MICHA
    Zuletzt geändert von Micha2409; 02.04.2009, 01:21.

  • #2
    Re: Problem bei Bilderupload

    Regeln lesen, Code umbrechen!
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      die Frage bleibt...

      Danke wahsaga!

      Habe die Zeilenumbrüche eingebaut und auch schon sämtliche "error_reports" eingefügt - allerdings keine Fehlermeldung erhalten...

      Was ich extrem verwunderlich finde, dass er einfach immer 2 von 3 Datein höchladt und eine "auslässt". Irgendwie steh ich total auf dem Schlauch...

      MICHA

      Kommentar


      • #4
        Re: die Frage bleibt...

        Na ja, wenn du zwischendurch immer per Location-Header woandershin umleitest, musst du dich nicht wundern, wenn das Script nicht bis zum Ende ausgeführt wird.
        (Ausserdem erfordert ein Location-Header zwingend die Angabe eines vollständigen, absoluten URLs - per Definition.)

        Btw.: Variablennamen durchzunummerieren, ist ungünstig - vernünftig wäre es, für sowas ein Array zu nehmen. Das macht dann auch die Verarbeitung einfacher - in einer Schleife.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Danke wahsaga!

          Das es mit dem Header zusammenhängt, dachte ich mir schon irgendwie... Aber wie könnte eine solche Schleife aussehen?
          Ich hätte halt gern, dass die Bilder beim Upload als "erste Zahl" die $id bekommen. Also das ERSTE Bild "nur die $id und jedes weitere ebenfalls die $id und aber noch ein "klares Erkennungsmerkmal" hinzugefügt wird - wie z.B:
          Bild 1: $id.jpg
          Bild 2: $id.2.jpg
          Bild 3: $id.3.jpg
          ODER:
          Bild 1: $id.jpg
          Bild 2: $id.a.jpg
          Bild 3: $id.b.jpg

          Da ich nur sehr, sehr selten mit PHP zu tun habe, wäre eine "verständliche" Erklärung sehr willkommen, oder ein gut erklärtes Tutorial, mit dem ich in kurzer Zeit an das gewünschte Ergebnis komme.
          Vielleicht kennst du / kennt ihr ja etwas, was mir weiterhilft, oder habt schon einen ähnliche Code parat, den ich anpassen kann...

          Vielen vielen Dank an alle - ist echt ein spitzen Forum!
          MICHA

          ----------------------------------------------------------
          "Wer lernt zu lernen, bekommt Mündigkeit als Belohnung!" (Ich - 2009)

          Kommentar

          Lädt...
          X