OpenAccess to MySQL

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

  • OpenAccess to 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
    aber ich finde nicht die Zeit mich da hinein zu arbeiten
    und warum sollten wir für dich arbeiten?

    und unterlasse auch gefälligst *CROSSPOSTING*s
    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


    • #3
      Super crossposting auch noch.
      siehe andere Baustelle
      Beantworte nie Threads mit mehr als 15 followups...
      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

      Kommentar


      • #4
        aber ich finde nicht die Zeit mich da hinein zu arbeiten
        Sollen wir jetzt schon für dich programmieren?

        und gibts keinen längeren code? von Tags noch nie was gehört?

        *streik*
        Der Programmierer ist der Vormund des Anwenders.

        Kommentar


        • #5
          ebenfalls *streik*

          ein script was etwas tun soll. schön und nu ...
          erstmal, was tut es nicht ? und wie können wir dabei helfen? oder sollen wir dir vielleicht ne andere lösung schreiben??? ne ne, etwas entgegenkommen kann man schon erwarten
          ... und besucht mal den ebay(TM)-browser überhaupt: Lauge
          und damit das Fragen nen Ende hat: Der Progger davon sitzt mir gegenüber !

          Kommentar


          • #6
            Ich wollte nicht, dass Ihr irgendetwas für mich frogrammiert, sondern wollte ich einfach nur einen Tip, was ich falsch gemacht habe bzw. was ich in meinem Scriptaufruf vergessen habe, dass es nicht in die DB eingetragen wird.
            Konzeption * Development * Marketing
            http://www.hirschfeld-software.info

            Kommentar


            • #7
              ohne weiter zu prüfen:

              finde nirgends den aufruf von OpenAccess_SetDatenzeiger
              denn in OpenAccess_GetDatensatz zählst du nur eine lokale variable namens $Zeiger hoch?!?
              ... und besucht mal den ebay(TM)-browser überhaupt: Lauge
              und damit das Fragen nen Ende hat: Der Progger davon sitzt mir gegenüber !

              Kommentar


              • #8
                Ich würde Dir gern ein Angebot machen:
                Ich sende Dir die Daten und Du setzt die Funktion dahin, wo sie hin muss und ich bezahle Dir pauschel 30 EUR. Wäre das OK? Nicht das wieder jemand sagt, dass ich jemand versuche auszunutzen...

                Gruß und Danke
                Konzeption * Development * Marketing
                http://www.hirschfeld-software.info

                Kommentar

                Lädt...
                X