Zur Navigation

Notice: Undefined variable: res

1 tobi

hallo,

Notice: Undefined variable: res ... on line 15

die ganze Datei schaut so aus:
<?php

function PostToHost($host, $path, $referer, $data_to_send) {
  $fp = fsockopen($host, 80);

  fputs($fp, "POST $path HTTP/1.1\r\n");
  fputs($fp, "Host: $host\r\n");
  fputs($fp, "Referer: $referer\r\n");
  fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
  fputs($fp, "Content-length: ". strlen($data_to_send) ."\r\n");
  fputs($fp, "Connection: close\r\n\r\n");
  fputs($fp, $data_to_send);

  while(!feof($fp)) {
      $res .= fgets($fp, 128);
  }

  fclose($fp);

  return $res;
}

//Datenbank verbinden
include "../zugang_3.php.inc";

$data="...";
$data=$data."...";
$data=$data."...";
$data=$data."...";
$data=$data."...";
$data=$data."...";

// Seite auslesen und in $x als String speichern
$x = PostToHost(
              "...",
              "/...",
              "...",
              $data
);

 //Tabelle leeren
 mysql_query("TRUNCATE TABLE spielergebnisse") or die(mysql_error());

// alles bis auf Tabelle entfernen
$x=substr($x,strpos($x,"<table class=\"result-set\""));
$x=substr($x,0,strpos($x,"</table>"));


// Kopfzeile der Tabelle entfernen
$x=substr($x,strpos($x,"</tr>")+5);

