Vollständige Version anzeigen : Strukturierte Textdatei in PHP auslesen und via SQL in eine Datenbank schreiben


newyork
02.12.2016, 21:41

Moin Leute,

ich erstelle quasi eine Webanwendung für einen Fragebogen.
Im Grunde steht alles schon und klappt soweit auch, die MySQL-DB ist mit PHPMyadmin wie folgt aufgebaut:

Tabelle: Fragen
FID: ID für die Fragen, auto_increment
Frage: varchar mit den einzelnen Fragen
url: varchar mit dem Dateipfad zu einem eventuellen Bild/Symbol zur Frage

Tabelle: Antworten
AID: ID für die Antworten, auto_increment
antwort: varchar für die einzelnen Antwort
korrekt: boolean, 1 für korrekte Antwort, 0 für nicht korrekt
FID: Fremdschlüssel für die Zuweisung von jeweils 4 Antworten zu einer Frage


Jede Frage hat 4 Mögliche Antworten, von denen nur eine korrekt ist. Die Fragen werden nach der Reihe angezeigt, die 4 Antworten werden pro Frage immer gemischt. Das Mischen der Fragen hab ich programmtechnisch nicht umgesetzt bekommen. Aber das eigentliche Problem ist folgendes:

Es gibt ca. 300 Fragen, dementsprechend 300*4 Antworten, das alles einzeln via PHPMyAdmin einzupflegen ist natürlich richtig eklig, jetzt kam die Idee diese Fragen und Antworten anstelle aus der eigenen Datenbank direkt von der Webseite bzw. PDF zu holen und zu verwenden: Elektronischer Wasserstraßen-Informationsservice - [Basisfragen] (;;;elwis~de/Freizeitschifffahrt/fuehrerscheininformationen/Fragenkatalog-Binnen/Basisfragen/index;html)

Ich nehme nur mal an dass das entweder den Rahmen des Projektes sprengt sowie das bisherige funktionierende Konstrukt enorm umwirft, deswegen dachte ich eventuell ist es möglich anhand des Quellcodes der Seite meine Datenbank zu füllen.
Jede Frage mit ihrer Antwort ist wiefolgt hinterlegt:
<hr class="hrli" />
<ol start="1" type="1">
<li>Was ist zu tun, wenn vor Antritt der Fahrt nicht feststeht, wer Fahrzeugf&uuml;hrer ist?<br /><br />
<ol start="1" type="a">
<li>Der verantwortliche Fahrzeugf&uuml;hrer muss bestimmt werden;<br /><br /></li>
<li>Der verantwortliche Fahrzeugf&uuml;hrer muss gew&auml;hlt werden;<br /><br /></li>
<li>Ein Inhaber des Sportbootf&uuml;hrerscheins muss die Fahrzeugf&uuml;hrung &uuml;bernehmen;<br /><br /></li>
<li>Ein Inhaber des Sportbootf&uuml;hrerscheins muss die Verantwortung &uuml;bernehmen;<br /><br /></li>
</ol>
</ol>


Jetzt versuche ich also diese als ;txt gespeicherte Struktur irgendwie in PHP einzulesen und via SQL in die DB zu kriegen.
Alternativ könnte man das auch als folgende Datei verwenden:
1"
Was ist zu tun, wenn vor Antritt der Fahrt nicht feststeht, wer Fahrzeugf&uuml;hrer ist?
1"
Der verantwortliche Fahrzeugf&uuml;hrer muss bestimmt werden.
Der verantwortliche Fahrzeugf&uuml;hrer muss gew&auml;hlt werden.
Ein Inhaber des Sportbootf&uuml;hrerscheins muss die Fahrzeugf&uuml;hrung &uuml;bernehmen.
Ein Inhaber des Sportbootf&uuml;hrerscheins muss die Verantwortung &uuml;bernehmen;


Je nachdem was besser umzusetzen ist. Weil irgendwie muss ich das ja strukturieren, im ersten Beispiel wäre das mündlich gesprochen ja so etwas wie "type="1" bedeutet Frage, type="a" bedeutet antwort, in <li> tags sind dann fragen und antworten".
Im zweiten Fall wäre das eher "Zeile 1 Frage, Zeile 3-6 Antwort, Zeile 7 Frage, Zeile 9-12 Antwort" usw. Also quasi nach Zeilennummer könnte man dann vorgehen.

Jetzt frage ich mich ob das überhaupt so klappt, falls nein wie dann? Ich brauche ja schließlich auch die Verbindung von Antwort zu Frage...

Hardware Preisvergleich | Amazon Blitzangebote!

Videos zum Thema
Video Loading...
raid-rush
03.12.2016, 16:12

Mit Regexp liest du die entsprechenden Textstellen aus, also Frage und die jeweils 4 Antworten.

Die Frage speicherst du in Tabelle wie du beschrieben hast und die Antworten ebenfalls, die Verknüpfung besteht ja direkt über die FID. Das sollte soweit passen.

Daten Einlesen durch preg_match_all hier trennst du die Seite auf in die sich wiederholenden Strucktur-Stücke also zB (;*)<hr class="hrli" />

Die Stücke durchläufst du dann im

foreach($stücke AS $string){

if(preg_match(';<ol start="1" type="1">\s<li>(;*)</li><ol start="1" type="a"><li>(;*)</li><li>(;*)</li><li>(;*)</li><li>(;*)</li></ol>;Usim',$string,$m)){

$frage = $m[1];
$antwort1 = $m[2];

...
mysql_query("INSERT INTO..;")

}

}


newyork
05.12.2016, 10:55

Moin,

Regexp hatte ich garnicht auf dem Schirm.
Nach deinem Beispiel scheint die "Auswertung" ja dann relativ simpel zu sein mit jeweils getrenntem Array für Frage und Antwort.

Werd ich mir genauer anschauen, danke für den Tipp!


Ähnliche Themen zu Strukturierte Textdatei in PHP auslesen und via SQL in eine Datenbank schreiben
  • Textdatei in c++ Konsolenanwendung auslesen
    Kann mir wer sagen wie ich das anzustellen habe? Also ich will in einer txt Datei diverse Termine haben, die angezeigt werden sollen und bei Bedarf geändert werden sollen. Währe cool wenn ich schnell eine antwort bekommen würd. danke schonmal im Voraus [...]

  • [C/C++] Textdatei -> In bestimmte Zeile schreiben
    Hallo Leute, ich möchte gerne in eine Textdatei auf einer bestimmten Zeile etwas schreiben lassen und dabei den bisherigen Inhalt auf der Zeile löschen. Unter folgendem Link habe ich halbwegs gelernt wie das mit dem auslesen einer bestimmten Zeile funktioniert: Klick mich! (;board;raidrush~ws/sho [...]

  • [VisualBasic] [.NET]In eine Textdatei schreiben
    Hallo VB Version - Visualbasic 2005 Also, ich habe eine Inputbox, dort gebe ich einen Wert ein! Wie kann ich Visual Basic dazu bringen, das es mir diesen Wert aus der Inputbox in eine Textdatei irgendwo am Computer schreibt? Noch ne Frage ich habe hier ein Beispiel für ne Inputbox! [...]

  • [C#] Textdatei auslesen und in ein Array schreiben
    Hi, ich versuche zurzeit eine Textdatei in ein Array zu speichern. Die Werte in der ;txt haben folgendes format 1 2 3 4 ... Das ist das wasich bisher habe. StreamReader myFile = new StreamReader(;"C:\Users\Admin\Desktop\Niederschlag;txt", System;Text;Encoding;Default) [...]



raid-rush.ws | Imprint & Contact pr