# Tabelle Datenbank mit txt Datein erstellen und auslesen



## fragezeichen (19. Oktober 2010)

Hallo,
folgendes habe ich vor…
Es sollen aus einer Tabelle/Datenbank Daten/Dateien .txt ausgelesen werden Also:
Zeile 1 Feld A, B, C  (A = Datei „A1.txt“, B= Datei „B1.txt“ …)
Zeile 2 Feld A, B, C  (A = Datei „A2.txt“, B= Datei „B2.txt“ …)
Beim auslesen soll eine Abfrage sein:
Wenn Feld in Zeile 1 „A= 1“ (Also der Text in der Datei „Datei A1.txt“=1 ist) dann soll die Datei B1 und C1 erscheinen. Wenn ungleich 1 dann zum Datensatz in Zeile 2 gehen und da ebenso prüfen.
Wenn A2 auch ungleich 1 dann soll erscheinen „kein Datensatz vorhanden“
Das ganze soll in eine Homepage integriert sein.
Daten in eine .txt Datei schreiben mit PHP bekomme ich hin. Das Anzeigen der Dateien auch.
Aber mit der Tabelle /Datenbank tue ich mich schwer! 
Geht das mit PHP oder Java? UND WIE********
Thank`s  für eure Tipps
;-)


----------



## tombe (19. Oktober 2010)

Ich verstehe nur Bahnhof!

Was steht jetzt in der Datenbank. Stehen da die Namen der Textdatei(en) oder stehen da andere Werte?

Erkläre mal bitte etwas genauer was du machen willst.


----------



## Yaslaw (19. Oktober 2010)

Du willst also mit PHP eine vereinfachte Datenbankengine schreiben für eine Tabelle in der jedes Feld als eigene Datei abgespeichert ist.
Nun, ich empfehle dir auf eine normale DB zu gehen.

Nichts desto trotz, hier ein Ansatz für genau dein Problem in PHP. (Der ganze Thread währe in PHP besser aufgehoben, da es nix mit relationalen Datenbanken zu tun hat)

```
<?php 
    //Die Tabelle als doppelten Array erstellen
    for($i=1; $i <=2; $i++){
        foreach(range('A', 'C') as $col){
            //Dateiinhalt einlesen (in meinem Beispiel sind sie im Unterordner t
            $table[$i][$col] = file_get_contents("t/{$col}{$i}.txt");
        }        
    }    
    
    //Die Spalte a als Bedunungs-Array erstellen
    foreach($table as $rownum => $row){
        $conditions[$rownum] = $row['A'];
    }
    
    //Alle Zeilen durchgehen bis ein Eintrag in der Spalte 'a' 1 ist
    foreach($conditions as $rownum => $a){
        if($a==1){
            //gefundene Zeile ausgeben
            echo "{$table[$rownum]['B']} | {$table[$rownum]['C']}<br />";
            //Flag das etwas gefunden wurde setzen
            $found = true;
            //keine weiteren Zeilen mehr ausgeben
            break;
        }
    }
    
    //Prüfen ob etwas gefunden wurde und ggf. eine entsprechende Meldung ausgeben
    if(!$found) echo 'kein Datensatz vorhanden';
    
//    Appendix:
//    Der Array $table hat den folgenden Aufbau
//    Array
//        (
//            [1] => Array
//                (
//                    [A] => 2
//                    [B] => r1
//                    [ C] => 1
//                )
//        
//            [2] => Array
//                (
//                    [A] => 1
//                    [B] => b2
//                    [ C] => 2
//                )
//        
//        )

?>
```


----------



## fragezeichen (19. Oktober 2010)

So dann werde ich mal versuchen dem Bahnhof Gleise zu geben ;-)
- ich habe Datein als .txt . Diese nenne ich z.B. A1.txt oder B1.txt usw. ... 
- In diesen Datein ist Text enthalten

Die  Idee war diese Textdatein in einer Tabelle/Datenbank zusammenzufassen
- Diese Tabelle/Datenbank soll dann ausgeleses und angezeigt werden.(Mit der Abfrage wie oben beschrieben)
Ist es jetzt klarer?


----------



## Yaslaw (19. Oktober 2010)

Ja -> schau meine Antwort von oben an


----------



## fragezeichen (19. Oktober 2010)

hi,
danke, nun bekomme ich
fehlermeldung

Warning: file_get_contents(t/A1.txt) [function.file-get-contents]: failed to open stream: No such file or directory in /mnt


----------



## Yaslaw (19. Oktober 2010)

Dann lies mal den Kommentar der eine Zeile darüber steht. Anschliessend überlegst du wie du die Zeile für dich anpassen musst.....
Für etwas habe ich die vielen Kommentare in den Code geschrieben.

Somit gibts keine weiteren Hilfe von mir solange du nicht selbst überlegst


----------



## Steusi (19. Oktober 2010)

Du musst yaslaw's Post schon lesen und nicht nur kopieren, du versuchst auf ein Unterverzeichnis "t" zuzugreifen, welches bei dir sicher nicht existiert!


----------



## fragezeichen (19. Oktober 2010)

ist schon klar , dass die .txt datein im Unterordner "t" liegen!
Den gibts bei mir auch!
Und da drin habe ich die Datein A1.txt, A2.txt usw...


----------



## Yaslaw (19. Oktober 2010)

Da können wir dir nicht weiterhelfen. Die Fehlermeldung besagt, dass er A1.txt im Unterverzeichnis t (von da an gerechnet wo du das Script laufen lässt) sucht.

Da du uns eigentlich keinerlei angaben gibst, wie du das testet, hier einige Fragen:

1) Lässt du mein Script genauso als Testdatei laufen oder hast du es irgenwie schon abgeändert?
2) Falls du mein Code in eine Datei kopiert hast und diese laufen lässt, ist da der Ordner t in der gleichen Ebene wie das Script?
3) Arbeitest du im Moment lokal auf Windows oder auf dem Server?


----------



## fragezeichen (19. Oktober 2010)

hi yaslaw,
- ich habe das php skript so wie es ist"also unverändert"auf den Server hochgeladen (hatte bislang keine Änderungswünsche/Notwendigkeiten gesehen/gefunden)
- in einem ordner liegt eine html datei mit der ich auf  das php (das auch in diesem ordner liegt) zugreife und ein ornder mit Namen "t"
- in dem Odner "t" liegen die Datein A1.txt , A2.txt B1.txt usw.


----------



## Yaslaw (19. Oktober 2010)

Dann löst es irgendwie den Pfad nicht sauber auf.

welche PHP-Version?

Ersetze mal die Zeile durch das folgende

```
$path = dirname(__FILE__);
            $table[$i][$col] = file_get_contents("{$path}/t/{$col}{$i}.txt");
