Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Arrayverarbeitung gibt "Undefined offset" aus

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Arrayverarbeitung gibt "Undefined offset" aus

    Hallo Gemeinde,

    langsam verzweifle ich nun. Die Schleife zum Abfragen der Arrays scheint zu funktionieren, zumindest werden die Daten und die dazugehörigen Texte auf den Server geladen und in die Datenbank eingetragen - trotzdem gibt es nach dem Absenden des Formulars eine Fehlermeldung:

    Notice: Undefined offset: 4 in /homepages/.........

    Es wird also ein nicht-existierender Arrayinhalt abgefragt. Ich komme aber im Code nun nicht mehr weiter und finde den Fehler nicht!

    Ich habe ein Formular:

    Code:
    Bild des Regisseurs:
    <input name="fupload[0][bild]" type="file"/>
    Copyright:
    <input  name="fupload[0][copyright]" type="pattern" />
    Szenenbild 01:
    <input name="fupload[1][bild]" type="file"/>
    Copyright:
    <input name="fupload[1][copyright]"type="pattern"  />
    Szenenbild 02:
    <input name="fupload[2][bild]" type="file"/>
    Copyright:
    <input name="fupload[2][copyright]" type="pattern"/>
    Szenenbild 03:
    <input name="fupload[3][bild]" type="file" />
    Copyright:
    <input name="fupload[3][copyright]" type="pattern" />
    Ich ordne also jedem Bild ein Copyright zu.

    Nun verarbeite ich die Daten wie folgt:

    PHP-Code:
    for ($i=0;$i<=sizeof($_FILES['fupload']['name']); $i++) { 
       
    $copyright=$_POST['fupload'][$i++]['copyright'];
       if (!empty(
    $_FILES['fupload']['name'][$i]['bild'])) { 
        
            if (
    is_uploaded_file($_FILES['fupload']['tmp_name'][$i]['bild'])) { 
        if ((
    $_FILES['fupload']['type'][$i]['bild']=='image/jpeg') OR ($_FILES['fupload']['type'][$i]['bild']=='image/pjpeg') OR       ($_FILES['fupload']['type'][$i]['bild']=='image/gif')) {    
            
            
    $Link_type=$_FILES['fupload']['type'][$i]['bild'];
            switch (
    $Link_type) { //5
                
    case "image/jpeg" :
                    
    $Link=$Title."-".date('Y-m-d-H:i:s')."-".$i.".jpg";break;
                case 
    "image/gif" :
                    
    $Link=$Title."-".date('Y-m-d-H:i:s')."-".$i.".gif";break;
                default:
                    
    $Link=$Title."-".date('Y-m-d-H:i:s')."-".$i.".jpg";break;
                
            } 
            
            
    $Ziel=$path_folder."/".$Link;
            
                
    copy($_FILES['fupload']['tmp_name'][$i]['bild'], $Ziel) or die ("Konnte nicht kopieren");

            
    $insertSQL sprintf("INSERT INTO Filmanmeldungen_Bilder (Bild, ID, Copyright, Jahr, Ordner) VALUES (%s, %s, %s, %s, %s)",
                                   
    GetSQLValueString($Link"text"),
                                   
    GetSQLValueString($ID"text"),
                                   
    GetSQLValueString($copyright"text"),
                                   
    GetSQLValueString($Jahr"text"),
                                   
    GetSQLValueString($Title"text"));                                       
    mysqli_select_db($connect$database_connect);
    $Result1 mysqli_query($connect$insertSQL) or die(mysqli_connect_error());    
    header(sprintf("Location: %s"$BackGoTo)); 
    Wenn ich mir
    PHP-Code:
    sizeof($_FILES['fupload']['name']); 
    ausgeben lasse, wird auch richtig "4" ausgegeben.
    Wo liegt der Fehler, dass es trotzdem ein "Undefined offset" gibt?

  • #2
    var_dump() / print_r() könnte dir weiterhelfen

    PHP-Code:
    var_dump($deinArray); 
    - Laravel

    Kommentar


    • #3
      Das habe ich gemacht, die Befüllung der beiden Arrays ist in Ordnung.
      Ich bin mir nicht sicher, ob
      PHP-Code:
       $copyright=$_POST['fupload'][$i++]['copyright']; 
      dort an der richtigen Stelle steht oder der Code So überhaupt Sinn macht...
      (Zeile in Zeile 2)

      Kommentar


      • #4
        Ich hab's:

        Die Zeile (in Zeile 2)
        PHP-Code:
        $copyright=$_POST['fupload'][$i++]['copyright']; 
        muss abgeändert werden in
        PHP-Code:
        $copyright=($_POST['fupload'][$i]['copyright']); 
        weil ja der Zahlenwert des Copyright-Arrays immer das gleiche sein soll/muss, wie das des Bildes!
        In der ersten Variante ($i++) wurde es immer zusätzlich noch um +1 erhöht. Daher auch das Offset.
        Richtig aber ist: $i+

        Kommentar

        Lädt...
        X