HTML auslesen, per Variable weitergeben und danach in MySQL schreiben

dvdmagazine

Grünschnabel
Ich versuche, bestimmte Texte innerhalb mehrerer (gleich aufgebauter) HTML-Dateien auszulesen, diese per Variable an ein PHP-Script, das den Text dann in eine MySQL-Tabelle schreibt.

Das Script, welches die MySQL füllt, sieht wie folgt aus:
PHP:
<?PHP
 include("konfiguration.php");
 mysql_query("INSERT INTO
 filme(title,bild,story,genre,regie,darsteller,produktion,ton,untertitel,extras,fsk,dauer,story_wertung,stars_wertung,action_wertung,spannung_wertung,spass_wertung,kopierschutz,herausgeber,kritikersteller,datum)VALUES('$titel','$bild','$story','$genre','$regie','$darsteller','$produktion','$ton','$untertitel','$extras','$fsk','$dauer','$story_wertung','$stars_wertung','$action_wertung','$spannung_wertung','$spass_wertung','$kopierschutz','$herausgeber','$kritikersteller','$datum')");
 mysql_close();
 ?>
Ich gehe nun davon aus, dass ein weiteres Script, den Text auslesen und mit den unter "Values" angegebenen Variablen an obiges Script schicken muss, damit das funktioniert.

Ich weiß allerdings nicht ganz, wie ich das da umsetzen soll.

Was ich genau damit vor habe, ist hier auch nochmal beschrieben: http://forum.bplaced.net/viewtopic.php?f=10&t=2889
 
Hi,

nunja, dein Problem ist eben, dass du keine Variablen hast, die eben die gewünschten Werte enthalten. Deshalb musst du zunächst aus deinem HTML File die entsprechenden Werte raussuchen und in Variablen speichern. Wenn du jetzt tatsächlich sagst, dass alle HTML Dateien gleich aufgebaut sind, dann sollte es kein Problem sein. Denn dann weißt du, dass in Zeile xyz nach dem Tag <sdfsdfgg> z.B. der Titel kommt.

Es ist zwar eine mühselige Arbeit, das alles rauszufiltern, aber es funktioniert. Habe so etwas allerdings vor knapp 8 Jahren das letzte Mal gemacht.
 
Wie schaffe ich es denn, diese in Variablen zu speichern, ohne dass ich das per Hand machen muss?

Also für den Titel einzutragen, z.b. habe ich bereits:
PHP:
<?php
$verzeichnisname = "."; 
$verzeichnis = openDir($verzeichnisname); 
while ($file = readDir($verzeichnis)) { 
 if (strstr($file, ".html")) { 
  $datei = fOpen($verzeichnisname . "/" . $file, "r"); 
  $inhalt = fRead($datei, 100000); 
  fClose($datei); 
  ereg("<title>(.*)<\/title>" , $inhalt , $titel); 
  echo "$titel[1]<br>\n"; 
 }
}
closeDir($verzeichnis); 
?>


<?PHP
 include("konfiguration.php");
 mysql_query("INSERT INTO
 filme(title)VALUES('$titel[1]')");
 mysql_close();
 ?>
Allerdings wird nur der letzte der Titel in die DB eingetragen, nicht jedoch alle.
Aber mir scheint es schon vom Ansatz her in die richtige Richtung zu gehen.
Wenn ich das noch hinkriege, dass es alle Titel nacheinander in eine eigene Zeile schreibt, hätte ich das schlimmste hinter mir und ich wüsste vermutlich, wie es dann mit dem Rest weitergeht.
 
Irgendwie habe ich so das Gefühl, als ob du nicht ganz weißt, was du da veranstaltest.....

Also die Include Datei kommt an den Anfang und mysql_close() ans Ende der PHP Datei. Der Insert in die Datenbank in die "Mitte"

Code:
<?php
 include("konfiguration.php");
$verzeichnisname = "."; 
$verzeichnis = openDir($verzeichnisname); 
while ($file = readDir($verzeichnis)) { 
 if (strstr($file, ".html")) { 
  $datei = fOpen($verzeichnisname . "/" . $file, "r"); 
  $inhalt = fRead($datei, 100000); 
  fClose($datei); 
  ereg("<title>(.*)<\/title>" , $inhalt , $titel); 
  echo "$titel[1]<br>\n"; 
  mysql_query("INSERT INTO filme(title)VALUES('$titel[1]')");
 }
}
closeDir($verzeichnis); 
 mysql_close();
?>
Keine Garantie auf Richtigkeit, hab nur per Copy&Paste alles zusammengewürfelt, was du geschrieben hast

Damit hättest du schonmal alle Titel, nun brauchst du noch den ganzen Rest.
 
Ah, ok.. kein Wunder, dass das nicht ging. Ich muss zugeben, dass ich mich erst jetzt etwas intensiver mit MySQL beschäftige. Aber naja, der Ansatz war ja schonmal nicht schlecht :D... und was dazu gelernt hab ich auch. Dann versuch ich mich gleich mal an dem Rest, sollte ja jetzt kein allzu großes Problem mehr sein.

Und danke für deine Hilfe.

Achja, doch noch eine Kleinigkeit:
Code:
<?php
 include("konfiguration.php");
$verzeichnisname = "."; 
$verzeichnis = openDir($verzeichnisname); 
while ($file = readDir($verzeichnis)) { 
 if (strstr($file, ".html")) { 
  $datei = fOpen($verzeichnisname . "/" . $file, "r"); 
  $inhalt = fRead($datei, 100000); 
  fClose($datei); 
  ereg("<title>(.*)<\/title>" , $inhalt , $titel);
  ereg("<td align=\"left\" height=\"35%\" class=\"txt\">(.*)<\/td>" , $inhalt , $bild); 
  echo "$titel[1]<br>\n"; 
  mysql_query("INSERT INTO filme(title,bild)VALUES('$titel[1]','$bild[1]')");
 }
}
closeDir($verzeichnis); 
 mysql_close();
?>
Mit dem Script wird zu viel in der Spalte "bild" eingetragen. Es hört nicht bei vor dem </td> auf, sondern erst beim nächsten <td>.
 
Zuletzt bearbeitet:
Zurück