```


----------



## fragezeichen (19. Oktober 2010)

hi,
hab es bislang unter php gespeichert.
jetzt mal mit php3 und php 5 probiert... leider erfolglos ;(
nun check ich nochmal die "path" version ...


----------



## Yaslaw (19. Oktober 2010)

Welche PHP-Version hat dein Provider?


----------



## fragezeichen (19. Oktober 2010)

hi,
- bin ich hier grad falsch unterwegs********

- Es ist doch richtig, dass ich im Ordner "t" nur miene Textdateien ablege oder**** Diese nenne ich A1.txt undsoweiter...

- Ich lege dort nichts anderes ab- oder bin ich da falsch unterwegs?

- Sofern der Inhalt der Datei A1.txt eine "1" ist wird diese angezeigt wenn der Inhalt eine "25" ist nicht. Dann geht die Prüfung auf die nächst .txt Datei...
So verstehe ich das ganze-


----------



## fragezeichen (19. Oktober 2010)

Provider ist Strato
Version auf Strato ****


----------



## Yaslaw (19. Oktober 2010)

Genau so.
Aber da du uns immer noch nix von deiner Implementierung meines Beispieles gezeigt hast, und mir immer noch keine Antwort gegeben hast welche Version von PHP durch den Provider unterstützt wird, habe ich grad ganz spontan keine Lust andauernd meine Fragen zu wiederholen umd das seltene Privileg auszuleben, dir helfen zu dürfen.

Ich wünsche einen guten Appetit und einen schönen Nachmittag....


----------



## fragezeichen (19. Oktober 2010)

hi yaslaw,
klingst angesäuert- ;( SOrry aber verstehen wir uns hier falsch****
Also Strato mein Provider unterstützt php ohne irgendwelche nummern hinterher und auch php.5 etc.
bislang laufen mien php`s wenn ich diese unter .php (also ohne zusätze abspeicher)

Dein "genauso" interpretiere ich als Bestätigung, das ich meine Datein richt abgespeicher habe und "DEIN PHP" auf diese zugreifen und dieses dann ausgibt
HMMM Alles fragwürdig warum es dann nicht geht ;(


----------



## Yaslaw (19. Oktober 2010)

Also. Du machst jetzt mal folgendes

1) Ermitteln der PHP-Version bei Strato
Erstelle eine Datei mit dem Namen phpinfo.php und dem folgenden Code als Inhalt. Diese stellst du bei Strato in dein Verzeichnis indem du dein Zeug hast. Dann rufst du diese Datei auf.
Da steht dann gross, welche Version php da unterstützt wird. (Ich kenne Strato nicht, darum hab ich keinen blassen Schimmer was der anbietet)


```
<?php 
    phpinfo(); 
?>
```

2) Sicherstellen Gross-Kleinschreibung
Im gegensatz zu Windows arbeiten Unix und Linux Casesensitiv. Das heisst, A ist nicht gleich a.
Überprüfe darum ob die Dateien wirklich alle mit einem grossen Buschstaben beginnen und das Verzeichnis t und nicht T heisst.

3) Debuggen um den Fehler zu suchen
Da du direkt auf dem Host bist, kannst du kein Debugger verwenden. Wir müssen uns also Schrittweise an das Problem herantasten. Eine kleine Anleitung dazu habe ich vor geraumer Zeit mal geschrieben: PHP Debuggen mit var_dump()

Wir wollen jetzt mal herauszufinden was php da so alles sieht von der Dateistruktur. Kopiere dazu mal den folgenden Code ganz oben in dein Script. Führe das Script aus. Dann schaust du dir das Resultat mal in der Source-Ansicht deines Browsers an (ist schöner formatiert *g*). Kopier das aus der Source-Ansicht und poste es mal hier, damit wir sehen was da an Ordnern etc. herumliegt, ob wir da den Ordner t finden.

```
$path = dirname(__FILE__);
$files = scandir($path);
var_dump($path, $files);
```


----------

