Daten aus Tabelle auslesen

Hallo, ich würde gern aus einer HTML Tabelle von einer fremden Seite meine Daten beziehen, da diese Tabelle immer neu generiert wird.Ich weiß von dieser Tabelle wie sie gebaut wird.(=Suplierplan)

Wie kann ich auf meiner Seite nur den Inhalt von der Tabelle ausgeben?(das Design ist wirklich grässlich)

Hier meine Ursprungstabelle:
Klick

mfg.
Hirsl

P.S.:Wär nett wenn sich jemand auf mein anderes Posting(Scrollbalken mit as) melden würde ;)
 
Sofern du PHP hast ist das einfach:
Du liest die Tabelle ein (entweder durch manuelles kopieren in ein Textfenster oder per gefälschten POST-Headern an die Page).
Dann entfernst du mit str_replace() und Preg_replace() alle unnötigen Sachen, bis nurnoch übrig bleibt was du brauchst.
 
aber das wäre dann ja nicht dynamisch?

PHP:
<?php
$woher = "http://www.g19.asn-wien.ac.at/bg19home/supplierungen/Web_Klassen_7A.htm";

$data = implode("", file($woher));
if (preg_match("/<TABLE border=\"3\" rules=\"all\" bgcolor=\"#E7E7E7\" cellpadding=\"1\" cellspacing=\"1\">(.*)<\/table>/i", $data,$table)) 
{
$tabelle = $table[1]; 
}
if($tabelle) echo "OK<br><hr>";
echo $data;
?>

