Seite 1 von 2

hilfe! Node no longer exists

Verfasst: 25.01.2011, 21:12
von mano_negra
kann mir jemand mit einer php fehlermeldung helfen.

ich lasse das google-wetter auslesen und bekomme ab und zu folgende fehlermeldung:
Warning: website_wetter() [function.website-wetter]: Node no longer exists in E:\webseiten\xxxxx\index.php on line 308
zeile 308 sieht dann so aus:

Code: Alles auswählen

$wetter[0]['wind'] = utf8_decode($api->weather->current_conditions->wind_condition->attributes()->data);
das ist jetzt wenig code, aber bei bedarf poste ich mehr.
es werden die xml-daten der google -wetter api ausgegeben.

ich hab ein bisschen gegooglet aber ich bin müde und verstehe es nicht wirklich.

ein xml-php spezialist hier der mir weiterhelfen kann?

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 25.01.2011, 22:28
von DanielS
Du kannst Dich durchhangeln um rauszufinden, was fehlt:

Code: Alles auswählen

print_r($api->weather->current_conditions->wind_condition->attributes()->data);
print_r($api->weather->current_conditions->wind_condition->attributes());
print_r($api->weather->current_conditions->wind_condition);
print_r($api->weather->current_conditions);
print_r($api->weather);
print_r($api);
Aber mach das lieber erst wenn Du nicht mehr so müde bist ;)

Verfasst: 26.01.2011, 16:28
von mano_negra
was bringt mir das wenn ich raus find was fehlt?

es fehlt ja nicht immer was. ich möchte die fehlermeldung loswerden, die ja nicht immer kommt.

problem ist dass ich momentan keine zeit habe mich damit wirklich auseinanderzusetzen. erst ab nächster woche wieder.
aber wenn einer in der zwischenzeit einen tipp hat...

Verfasst: 26.01.2011, 16:40
von Synonym
ich möchte die fehlermeldung loswerden, die ja nicht immer kommt.
Dann prüfe doch einfach ob das Node überhaupt existiert bevor Du es weiterverarbeitest.

Verfasst: 27.01.2011, 09:23
von DanielS
mano_negra hat geschrieben:was bringt mir das wenn ich raus find was fehlt?
Dann kannst Du, wie Synonym schon geschrieben hat, damit lernen umzugehen ;)

Verfasst: 27.01.2011, 09:26
von kreditkarte-mastercard
Wenn von der Quelle was fehlt, nutzt im das garnix wenn er weis was fehlt. Das erledigt sich von alleine von der auszulesenden Quelle.

Verfasst: 27.01.2011, 09:33
von Synonym
Wenn von der Quelle was fehlt, nutzt im das garnix wenn er weis was fehlt.
Doch tut es! Er will die Fehlermeldung nicht mehr haben. Will aber auch das Wetter darstellen.

Wenn nun in der Quelle was fehlt, dann muss man das eben vorher prüfen. Merkt man, dass es fehlt, dann die Weiterverarbeitung von diesem Element stoppen -> keine Fehlermeldung. Dann kann man auch entscheiden, ob es ein wichtiges Element ist oder nicht.

Ist es ein elementarer Wert, dann müsste man eventuell sogar die komplette Verarbeitung stoppen, denn was bringt einem eine Wetteranzeige, wenn die Wetterdaten fehlen?

Verfasst: 27.01.2011, 09:33
von DanielS
kreditkarte-mastercard hat geschrieben:Wenn von der Quelle was fehlt, nutzt im das garnix wenn er weis was fehlt. Das erledigt sich von alleine von der auszulesenden Quelle.
Er will, dass die Fehlermeldung nicht angezeigt wird, also wird er schon wissen, was er dafür zu tun hat, wenn der Knoten fehlt.

Verfasst: 27.01.2011, 09:35
von kreditkarte-mastercard
Klar das ist schon richtig nur wie willst den das ganze stoppen bevor es eintrifft?

Das war seine Frage ja. Wenn du andere Quellen auf ne Seite hast die Werbung ausliefern und bei aufruf der Seite nicht / oder langsamm nur aufbauen haste das gleiche Problem doch.

Direkt da was stoppen oder so wäre schon schwierig.

Timeout setzen mit verlinkung zu neuer Quelle aber geht

Verfasst: 27.01.2011, 10:07
von Synonym
Also irgendwie redest Du hier von was ganz anderem....

Externe Quellen, die direkt eingebunden werden kann man natürlich nicht auf dem eigenen Server stoppen.

Es geht hier aber um ein eigenes Script, das per API xml Daten empfängt. Innerhalb dieser empfangenen Daten kann man 100% prüfen ob alles das vorhanden ist was man braucht oder eben nicht. Selbst ob die Verbindung zur API überhaupt möglich war kann man prüfen.

Es geht hier ja um eigene Scripte, die den Fehler anzeigen, nicht um externe, die den Fehler senden.

Bei mano_negra wäre es also durchaus möglich, dass Daten vom Wetter empfangen wurden, aber keine zum Wind und genau das kann man vorher prüfen.
wie willst den das ganze stoppen bevor es eintrifft?
Der Fehler tritt erst ein, wenn man auf etwas zugreift was nicht existiert. Prüft man ob es nicht existiert, existiert es nicht, dann greift man einfach nicht drauf zu. Schon ist der Fehler weg.

In einem RSS-Feed kann man auch nicht davon ausgehen, dass bei jedem Eintrag ein Bild dabei ist. Also muss man da auch vorher prüfen ob oder ob nicht.

Verfasst: 27.01.2011, 10:10
von kreditkarte-mastercard
Ok eigene Scripte sind natürlich was anderes. Da stand oben auch nix von. Sorry

Verfasst: 27.01.2011, 10:12
von Synonym
wie da stand nix von?
zeile 308 sieht dann so aus:
Code:
$wetter[0]['wind'] = utf8_decode($api->weather->current_conditions->wind_condition->attributes()->data);
Meinst Du, mano_negra hat Zugriff auf das PHP-File bei Google ;-)

Verfasst: 27.01.2011, 10:15
von kreditkarte-mastercard
Das meinte ich ja nicht. Es gibt scripte von G die bindest nur ein. Das meinte ich.

Bei eigenen Scripten hat man da schon erher Möglichkeiten den Fehler zu finden.

Verfasst: 27.01.2011, 10:21
von Synonym
Ja und?

Selbst wenn es keine eigene Entwicklung ist, sondern ein fertiges Script von Google, ist doch egal.... Sobald es auf dem eigenen Server ist kann man es auch bearbeiten.

Verfasst: 27.01.2011, 10:48
von kreditkarte-mastercard
Aber auch nur dann und damit hast dir doch schon selbst die Lösung gegeben. Das ist noch ange nicht bei allen Scripten so. :wink: