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:
Habe mich eines Codeschnipsels zum parsen der Seite bedient:
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:
nach dem else geht es dann mit einer weiteren for Schleife weiter, welche dann die jeweiligen $feld Einträge in die Datenbank schreiben soll:
......................usw.
Nun erkennt aber die If Abfrage die Monate nicht, obwohl var_dump($monat); entsprechend jedes Monats folgendes ergibt:
z.B. beim August 2008:
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
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','> </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 ( ";
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" } }
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" } }
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: