OpenAccess zu MySQL

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • OpenAccess zu MySQL

    Hallo,
    habe hier ein Script bekommen, bei welchem ich etwas Hilfe benötige. Also ich habe eine .FUT-Datei (Open Access) welche eingelesen und formatiert werden soll und in eine MySQL-Datenbank eingefügt werden soll. Das Tool soll schon komplett fertig sein, aber ich finde nicht die Zeit mich da hinein zu arbeiten. Vieleicht könnt Ihr mir helfen:


    Das Script rufe ich so auf:

    require...

    $daten = new OpenAccessIV("TEST.FUT");

    $ACCESS = new Haus($daten);

    und hier das Script:

    <?php
    class OpenAccessDaten { // Open Access IV Datenklasse

    var $HausNr = 1; // HausNr
    var $Monat = 0; // Monat
    var $Jahr = 0; // Jahr
    var $Tage = 30; // Anzahl der Tage im Monat
    var $Belegung; // Belegung des Hauss
    var $Tag = 1; // Tages Zeiger

    function OpenAccessDaten($Daten){ // initialisierung der Daten
    $this->HausNr = $Daten[0];
    $this->Jahr = $Daten[1];
    $this->Monat = $Daten[2];
    $this->Belegung = array_slice($Daten, 3);
    $this->Tage = date("t", mktime(0,0,0,$this->Monat+1,0,$this->Jahr));


    } // initialisierung der Daten
    } // Daten Klasse


    class OpenAccessIV { // Open Access IV Klasse

    var $Status = true; // Status der letzten Operation
    var $Daten = 0; // Daten[Zeile][Rohdatensplit] Array
    var $Datenklassen; // Datenklassen[Zeile]->Gruppiertedaten
    var $Zeiger = 0; // aktueller Datenzeiger

    function OpenAccessIV($file){ // initialisierung der Daten
    // GEHT !!!
    if($this->Daten = @file($file)){ // wenn daten erfolgreich gelesen
    $this->Status = true;
    $Zeiger=0;
    foreach($this->Daten as $temp){
    $this->Daten[$Zeiger]=split(";", $temp); // zwei dimensionales Array erstellen
    $this->Datenklassen[$Zeiger] = new OpenAccessDaten($this->Daten[$Zeiger]); // Datenklassen erstellen
    $Zeiger++;

    }

    } // wenn daten erfolgreich gelesen
    else { // wenn daten nicht erfolgreich gelesen
    $this->Status = false;

    } // wenn daten nicht erfolgreich gelesen
    }// initialisierung der daten

    function OpenAccess_SetDatenzeiger($Datensatz,$Monat){ // Datenzeiger setzen: Datensatz beginnt bei 0, Monat beginnt bei 1

    if($Monat>0 || $Datensatz>=0){ // wenn Monat grösser 0 oder Datensatz grösser gleich 0
    $this->Zeiger = ($Datensatz * 12) + ($Monat-1);
    $this->Status = true;
    } // wenn Monat grösser 0 oder Datensatz grösser gleich 0
    else{ // wenn Monat nicht grösser 0 oder Datensatz nicht grösser gleich 0
    $this->Status = false;
    } // wenn Monat nicht grösser 0 oder Datensatz nicht grösser gleich 0
    } // Datenzeiger setzen: Datensatz beginnt bei 1, Monat beginnt bei 1

    function OpenAccess_GetDatensatz(){ // Datensatz auslesen

    // GEHT !!!!
    $Zeiger = &$this->Zeiger;
    $Tage = &$this->Datenklassen[$Zeiger]->Tage;
    $Tag = &$this->Datenklassen[$Zeiger]->Tag;
    if($Tag == $Tage AND $Zeiger == count($this->Daten)) return(false); // wenn ende erreicht false zuzück geben
    $Status['Status'] = $this->Datenklassen[$Zeiger]->Belegung[$Tag-1];
    $Status['Tag'] = $Tag;
    $Status['Monat'] = $this->Datenklassen[$Zeiger]->Monat;
    $Status['Jahr'] = $this->Datenklassen[$Zeiger]->Jahr;
    $Status['HausNr'] = $this->Datenklassen[$Zeiger]->HausNr;
    if($Tag == $Tage){ // wenn Monatsende erreicht
    $Tag=1;
    $Zeiger++;
    }
    else $Tag++; // wenn Monatsende nicht erreicht
    return($Status); // Daten zurückgeben
    } // Datensatz auslesen

    }
    // neues
    class freieHaus { // Freie Haus Datenklasse
    var $HausNr = -1;
    var $von = -1;
    var $bis = -1;
    } // Freie Haus Datenklasse

    class Haus { // Hausbelegungs Klasse für Open Access IV Daten
    var $Anzahl; // Anzahl der Daten
    var $freieHaus; // Array mit den freien Hausn
    var $Status;
    var $Statusmeldung;

    function Haus($daten){ // Daten initialisieren

    //GEHT
    $lastHausNr = -1;
    $lastTag = 0;
    $lastMonat = 0;
    $lastJahr = 0;
    $Zeiger = -1;
    $lastStatus = -1;
    do { // alle Datensätze durchlaufen
    if($lastHausNr != $result['HausNr']){ // wenn HausNr ungleich letzter HausNr
    // Module 0

    if($result['Status'] == "0"){ // wenn frei
    if($Zeiger == -1){ // wenn noch kein Datensatz Angelegt wurde
    $Zeiger = 0;
    } // wenn noch kein Datensatz Angelegt wurde

    elseif($Zeiger > -1) { // wenn ein Datensatz Angelegt wurde
    if($this->freieHaus[$Zeiger]->HausNr == $lastHausNr) // wenn letzter Datensatz die gleiche HausNr hat wie die letzte Abfrage
    $this->freieHaus[$Zeiger]->bis = $lastJahr."-".$lastMonat."-".$lastTag;
    $Zeiger++;

    } // wenn ein Datensatz Angelegt wurde
    $this->freieHaus[$Zeiger] = new freieHaus();
    $this->freieHaus[$Zeiger]->HausNr = $result['HausNr'];
    $this->freieHaus[$Zeiger]->von = $result['Jahr']."-".$result['Monat']."-".$result['Tag'];
    } // wenn frei
    // Module 1

    elseif(strtolower($result['Status']) == "x") { // wenn belegt



    if($Zeiger > -1){ // wenn ein Datensatz angelegt wurde

    if($this->freieHaus[$Zeiger]->HausNr == $lastHausNr) // wenn letzter Datensatz die gleiche HausNr hat wie die letzte Abfrage
    $this->freieHaus[$Zeiger]->bis = $lastJahr."-".$lastMonat."-".$lastTag;


    }// wenn ein Datensatz angelegt wurde
    } // wenn belegt
    }// wenn HausNr ungleich letzter HausNr




    elseif($lastHausNr == $result['HausNr']){ // wenn HausNr gleich letzter HausNr
    // Module 2
    if($result['Status'] == "0" && strtolower($lastStatus) == "x"){ // wenn frei und vorher belegt
    if($Zeiger == -1){ // wenn noch kein Datensatz Angelegt wurde
    $Zeiger = 0;
    } // wenn noch kein Datensatz Angelegt wurde
    else { // wenn ein Datensatz Angelegt wurde
    $Zeiger++;
    } // wenn ein Datensatz Angelegt wurde
    $this->freieHaus[$Zeiger] = new freieHaus();
    $this->freieHaus[$Zeiger]->HausNr = $result['HausNr'];
    $this->freieHaus[$Zeiger]->von = $result['Jahr']."-".$result['Monat']."-".$result['Tag'];
    } // wenn frei und vorher belegt
    // Module 3
    elseif(strtolower($result['Status']) == "x" && $lastStatus == "0"){ // wenn belegt und vorher frei
    if($Zeiger > -1){ // wenn ein Datensatz Angelegt wurde
    if($this->freieHaus[$Zeiger]->HausNr == $lastHausNr) // wenn letzter Datensatz die gleiche HausNr hat wie die letzte Abfrage
    $this->freieHaus[$Zeiger]->bis = $lastJahr."-".$lastMonat."-".$lastTag;
    } // wenn ein Datensatz Angelegt wurde
    } // wenn belegt und vorher frei
    }// wenn HausNr gleich letzter HausNr
    $lastHausNr = $result['HausNr'];
    $lastTag = $result['Tag'];
    $lastMonat = $result['Monat'];
    $lastJahr = $result['Jahr'];
    $lastStatus = $result['Status'];

    } while($result = $daten->OpenAccess_GetDatensatz()); // alle Datensätze durchlaufen
    if($this->freieHaus[$Zeiger]->HausNr == $lastHausNr) // wenn letzter Datensatz die gleiche HausNr hat wie die letzte Abfrage
    $this->freieHaus[$Zeiger]->bis = $lastJahr."-".$lastMonat."-".$lastTag;
    $this->Anzahl = $Zeiger;


    }

    function Haus2Mysql($DB, $Tabellename, $Datenbank){ // Freie Hausdaten in MySQL-DB exportieren | benötigt MySQL Klasse



    $SQL_CREATE1 = "CREATE DATABASE IF NOT EXISTS `$DB`;";
    global $init_query;
    global $Tabelle;
    $Datenbank->query($SQL_CREATE1);
    $Datenbank->select_db($DB);

    $Datenbank->query($init_query['DROP ' . $Tabellename]);
    $Datenbank->query($init_query['CREATE ' . $Tabellename]);


    foreach($this->freieHaus as $Haus){ // alle Daten durchlaufen
    $SQL = "INSERT INTO $DB.{$Tabelle[$Tabellename]} (HausNr, von, bis) VALUES('".$Haus->HausNr."','".$Haus->von."','".$Haus->bis."');\n";
    $Datenbank->query($SQL);
    } // alle Daten durchlaufen
    mysql_close($Datenbank->DBID);
    $AnAbreise->Status = true;
    $AnAbreise->Statusmeldung = "Daten wurden erfolgreich importiert";
    } // Freie Hausdaten in MySQL-DB exportieren
    } // Hausbelegungs Klasse für Open Access IV Daten
    ?>


    UND HIER NOCH DIE TEST.FUT:

    099;2003;01;X;X;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;
    099;2003;02;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;
    099;2003;03;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;
    099;2003;04;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;
    099;2003;05;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;
    099;2003;06;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;
    099;2003;07;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;X;X;X;X;X;X;X;X;X;0;X;X;
    099;2003;08;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;
    099;2003;09;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;
    099;2003;10;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;
    099;2003;11;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;
    099;2003;12;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;
    101;2003;01;X;X;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;
    101;2003;02;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;
    101;2003;03;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;
    101;2003;04;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;
    101;2003;05;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;
    101;2003;06;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;
    101;2003;07;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;X;X;X;X;X;X;X;X;X;0;X;X;
    101;2003;08;X;X;X;X;0;X;X;X;X;X;X;X;X;X;X;X;X;X;X;X;0;0;0;0;0;0;0;0;0;0;0;
    101;2003;09;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;
    101;2003;10;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;
    101;2003;11;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;
    101;2003;12;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;
    ....
    Konzeption * Development * Marketing
    http://www.hirschfeld-software.info

  • #2
    ja is klar.
    Ich hab keine Zeit macht Ihr mal.
    ganz schön dreist.
    Achja wie wärs mit ein bisschen mehr code?
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      unterlasse gefälligst *CROSSPOSTING*s

      *CLOSE*
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar

      Lädt...
      X