Martin Franz: Abbruch bei CSV-Verarbeitung

Beitrag lesen

Ich hab den Fehler gefunden und korrigiert, aber leider erschien jetzt wieder die weiße Seite ohne Fehlermeldung diesmal. Nachfolgend ist die Schleife in der ich die Datensätze durchlaufe:

//Datensätze durchlaufen
for($i=0; $i<count($lines); $i++)
{
 if($count > 1)
 {
  //Aktuelle Zeile einlesen
  $zeile = $lines[$i];
  $zeile = trim($zeile);
  $zeile = str_replace(""", "", $zeile);
  $zeile = str_replace("\r\n","",$zeile);

if(strlen($zeile) > 0)
  {
   //Einzelne Datenfelder auftrennen und speichern
   $zeileData = explode(";", $zeile);

if(count($zeileData) == 14)
   {
    $Titel     = $zeileData[0];
    $Name     = $zeileData[1];
    $Vorname   = $zeileData[2];
    $PLZ     = $zeileData[3];
    $Ort     = $zeileData[4];
    $Strasse    = $zeileData[5];
    $Hausnummer    = $zeileData[6];
    $Geburtsdatum   = $zeileData[7];
    $Geburtsdatum   = str_replace($Geburtsdatum, "*", "");
    $gebDateParts = explode(".", $Geburtsdatum);
       if(count($gebDateParts) == 3)
       {
        if(strlen($gebDateParts[2]) == 2)
        {
         $gebDateParts[2] = "19".$gebDateParts[2];
         $Geburtsdatum  = $gebDateParts[0].".".$gebDateParts[1].".".$gebDateParts[2];
        }//if
       }//if
       else
        $Geburtsdatum = "01.01.1970";
       $Geburtsdatum   = date("Y-m-d 00:00:00", strToTime($Geburtsdatum));
       $Beruf     = $zeileData[8];
       $Telefon    = $zeileData[9];
       $Handy     = $zeileData[10];
       $Email     = $zeileData[11];
       $Einlagehoehe   = $zeileData[12];
       $Fondsklassifizierung = $zeileData[13];

//Prüfen, ob nachfolgende Datensätze noch zum letzten Feld dieses Datensatzes gehören
       for($h=$i+1; $h<count($lines); $h++)
       {
        $nextLine = $lines[$h];
        $nextLine = trim($nextLine);
        $nextLine = str_replace(""", "", $nextLine);
        $nextLine = str_replace("\r\n","",$nextLine);

$semikolonExists = strpos("_".$nextLine, ";");

if(!$semikolonExists) //wenn ; nicht enthalten ist
        {
         //nextLine an letzte Zeile des aktuellen Datensatzes anfügen
         $Fondsklassifizierung .= " ".$nextLine;

//Array-Feld an dem sich in dem nextLine enthalten ist leeren
         $lines[$h] = "";
        }//if
        else
         break;
       }//for

//Connection erneuern
       $db  = new DatabaseHandling();
       $conn = $db->GetConnection();

//Daten maskieren
       $Titel     = mysql_real_escape_string($Titel, $conn);
       $Name     = mysql_real_escape_string($Name, $conn);
       $Vorname    = mysql_real_escape_string($Vorname, $conn);
       $PLZ     = mysql_real_escape_string($PLZ, $conn);
       $Ort     = mysql_real_escape_string($Ort, $conn);
       $Strasse    = mysql_real_escape_string($Strasse, $conn);
       $Hausnummer    = mysql_real_escape_string($Hausnummer, $conn);
       $Beruf     = mysql_real_escape_string($Beruf, $conn);
       $Telefon    = mysql_real_escape_string($Telefon, $conn);
       $Handy     = mysql_real_escape_string($Handy, $conn);
       $Email     = mysql_real_escape_string($Email, $conn);
       $Einlagehoehe   = mysql_real_escape_string($Einlagehoehe, $conn);
       $Fondsklassifizierung = mysql_real_escape_string($Fondsklassifizierung, $conn);

//Prüfen, ob Eintrag bereits vorhanden
       $sql = sprintf("SELECT COUNT(ID) FROM poolkontakte WHERE Titel='%s' AND Name='%s' AND Vorname='%s' AND PLZ='%s' AND Ort='%s' AND Strasse='%s' AND Hausnummer='%s' AND Telefon='%s'", $Titel, $Name, $Vorname, $PLZ, $Ort, $Strasse, $Hausnummer, $Telefon);
       $anzahl = $db->ExecuteSqlSingleReturn($sql);
       if($anzahl == 0)
       {

$sql = sprintf("INSERT INTO poolkontakte SET B2B_Kontakt=0, BereitstellerID=%s, Titel='%s', Name='%s', Vorname='%s', PLZ='%s', Ort='%s', Strasse='%s', Hausnummer='%s', Geburtsdatum='%s', Beruf='%s', Telefon='%s', Handy='%s', Email='%s', Einlagehoehe='%s', Fondsklassifizierung='%s'", $bereitstellerID, $Titel, $Name, $Vorname, $PLZ, $Ort, $Strasse, $Hausnummer, $Geburtsdatum, $Beruf, $Telefon, $Handy, $Email, $Einlagehoehe, $Fondsklassifizierung);

$sqltest = $sql;
        $db->ExecuteSqlNoReturn($sql);
        $neu++;

//Felder leeren
        $Titel     = "";
        $Name     = "";
        $Vorname    = "";
        $PLZ     = "";
        $Ort     = "";
        $Strasse    = "";
        $Hausnummer    = "";
        $Geburtsdatum   = "";
        $Beruf     = "";
        $Telefon    = "";
        $Handy     = "";
        $Email     = "";
        $Einlagehoehe   = "";
        $Fondsklassifizierung = "";

}//if
       else
        $doppelt++;

$anzahl = 0;
      }//if
      else
      {
       $feldAnzahlFalsch++;

//Fehlerhafte Datensätze in Datei speichern
       $csverr_filepath = sprintf("csv/%s", $csverr_filename);

//Dateiheader
       if(!$headerWrote)
       {
        $this->WriteLine($csverr_filepath, "Titel;Name;Vorname;PLZ;Ort;Straße;Hausnummer;Geburtsdatum;Beruf;Telefon Festnetz;Telefon Handy;E-Mail;Einlagehöhe;Fondsklassifizierung");
        $headerWrote = true;
       }//if

//Fehlerhaften Datensatz schreiben
       $this->WriteLine($csverr_filepath, $zeile);

}//else
     }//if
    }//if
    else
    {
     //Prüfen der Headerzeile
     $zeile  = $lines[$i];
     $zeile  = trim($zeile);
     $zeile  = str_replace(""", "", $zeile);
     $zeile  = str_replace("\r\n","",$zeile);

if($zeile != "Titel;Name;Vorname;PLZ;Ort;Straße;Hausnummer;Geburtsdatum;Beruf;Telefon Festnetz;Telefon Handy;E-Mail;Einlagehöhe;Fondsklassifizierung")
     {
      $errorMessage = "Die Feldnamen oder Feldreihenfolge in der Datei sind falsch. Prüfen Sie bitte die Datei.";
      break;
     }//if
    }//else

$count++;
   }//for