Das hab ich mir zusammengetan(habs wo gefunden und herumprobiert) geht aber nicht ;(

HILFE!!!!!

mfg.
Hirsl
 
So gebe Dir mal einen kleinen anstoss.

PHP:
$url = "http://www.g19.asn-wien.ac.at/supplierungen/Web_Klassen_7A.htm"; // Von wo!

$arr = file($url); // die Datei in ein Array einlesen! Jede Zeile ist ein Element 

foreach($arr as $line) // Array auslesen
{
  //echo htmlspecialchars($line)."<br>"; // Mit Tags Anzeigen
  echo $line; // Real Anzeigen
}

Der Rest sollte nicht mehr so schwer werden!
In der foreach schleife könntest Du jetzt mit preg_match arbeiten damit du die Rohdaten hast.
 
Sorry,aber ich stehe immer noch auf der leitung...
soweit war ich glaub ich schon :D
aber wie kann ich mir jetzt die zelleninhalte holen? wie kann ich php dazu bringen, dass erst in der zweiten zeile,also erst nach dem ersten <td></td> Tag begonnen werden soll?

Thx to all help,
mfg.
Hirsl
 
Hab gerade gemerkt, dass noch ein Logik Fehler drin. Wenn ich dazu komme behebe ich den noch.
Falls Du es selber versuchen willst hier eine kleine Fehlerbeschreibung:
Die letzten beiden Spalten werden nicht richtig ausgelesen, besser gesagt falls man in den Spalten was einträgt werden die danach nicht mehr richtig ausgelesen.

Da ich nichts besseres zu tun hatte hab ich Dir das Script geschrieben Du musst es nur noch anpassen!
Es liest die Tabelle aus und zeigt Sie wieder an.
PHP:
<?php
/*########################################################
  #         Dieses Script ist von BasicAvid(c)           #
  #            Samstag, 3.September 2005                 #
  ########################################################
*/
$convert = array(); // ein Hilfsarray
$start = 0; // wird später benötigt
$cols = 11; // wieviel Spalten werden benötigt
$url = "http://www.g19.asn-wien.ac.at/supplierungen/Web_Klassen_7A.htm"; // Von welcher URL
$string = "Klasse(n)"; // Wird benötigt um den Anfang festzustellen
$string2 = "Vertretungs-Text"; // Um das Ende festzustellen
$arr = file($url); // Datei wird eingelesen


for($i=0;$i<count($arr);$i++)
{
   $arr[$i] = strip_tags($arr[$i]); // Tags entfernen
   if(!empty($arr[$i])&& trim($arr[$i]) ) // Prüfen ob nicht Leer und entferne Vor-Nachleerzeichen
   {
      array_push($convert,trim($arr[$i])); // an das Hilfsarray anfügen
      
      if(trim($arr[$i]) == "  ") // ist das aktuelle Element gleich HIER FEHLER "  "
        array_push($convert," ");     // füge noch ein Element an das Hilfsarray an
   }
   
   
}

for($i=0;$i<count($convert);$i++) // Schleife um den Startpunkt zu ermitteln
{
  if(!strnatcmp($string,$convert[$i]))
    $start = $i;
  
}

/*
Hier beginnt das eigentliche darstellen der Daten, 
muss dementsprechend angepasst werden!

*/

echo "<table border='1' align='center'>\n";

for($i=$start,$m=0;$i<count($convert)-8;$i++,$m++) // bei count($convert)-8 werden die letzten unnötigen Daten entfernt
{

  
  
  if($m==0) // Anfang einer Zeile 
    echo "<tr align='center'>\n";
    
  if(!strnatcmp("statt",$convert[$i+$j])) 
  {
     echo "<td>".$convert[$i+$j]."<br>".$convert[$i+$j+1]."</td>\n";
     $j++;
  }
  else
     echo "<td>".$convert[$i+$j]."</td>\n";
     
       
  if($m == $cols) // Ende einer Zeile
  {
    echo "</tr>\n";
    $cols = 12; // Spaltenanzahl auf 12 setzen
    $m=0; // variable zurücksetzen für die nächste Zeile
  }   
  
}
echo "</table>\n";

?>

In dem Array $convert hast Du nur die Daten der Tabelle drin.
Hab Sie wieder in eine Tabelle gepackt. Mach was draus.
Hoffe es hilft Dir!?
 
Merci,

Das Script is echt gut,danke.Ja das mit den letzten Zeilen,ist irgendwie komisch.ich werds mal probieren.

mfg.
Hirsl

EDIT:
Der Fehler liegt darin, dass (geschützte)Leerzeichen nicht erkannt werden,d.H. teilweise doppelt,tw. garnicht.Habe aber noch keine Lösung.
EDIT:
Ich habs mit anderen Pläne probiert.Z.B. von der 7ten u 8ten gehts, bei der 5.allerdings nicht.Problem immer noch nicht behoben.Sollte schließlich dynamisch sein :D

EDIT um 03:00:
Ich glaube der Fehlrt liegt hier.ich hab das ganze mit implode getestet,irgendwie wird das leerzeichen(auch wenn nachträglich als text geändert) nicht angezeigt
PHP:
########################################################  
  if(!strnatcmp("statt",$u[$i+$j])) 
  {
    echo "<td>".$u[$i+$j]."<br>".$u[$i+$j+1]."</td>\n";
	$j++;
  }
  else
     echo "<td>".$u[$i+$j]."</td>\n";
########################################################
 
Genau dass ist das Problem, hab das Script eben gestern schnell mal geschrieben und flupp ist ein Fehler drin!
Ich werde es heute auf jeden fall nochmal ändern.

Falls Du die Lösung gefunden hast poste sie bitte.
 
Hilfe!
Hab echt keine Ahnung worin der Fehler liegt!
@BasicAvid: Hast du den Fehler schon gefunden?


Danke,
Hirsl
 
Hi,

ja ich habe den Fehler bereits gefunden, nur dass ich ihn nicht ausmerzen kann. Deshalb habe ich das Script nochmal komplett neu geschrieben funzt aber auch noch nicht so ganz!

Das Problem liegt im einlesen, da in einer Zeile zweimal ein <td> - Tag steht!
Man muss erst nach dem Table-Anfang suchen, dann nach Zeilen und Spalten und so die Daten einzeln einlesen!
 
liegt vielleicht daran, dass der Thread schon 5 Jahre alt ist und der Thread-Steller vor 3 Jahren das letzte mal in diesem Forum aktiv war...
Da zudem der Link auch nur bei diesem speziellen Problem Relevanz hatte, ist es wohl besser, diesen Thread einfach in Frieden ruhen zu lassen...

immer diese Thread-Nekrophilen hier... *kopfschüttel*
 
achja stimmt,
Hab das hier über google gefunden und nicht drauf geachtet da ich jetzt in diese schule gehe + in die 7B ;)
Darum dachte ich weil er den Link der 7ten klassen verwendet hat dass es noch aktuell ist sorry^^
 
Zurück
Oben