Daten Array in Datenbank einlesen ?

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

  • Daten Array in Datenbank einlesen ?

    Hallo Leute,
    ich habe folgendes Problem.

    Ich möchte mit einem Formular bis zu 5 Bilder in einer Datenbank speicher was soweit auch funktioniert. Das Problem dabei ist nur das wenn im Formular nur 3 Dateien ausgesucht wurden er mir 2 leere Datensätze mit einfügt was natürlich nicht sein soll.

    Hier mal die Funktion die das Speichern ausführt:
    PHP-Code:
    function save_pics($gid){

      for(
    $i=0;$i<count($_FILES['pic']);$i++)
         {
            if(!empty(
    $_FILES['pic'][$i]))
                {
                     
    $datei[$i]  = fopen($_FILES['pic']['tmp_name'][$i],'rb');
                     
    $data[$i]   = mysql_real_escape_string(fread($datei[$i],$_FILES['pic']['size'][$i]));
                     
    $format[$i] = $_FILES['pic']['type'][$i];

                     
    $tablename "vs_pics";
                     
    $sql       "INSERT INTO $tablename (`pics`,`format`,`gid`) 
                                                      VALUES ('"
    .$data[$i]."','".$format[$i]."','".$gid."')";
                                
                 
    $query MYSQL_QUERY($sql)OR DIE(MYSQL_ERROR());
             }
            }
                 
          if(isset(
    $query) && $query == TRUE){
                      
    $ausgabe "Bilder wurde hochgeladen";
                     return 
    $ausgabe;
                     }

    Ich habe da verucht mit einer If Abfrage zu prüfen ob das jeweilige arrayfeld einen Inhalt hat oder nicht. Aber leider wird so garnichts gespeichert.

    Wäre nett wenn vieleicht jemand einen kleinen Denkanstoss da hätte.
    Eine idee wäre noch das ich nach dem Einfügen alles Datensätze die leer sind lösche aber ich denke das geht sicher eleganter.

    Schonmal vielen Danke
    mfg
    mo

  • #2
    Hallo,

    lies dir mal diese Seite durch, da findest du auch eine Fehlerkonstante für nicht hochgeladene Dateien.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Besten Dank, hab gefunden was ich brauchte .
      Zuletzt geändert von mo78; 25.01.2011, 09:24.

      Kommentar


      • #4
        Oder auch nicht ist ja irgendwie zum verrückt werden hab das gestern geändert und es hat auch funktioniert. Und heute will er irgendwie nicht. Kann mir aber nicht vorstellen das PHP da launisch ist)

        Naja ich werd da mal versuchen zu finden wo der Schuh drückt. Aber wenn jemand nochhmal nen kleinen Zeiger in die richtige Richtung hat wäre ich sehr Dankbar.

        Hier mal die Änderung und der Fehler:
        PHP-Code:
        function save_pics($gid){

          for(
        $i=0;$i<count($_FILES['pic']);$i++)
             {
                if(
        $_FILES['pic']['error'][$i]==0//<----Dies hab ich geändert
                    
        {
                         
        $datei[$i]  = fopen($_FILES['pic']['tmp_name'][$i],'rb');
                         
        $data[$i]   = mysql_real_escape_string(fread($datei[$i],$_FILES['pic']['size'][$i]));
                         
        $format[$i] = $_FILES['pic']['type'][$i];

                         
        $tablename "pics";
                         
        $sql       "INSERT INTO $tablename (`pics`,`format`,`gid`) 
                                                          VALUES ('"
        .$data[$i]."','".$format[$i]."','".$gid."')";
                                    
                     
        $query MYSQL_QUERY($sql)OR DIE(MYSQL_ERROR());
                 }
                }
                     
              if(isset(
        $query) && $query == TRUE){
                          
        $ausgabe "Bilder wurde hochgeladen";
                         return 
        $ausgabe;
                         }

        Und das ist die Fehlermeldung :
        Notice: Undefined offset: 0 in /var/www/xxxxxxx/xxxx/xxxxxxx/pics.inc.php on line 8
        Die Fehlermeldung setzt sich bis offset: 4 fort.
        Line 8 ist die IF amweisung womit ich das Errorfeld abfrage.
        Aber wenn ich da richtig liege sagt mir die Fehler Meldung das die Arrayfelder nicht existieren. Aber das muss es doch da 'pic' ein FILE ARRAY mit 5 Feldern von 0-4 ist???. Oder ich bin da gerade voll auf dem Holzweg?

        Zu erwähnen wäre noch das nacher den Fehlermeldung auch 5 Datensätze eingefügt werden ob leer oder gefüllt .

        Ich werd mal weiter der Sache auf den Grund gehen und schonmal Danke für weitere Hilfe
        mfg mo

        Kommentar


        • #5
          Du zählst die falsche Ebene. count($_FILES['pic']) liefert dir zurück, wieviele Eigenschaften du von der Uploaddateigruppe pic abfragen kannst, also name, type, size, tmp_name und error (immer 5). Wenn du dagegen $_FILES['pic']['name'] zählst (also eine Ebene tiefer), bekommst du die korrekte Anzahl.
          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
          Super, danke!
          [/COLOR]

          Kommentar


          • #6
            Dein Script ist anfällig für SQL-Injections.

            PHP: SQL Injection - Manual

            Kommentar


            • #7
              Erstmal danke Amica funzt wie es soll

              und mit der Anfälligkeit werd ich mich mal schlau machen, und gern mal
              änderungen Posten bin mit dem Thema noch nicht so vertraut.

              mfg
              mo

              Kommentar

              Lädt...
              X