// Solange noch ein Spiel gefunden wird => Schleife ausf?hren
while(strpos($x,"<tr") !== false) {
         // Anfangsposition des Spiels ermitteln
         $startpos=strpos($x,"<tr");
         // Endposition des Spiels ermitteln
         $endpos=strpos($x,"</tr>");
         // Spielzeile in $spielstr speichern
         $spielstr=substr($x,$startpos,$endpos-$startpos);

         // Wochentag bestimmen
         $spielstr=substr($spielstr,strpos($spielstr,"<td")+3);
         $spielstr=substr($spielstr,strpos($spielstr,">")+1);
         if (substr($spielstr,0,strpos($spielstr,"<"))!=="&nbsp;") {
                 $wochentag = trim(substr($spielstr,0,strpos($spielstr,"<")));
            }
         $spielstr=substr($spielstr,strpos($spielstr,"</td>")+5);

         // Datum bestimmen
         $spielstr=substr($spielstr,strpos($spielstr,">")+1);
         if (substr($spielstr,0,strpos($spielstr,"<"))!=="&nbsp;") {
                 $datum = trim(substr($spielstr,0,strpos($spielstr,"<")));
            }
         $spielstr=substr($spielstr,strpos($spielstr,"</td>")+5);

         // Uhrzeit bestimmen
         $spielstr=substr($spielstr,strpos($spielstr,">")+1);
         $uhrzeit = substr(trim($spielstr),0,5);

         // Zusatzinfo wie t/v oder v oder u (tausch, verlegt oder unbestimmte zeit)
                 $spielstr=substr(trim($spielstr),5);
                 $zusatzinfo=substr($spielstr,0,strpos($spielstr,"</td>"));
				 $zusatzinfo=preg_replace("/(&nbsp;)/"," ",$zusatzinfo);
                 $zusatzinfo=trim($zusatzinfo);

         $spielstr=substr($spielstr,strpos($spielstr,"</td>")+5);


         // Spalte zusatzinfo verworfen
         $spielstr=substr($spielstr,strpos($spielstr,"</td>")+5);
		 
		 
		 // Spielenummer bestimmen
         $spielstr=substr($spielstr,strpos($spielstr,">")+1);
         $spielenummer = trim(substr($spielstr,0,strpos($spielstr,"<")));
         $spielstr=substr($spielstr,strpos($spielstr,"</td>")+5);
		 
         // Spielklasse bestimmen
         $spielstr=substr($spielstr,strpos($spielstr,">")+1);
         $spielklasse = trim(substr($spielstr,0,strpos($spielstr,"<")));
         $spielstr=substr($spielstr,strpos($spielstr,"</td>")+5);

         // Heimmannschaft bestimmen
         $spielstr=substr($spielstr,strpos($spielstr,">")+1);
         $heimmannschaft = trim(substr($spielstr,0,strpos($spielstr,"<")));
         $spielstr=substr($spielstr,strpos($spielstr,"</td>")+5);

         // Gastmannschaft bestimmen
         $spielstr=substr($spielstr,strpos($spielstr,">")+1);
         $gastmannschaft = trim(substr($spielstr,0,strpos($spielstr,"&nbsp;<")));
         $spielstr=substr($spielstr,strpos($spielstr,"</td>")+5);

         // Ergebnis bestimmen
         $spielstr=substr($spielstr,strpos($spielstr,">")+1);
         if (strpos($spielstr,"</a>")!==false) {
                 $spielstr=substr($spielstr,strpos($spielstr,">")+1);
            }
                 $spielstr=trim($spielstr);
         if (substr($spielstr,0,6)=="&nbsp;") {
                 $heimergebnis=0;
                 $gastergebnis=0;
            }
         else {
                 $heimergebnis=substr($spielstr,0,strpos($spielstr,":"));
                 $gastergebnis=substr($spielstr,strpos($spielstr,":")+1,strpos($spielstr,"<")-strpos($spielstr,":")-1);
            }
         $spielstr=substr($spielstr,strpos($spielstr,"</td>")+5);

         echo $wochentag."\n";
         echo $datum."\n";
         echo $uhrzeit."\n";
         echo $zusatzinfo."\n";
		 echo $spielenummer."\n";
         echo $spielklasse."\n";
         echo $heimmannschaft."\n";
         echo $gastmannschaft."\n";
         echo $heimergebnis."\n";
         echo ":\n";
         echo $gastergebnis."\n";

                //letztes Spiel in der Datenbank abspeichern.

                  $datetimestr=substr($datum,6)."-".substr($datum,3,2)."-".substr($datum,0,2)." ".$uhrzeit.":00";

                   mysql_query("INSERT INTO spielergebnisse
                   (wochentag, spielzeit, zusatzinfo, spielenummer, spielklasse, heimmannschaft, gastmannschaft, heimergebnis, gastergebnis)
                   VALUES
                   ('$wochentag', '$datetimestr', '$zusatzinfo', '$spielenummer', '$spielklasse', '$heimmannschaft', '$gastmannschaft', '$heimergebnis', '$gastergebnis')")
                   or die(mysql_error());


         // bearbeitetes Spiel aus Gesamtliste entfernen
         $x=substr($x,strpos($x,"</tr>")+5);
       }

       //Datenbank schlie?en
       mysql_close($link);

?>
Datei wird aufgerufen, Seite gecheckt, und Daten in die DB.
$wochentag', '$datetimestr', '$zusatzinfo', '$spielenummer', '$spielklasse', '$heimmannschaft', '$gastmannschaft',, '$gastergebnis sind korrekt dann in der DB vor zu finden. Unter '$heimergebnis' kommt immer eine 0

gruß tobi

06.12.2012 17:19

2 Jörg Kruse

Zitat von tobi
Notice: Undefined variable: res ... on line 15

Du kannst die Variable vor der Schleife initialisieren:

  $res = '';
  while(!feof($fp)) {
      $res .= fgets($fp, 128);
  }

Datei wird aufgerufen, Seite gecheckt, und Daten in die DB.
$wochentag', '$datetimestr', '$zusatzinfo', '$spielenummer', '$spielklasse', '$heimmannschaft', '$gastmannschaft',, '$gastergebnis sind korrekt dann in der DB vor zu finden. Unter '$heimergebnis' kommt immer eine 0

Ich würde mit 'echo $heimergebnis;' bzw. 'echo $spielstr;' überprüfen, an welcher Stelle im Code der Fehler entsteht

06.12.2012 17:55

3 tobi

wenn ich nun
    $res = '';
  while(!feof($fp)) {
      $res .= fgets($fp, 128);
  }

  fclose($fp);
mache, dann bleibt die seite gänzlich leer

06.12.2012 18:08

4 tobi

Nachtrag, noch mit der Notice: Undefined variable: res meldung

Quelltext aus Orginalseite ist:
<tr>
    
          <td nowrap="nowrap">
            Fr.
          </td>
          <td nowrap="nowrap">
            14.09.2012
          </td>
        
        
        <td nowrap="nowrap">
          
            17:00
            
          &nbsp;</td>
        
          <td class="center" nowrap="nowrap">
            
              
                <span alt="Spiellokalnummer (Heimverein)" title="Spiellokalnummer (Heimverein)">(1)</span>
              
            
            &nbsp; 
          </td>
        
        
        
          <td>
            51
          </td>
        
        
          <td nowrap="nowrap">Sm B</td>
        
        <td nowrap="nowrap">Mannschaft1</td>
        <td nowrap="nowrap">
          Mannschaft2 &nbsp;</td>
        <td class="center" nowrap="nowrap">
          
            <a alt="Bericht" title="Bericht" href="/example.php">
              <span>
                5:5
              </span>
            </a>
          &nbsp;</td>
        <td>&nbsp;</td>
        <td nowrap="nowrap">
          <img alt="Bericht ok" title="Bericht ok" src="/blub.gif" border="0" height="11" width="13">&nbsp; 
          <span></span>
        </td>
      </tr>
nach ausführen der phpdatei sieht der quelltext so aus:
Fr.
14.09.2012
17:00

51
Sm B
Mannschaft1
Mannschaft2
<span>
                5
:
5
              </span>
            </a>
          &nbsp;</td>
        <td>&nbsp;</td>
        <td nowrap="nowrap">
          <img alt="Bericht ok" border="0" title="Bericht ok" src="/blub.gif" width="13" height="11" />&nbsp;
irgendwie scheint der letzte Bereich nicht weg zu seien.

06.12.2012 19:28 | geändert: 06.12.2012 19:31

5 Jörg Kruse

Das Extrahieren mittels substr() und strpos() ist ein bischen umständlich und wohl auch fehleranfällig bei kleinen Änderungen im Code

Ich würde hier eher mit preg_match() operieren

<?php

$test = '<span>
                5
:
5
              </span>
            </a>
          &nbsp;</td>
        <td>&nbsp;</td>
        <td nowrap="nowrap">
          <img alt="Bericht ok" border="0" title="Bericht ok" src="/blub.gif" width="13" height="11" />&nbsp;
';

preg_match('#<span>[\s]+([0-9]+)[\s]+:[\s]+([0-9]+)[\s]+</span>#', $test, $matches);

echo $matches[1] . '<br/>' . $matches[2];

?>

ergibt bei mir:

5
5

das [\s]+ steht hierbei für ein oder mehrere Whitespaces, also Leerzeichen, Umbrüche, Tabulatoren

06.12.2012 20:43 | geändert: 06.12.2012 20:48

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]