Galerie mit Bildtext

  • Hallo sitzte gerade an einer Galeriescript und komme nicht so recht weiter.

    Ich habe bereits ein Script geschrieben und möchte dieses jetzt in der DB um die Spalte Bildtext erweitern.

    Nur komme ich nicht so recht auf die Verbindung zwischen userfile[] und der Textzuordnung:

    Hier mal ein Teil des html: (insgesamt 10 upload Felder bt1-bt10)

    HTML
    <tr><td>Hauptbild</td><td valign="top" align="left"><input type="file" id="datei1" name="hauptfile" size="35" /></td>
    <td valign="top" align="left">Bildtext:</td><td valign="top" align="left"><input name="bt[]" type="text" id="bt1" size="25"/></td></tr>

    und der Teil des PHP-Scripts:

    PHP
    $name[] = $_FILES['userfile']['name'][$i];
           $bt[] = $_POST['bt'];
            $id = $_POST['objektnr'];
    
    
            foreach ($name as $file => $file_id)
                                                        {
                                                        $sql = "INSERT INTO photo (photo_filename, objektnr) VALUES ('$upload_dir$file_id', '$id')";
                                                        }

    Vielleicht kann mir mal jemand etwas auf die Sprünge helfen, wie ich die Daten sauber hin kriege. Danke.

    Einmal editiert, zuletzt von Hauer (30. Dezember 2010 um 19:16)

  • Ja, mache ich !

    Das Script :

    Der html Bereich:

  • PHP
    for($i=0; $i < count($_FILES['userfile']); $i++)
    {
        $file = $_FILES['userfile'][$i];
        $text = $_POST['bt'][$i];
    
        echo "$text <br /><pre>";
        print_r($file);
        echo "<pre><br />\n";
    }
  • Jo, danke. Die Ausgabe ist nicht mein Problem, sondern das Schreiben in die Datenbank mit zwei Array´s.

  • Du hast doch die Dateiinfos und den Text in der Schleife ausgegeben bekommen. Wo hängst du jetzt? Statt der Ausgabe schreibst du die Daten einfach in deine Datenbank.

  • Hallo,

    ich bekomme eine Fehlermeldung:

    HTML
    Notice:  Undefined offset: 0 in C:\xampp\htdocs\backoffice\best_bilder.php on line 84
    PHP
    $file = $_FILES['userfile'][$i];
  • Kontrollieren!

    PHP
    echo "<pre>"; 
    print_r( $_FILES['userfile']); 
    echo "<pre>";
  • $name = $_FILES['userfile']['name'][$i];
    $type = $_FILES['userfile']['type'][$i];
    $tmp_name = $_FILES['userfile']['tmp_name'][$i];
    $error = $_FILES['userfile']['error'][$i];
    $size = $_FILES['userfile']['size'][$i];

  • Hm, irgendwie drehe ich mich im Kreis:

    var_dump($_FILES['userfile']['name']); gibt 2 Dateien aus. Doch erschreibt immer nur eine in die DB.

    Kann mann das auch mit einem 2-dimensionales Array lösen?

  • PHP
    $id = $_POST['objektnr'];
                                                $name = $_FILES['userfile']['name'][$i];
                                                $text = $_POST['bt'][$i];
    
                                                for($i=0; $i < count($_FILES['userfile']['name']); $i++)
                                                {
    
                                                $sql = "INSERT INTO photo (photo_filename, text, objektnr) VALUES ('$upload_dir$name', '$text', '$id')";
    
                                                }



    verrate mir mal welchen wert dein $i hat bei der deklaration und initialisierung deiner variablen $name, $text, $id
    und wie konkatinierst du $upload_dir und $name?

    dein sql-statement könnte fruchten, wenn du auch tatsächlich das ding ausführen würdest!

    mach dir zukünftig bitte die mühe mehr zu posten, wie jojo bereits erwähnt hatte....

  • Selbst das sehe ich nicht.

    PS: Es reicht nicht, ein Insert in einen String zu schreiben. :D

    Doch er schreibt 1 Datensatz in die DB !!!

    Zitat

    verrate mir mal welchen wert dein $i hat bei der deklaration und initialisierung deiner variablen $name, $text, $id
    und wie konkatinierst du $upload_dir und $name?

    dein sql-statement könnte fruchten, wenn du auch tatsächlich das ding ausführen würdest!

    mach dir zukünftig bitte die mühe mehr zu posten, wie jojo bereits erwähnt hatte....

    Viele Fragen, die ich nicht alle Verstehe, geb ich zu.

    Der $i hat doch den Wert 0, er counted die Anzahl der Files, in diesem Fall 2 und führt den sql solange aus, bis er die Anzahl erreicht hat, so interpretiere ich das zumindest.

    $upload-dir und $name sind 2 Variablen, die er dann wie folgt in die DB als Text einfügt (z.B. images/1234.jpg), so lese ich dann bei der Abfrage die Datei wieder aus, funktioniert auch alles prima.

    Das mit dem fruchten und ausführen habe ich nicht ganz verstanden, sorry.

    Ich habe doch auf Seite 1 alles was benötigt wird gepostet, hoffe ich zumindest.

    Wo ist denn jetzt der Denkfehler in dem Script?, den mysqli_query($verbindung, $sql); habe ich doch gesetzt.


  • Wo ist denn jetzt der Denkfehler in dem Script?, den mysqli_query($verbindung, $sql); habe ich doch gesetzt.



    Ja sagst du jetzt , steht aber nicht oben ;)

  • Doch er schreibt 1 Datensatz in die DB !!!


    Auch das können wir nicht sehen. Und wenn, dann ist es bestimmt der letzte Eintrag. Und warum das so ist, darfst du selber rausfinden, man muss einfach nur mal nachdenken. Die Ausgabe der Variablen mittels echo könnte dabei sehr hilfreich sein.

  • Das ist doch jetzt unsinn, siehe Post #4, sorry, wenn ich das nicht jedes mal mitposte, werde es aber in Zukunft machen, habe verstanden !!!! :)

  • Auch das können wir nicht sehen. Und wenn, dann ist es bestimmt der letzte Eintrag. Und warum das so ist, darfst du selber rausfinden, man muss einfach nur mal nachdenken. Die Ausgabe der Variablen mittels echo könnte dabei sehr hilfreich sein.

    Ja, vielen Dank.

  • Hier noch ein kleiner Denkanstoß.
    Beschreibe bitte mit eigenen Worten, was diese Codezeile tut:

    PHP
    $sql = "INSERT INTO photo (photo_filename, text, objektnr) VALUES ('$upload_dir$name', '$text', '$id')";