Ankündigung

Einklappen
Keine Ankündigung bisher.

Txt-Datei einlesen und Tabelle daraus bilden

Einklappen

Neue Werbung 2019

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

  • Txt-Datei einlesen und Tabelle daraus bilden

    Hallo,
    habe ein Problem beim einlesen einer Textdatei in eine Tabelle.
    Inhalt der Textdatei:
    Code:
    ++++++++++++
    Abteilung1
    ++++++++++++
    name1
    gebdat1
    position1
    dabeiseit1
    name2
    gebdat3
    position2
    dabeiseit2
    .
    .
    .
    ++++++++++++
    Abteilung2
    ++++++++++++
    name33
    gebdat33
    position33
    dabeiseit33
    .
    .
    .
    ###ENDE###


    Aussehen soll sie wie folgt
    HTML-Code:
    <h4>Abteilung</h4>
    <table>
    <tr>
    <td>name</td>
    <td>gebdat</td>
    <td>position</td>
    <td>dabeiseit</td>
    <tr> //...nächster Mitarbeiter
    </tr></table>
    <h4>Abteilung</h4> //nächste Abteilung
    .
    .
    .
    habe leider überhaupt keinen Ansatz dafür, bis auf das einlesen der Datei.


  • #2
    du gehst die die textdatei einfach zeilenweise durch, und abhängig von dem "steuerzeichen" (punkt, leerzeichen, plus oder buchstabe) setzt du einen einen h4-, table-, tr- oder td-tag davor (und natürlich geschlossen dahinter)...
    Selbst im Rollstuhl kann man die Menschenrechte mit Füßen treten.
    Die Politik darf kein hirnfreier Raum sein.

    Kommentar


    • #3
      Hi.

      So schwierig ist das gar nicht. Wenn Du das Textfile z.B. zeilenweise in einer Schleife aufrufst, prüfst du z.B. auf das vorkommen von "++++++++++++". Dann weißt du, wenn eine Überschrift kommt. Diese setzt du beim auslesen in "<h4>" tags. Tabellen Start und Ende wird vor und nach einer 2. Schleife z.B. mit echo ausgegeben. In der 2. Schleife lässt du dir dann einfach die Zellen ausgeben echo "<td>".$meinezeile."</td>" und prüfst wieder auf ein Strinkgvorkommen, anhand dessen du erkennst, wenn du in die nächste Zeile switchen musste (mit echo "</tr><tr>"

      Wolf29
      while (!asleep()) sheep++;

      Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

      Kommentar


      • #4
        Vielen Dank für eure Hinweise,
        nur ist ja das woran ich scheiter, woran ich erkenne, wann ein Zeile für den Mitarbeiter zu Ende ist und wann die ganze Abteilung zu Ende ist.
        Hab halt leider keinen richtigen Ansatz, zB wie man prüft ob ein "++++++++++" kommt. Wäre nett wenn ihr mir da mal Code-Ansätze geben könnten

        Kommentar


        • #5
          PHP: fgets - Manual

          Ein wenig Eigenleistung sollte man aber doch schon erwarten... Warum sollten wir nur anhand einer theoretischen Problemstellung dir komplett neuen Code schreiben?
          Selbst im Rollstuhl kann man die Menschenrechte mit Füßen treten.
          Die Politik darf kein hirnfreier Raum sein.

          Kommentar


          • #6
            ...das denke ich auch. Hier findest du zu mindestens nochmal ein Beispiel, wie man Strings durchsuchen kann:

            PHP: strpos - Manual
            PHP: strstr - Manual
            usw.


            Wolf29
            while (!asleep()) sheep++;

            Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

            Kommentar


            • #7
              Achso danke, das mit dem strpos und strstr hab ich gesucht, hab bisher in einer foreach-schleife alle 4 mitarbeiterinfos, und nach diesen 4infos versuche ich mittels i+4 eine neue Zeile zu erreichen, das hatte bisher aber noch nicht funktioniert, aber ich versuchs jetzt mal mit den beiden Strings.

              Kommentar


              • #8
                Und wenn bei oben beschriebenem Beispiel irgendwann aus irgend einem Grund mal nur 3, oder sogar 5 Zeilen pro Mitarbeiter sind, fliegt dir das alles um die Ohren....
                Wenn Du in irgendeiner Form einfluss auf die erstellung der Textdatei hast, würde ich mir als erstes überlegen die einzelnen Datensätze eindeutig zu kennzeichnen.

                Kommentar


                • #9
                  Hab leider keinerlei Einfluss auf die Erstellung der Datei. Die wurde mir so vorgegeben und soll so aus Tabelle ausgegeben werden. Es sind aber immer die 4 Mitarbeiter Infos vorhanden, wenn keine Information gegeben ist, wurde sie mit "nA" gefüllt.

                  Kommentar


                  • #10
                    Aber sich darauf zu verlassen... Naja, programmier es doch gleich vernünftig. Sowas ist doch eine Frage der Ehre
                    Selbst im Rollstuhl kann man die Menschenrechte mit Füßen treten.
                    Die Politik darf kein hirnfreier Raum sein.

                    Kommentar


                    • #11
                      Ja aber ich frage mich ja wie ich umgehen kann das bei einem Mitarbeiter auch mal eine Info weniger vorhanden ist. Im Endeffekt besteht ja jeder Mitarbeiter aus 4 Arrays bzw Zeilen im Txt. Wie soll ich sonst herausfinden, wann ein Mitarbeiter beginnt? Hab sowas ähnliches schon mit einer xml-Datei gemacht, was natürlich durch definierung von Elementen und Attributen einfacher auszulesen war.

                      Kommentar


                      • #12
                        Ähm, das ist so gut wie unmöglich behaupte ich mal, wenn du keine definierten Abgrenzungen durch z.B. irgendwelche Zeichen hast!

                        Wolf29
                        while (!asleep()) sheep++;

                        Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

                        Kommentar


                        • #13
                          Die einzige Abgrenzung ist das "+++++++++" am Ende einer Abteilung. Es muss aber funktionieren, da ein ehemaliger Mitarbeiter das ja auch hinbekommen hat. Das Script dazu existiert allerdings nicht mehr.

                          Kommentar


                          • #14
                            ...dann hat er das vermutlich so gemacht, wie du es vorhin beschrieben hat, indem er mit einem Zähler gearbeitet hat, der jedes 5. eine neue Zeile erstellt. Aber wirklich zuverlässig ist so was nicht! Evtl. PRüft er, ob eine Jahreszahl vorkommt, weil dass das Ende der Beschreibung für einen Mitarbeiter darstellt und es dann wieder für nen neuen Mitarbeiter los geht! Oder gibt es irgendwie noch ne Info, die wir wissen müssten?

                            Wolf29
                            while (!asleep()) sheep++;

                            Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

                            Kommentar


                            • #15
                              Es funktioniert auch, wenn als nicht die Anzahl der Zellen Vorraussetzung nimmst, sondern nur die Tatsache, dass immer gleich viele Zellen vorhanden sind.

                              name1
                              gebdat1
                              position1
                              dabeiseit1
                              name2
                              gebdat3
                              position2
                              dabeiseit2
                              Du schreibst beim ersten Durchlauf, den Spaltennamen (ohne Zahl) in ein Array (mittel Regex) dann prüfst du bei jedem weiteren, ob dieser schon im Array enthalten ist - und bei der ersten Wiederholung weißt du, wieviele Zellen es gibt...

                              Dann einfach mit dieser Konstanten im Hinterkopf die Datei zeilenweise auslesen und anhand der bekannten Steuerzeichen und der Konstanten die Tabelle aufbauen...
                              Selbst im Rollstuhl kann man die Menschenrechte mit Füßen treten.
                              Die Politik darf kein hirnfreier Raum sein.

                              Kommentar

                              Lädt...
                              X