Auslesen einer Partnerseite in XML, Inhalt der Variablen wird nicht erkannt

mallmis

Mitglied
Hallo liebe Forum Gemeinde,
habe da mal wieder ein Problem:

Lese gerade eine unserer Partnerseiten aus. Auf dieser sind in Tabellen die Belegungen für verschiedenen Ferienobjekte verzeichnet. Das ganze kommt wohl direkt aus Excels Web-Formular-Assistent Kopf sieht so aus:
HTML:
<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=ProgId content=Excel.Sheet>
<meta name=Generator content="Microsoft Excel 10">

Habe mich eines Codeschnipsels zum parsen der Seite bedient:
PHP:
class data_pars { 
     
    var $datei; 
    var $read_laenge = 2000; 
    var $result; 
     
     
    function set_datei($datei) { 
         
        $this->datei = $datei; 
    } 
     
    function read($start,$ende) { 
         
        $file = @fopen ($this->datei,"r"); 
     
        while (!feof($file)) { 
     
            $inhalt .= fgets($file,$this->read_laenge); 
        } 
         
        if(!$start) $start = 0; 
        if(!$ende) $ende = strlen($inhalt); 
         
        if($ende > strlen($inhalt)) $ende = strlen($inhalt); 
         
        $this->result = substr($inhalt,$start,$ende); 
         
    } 
     
    function get_result() { 
         
        return $this->result; 
    } 
     
    function get_in_out($in,$out,$in_out) { 
         
    $anzahl_ende = strlen($out); 
    $anzahl_start = strlen($in); 
    $start = 0;  
    $anzahl = substr_count($this->result, $in); 
    $count = 0; 
     
    if(!$in_out) { 
         
        $ad_start = $anzahl_start; 
        $ad_ende = $anzahl_ende; 
    } 
     
    while($count < $anzahl) { 
     
        $ar_start = strpos($this->result, $in, $start); 
        $ar_ende = strpos($this->result, $out, $ar_start + $anzahl_start); 
        $ar_string = substr($this->result,$ar_start + $ad_start, $ar_ende - $ar_start + $anzahl_ende - $ad_ende - $ad_start); 
         
        $output[start][] = $ar_start; 
        $output[ende][] = $ar_ende - $ar_start + $anzahl_ende; 
        $output[string][] = trim($ar_string); 
         
        $start = $ar_start + $anzahl_start; 
                 
        $count++; 
         
    }     
         
     
    return $output; 
     
    }     
         
     
}

Dann habe ich Spalte für Spalte ausgelesen und folgendes geschrieben um die ID unserer Partneragentur sowie den Monat und auch die Klasse des Feldes auszugeben, welches dann die Belegung oder nicht Belegung ausgibt:

PHP:
for ($i = 0; $i <= 19; $i++)
	{
		$data = new data_pars();
		$data->set_datei('http://xxxxxxxxx:xxxxxxxx@www.ambiente-mallorca.info/members/Belegung/F_0.htm');
		$data->read('0','2500000');
		$tabelle = $data->get_in_out('<table','</table>',false); 
		$data->result = $tabelle['string'][0]; 
		$reihen 	= $data->get_in_out('<tr','</tr>',false);
		$data->result = $reihen['string'][$i];
		$id_agentur = $data->get_in_out('</span>','</td>',false);
		
		if (!empty($id_agentur['string'][0]))
		{
		$id_ag		= $id_agentur['string'][0];
		
		echo ("</br>Die ID von Ambiente lautet: " . $id_agentur['string'][0]);
		}
		else
		{
		$monat 		= $data->get_in_out("height:12.75pt'>",'</td>',false);
		$feld 		= $data->get_in_out('<td class=xl','>&nbsp;</td>',false); 
		}
		if ((empty($monat['string'][0])) OR ($feld['string'][0] == "28 align=right x:num>1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28"))
		{
		echo ("</br>In dieser Spalte ist keine Information enthalten");
		}
		else

nach dem else geht es dann mit einer weiteren for Schleife weiter, welche dann die jeweiligen $feld Einträge in die Datenbank schreiben soll:

PHP:
		{
		for ($ii = 0; $ii <= 30; $ii++)
			{
			$feld[$ii] 	= $feld['string'][$ii];
			echo("</br>Monat: " . $monat_pars);
			if ($monat['string'][0] == "August 2008")
				{
					$query	= 	"INSERT INTO august_2008 (id_agentur, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31) VALUES ( ";
					$query	.=	"'" . $id_ag ."', ";
					$query	.=	"'" . $feld[0] ."', ";
					$query	.=	"'" . $feld[1] ."', ";
					$query	.=	"'" . $feld[2] ."', ";
					$query	.=	"'" . $feld[3] ."', ";
					$query	.=	"'" . $feld[4] ."', ";
					$query	.=	"'" . $feld[5] ."', ";
					$query	.=	"'" . $feld[6] ."', ";
					$query	.=	"'" . $feld[7] ."', ";
					$query	.=	"'" . $feld[8] ."', ";
					$query	.=	"'" . $feld[9] ."', ";
					$query	.=	"'" . $feld[10] ."', ";
					$query	.=	"'" . $feld[11] ."', ";
					$query	.=	"'" . $feld[12] ."', ";
					$query	.=	"'" . $feld[13] ."', ";
					$query	.=	"'" . $feld[14] ."', ";
					$query	.=	"'" . $feld[15] ."', ";
					$query	.=	"'" . $feld[16] ."', ";
					$query	.=	"'" . $feld[17] ."', ";
					$query	.=	"'" . $feld[18] ."', ";
					$query	.=	"'" . $feld[19] ."', ";
					$query	.=	"'" . $feld[20] ."', ";
					$query	.=	"'" . $feld[21] ."', ";
					$query	.=	"'" . $feld[22] ."', ";
					$query	.=	"'" . $feld[23] ."', ";
					$query	.=	"'" . $feld[24] ."', ";
					$query	.=	"'" . $feld[25] ."', ";
					$query	.=	"'" . $feld[26] ."', ";
					$query	.=	"'" . $feld[27] ."', ";
					$query	.=	"'" . $feld[28] ."', ";
					$query	.=	"'" . $feld[29] ."', ";
					$query	.=	"'" . $feld[30] ."' ";
					$query	.=	" ) " ; 
					
					$result	=	mysql_query( $query );
					if ( ! $result )
					{
					die("konnte den Datensatz nich eintragen: " . mysql_error() );
					}
				}
			elseif ($monat['string'][0] == "September 2008")
				{
					$query	= 	"INSERT INTO september_2008 (id_agentur, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31) VALUES ( ";
......................usw.

Nun erkennt aber die If Abfrage die Monate nicht, obwohl var_dump($monat); entsprechend jedes Monats folgendes ergibt:
z.B. beim August 2008:
Code:
array(3) { ["start"]=> array(2) { [0]=> int(43) [1]=> int(95) } ["ende"]=> array(2) { [0]=> int(84) [1]=> int(32) } ["string"]=> array(2) { [0]=> string(59) "August 2008" [1]=> string(11) "August 2008" } }
Mai 2009:
Code:
29array(3) { ["start"]=> array(2) { [0]=> int(43) [1]=> int(95) } ["ende"]=> array(2) { [0]=> int(84) [1]=> int(32) } ["string"]=> array(2) { [0]=> string(59) "Mai 2009" [1]=> string(11) "Mai 2009" } }
usw. usw.

Also wird alles richtig ausgelesen, habe schon alle Monate getestet.

Mein Problem nun: Warum erkennt die if Abfrage nicht den Monatsnamen?
(in_array hab ich auch schon getestet)

Vielen Dank schonmal für Eure Hilfe und bis dann,

mallmis
 
Zuletzt bearbeitet:
Hab mir schon überlegt, ob es irgendwie an der codierung liegen kann und einiges ausprobiert, hat aber nichts geholfen.
 
Bei Error reporting kommt folgendes:
Code:
Notice: Undefined variable: inhalt in /is/htdocs/wp1037859_WLURKHXNO1/www/deutsch/pars_ambiente.php on line 23
und dann endlos:
Code:
Notice: Use of undefined constant start - assumed 'start' in /is/htdocs/wp1037859_WLURKHXNO1/www/deutsch/pars_ambiente.php on line 60

Notice: Use of undefined constant ende - assumed 'ende' in /is/htdocs/wp1037859_WLURKHXNO1/www/deutsch/pars_ambiente.php on line 61

Notice: Use of undefined constant string - assumed 'string' in /is/htdocs/wp1037859_WLURKHXNO1/www/deutsch/pars_ambiente.php on line 62

Werde jetzt mal die Fehlermeldungen analysiern. Vieleicht weiß ja von Euch jemand was.

Bis gleich,

mallmis
 
Fehlermeldungen sind eliminiert.

Funktioniert aber immer noch nicht.

If Abfrage erkennt nicht den Monat......

Hilfeeeeee....

Gruß

mallmis
 
Warum verwendesten keine xml php funktion um die xml datein auszulesen?
Haste am Server noch eine alte PHP version oben?

Mfg Splasch
 
Vieln Dank,

hab ich wieder was zum lesen.

Ich poste dann alles wenn es fertig ist, oder wenn ich noch mehr Fragen habe.

mallmis
 
Zurück