Erreur alors que le script marche très bien
Résolu
canarder
Messages postés
2034
Statut
Membre
-
canarder Messages postés 2034 Statut Membre -
canarder Messages postés 2034 Statut Membre -
Bonjour, j'ai créé un petit script vite fait qui parse un xml :
Mais cette erreur s'affiche (avant le tableau mais après dans le code html) :
Mais le script marche très bien, c'est ça que je comprend pas. Je ne peux pas écrire après ma boucle for. Au pire je cache les erreurs avec error_reporting(0); (ligne 2), mais ça ne résolue pas l'erreur.
Merci pour votre aide.
--
๑۩۞۩๑ canarder ๑۩۞۩๑
Le Renard qui règne sur le WEB : Firefox
<?php //error_reporting(0); $xml = "http://www.hordes.fr/xml?k=c98ddc0a7054458c0614d22d00be9536"; $dom = new DOMDocument(); if (!$dom->load($xml)) { exit("erreur"); } $citizen = $dom->getElementsByTagName("citizen"); $nbrCitoy = $citizen->length; echo "<style>tr, th, td {border:1px solid black;}</style>"; echo "<table>\n<tr style=\"background:#FF00FF;\"><th>Joueur</th><th>Banni ?</th><th>Dehors ?</th><th>Maison</th></tr>\n"; for($i=0;$i<=$nbrCitoy;$i++) { if($citizen->item($i)->getAttribute("name")=="MonsieurMechant" OR $citizen->item($i)->getAttribute("name")=="ledragonducoin" OR $citizen->item($i)->getAttribute("name")=="mad05" OR $citizen->item($i)->getAttribute("name")=="ErEiCrOs" OR $citizen->item($i)->getAttribute("name")=="dashing") { echo "<tr>"; echo "<td>".$citizen->item($i)->getAttribute("name")."</td>"; if($citizen->item($i)->getAttribute("ban")=="0") echo "<td>Non</td>"; else echo "<td style=\"color:red;\">Oui</td>"; if($citizen->item($i)->getAttribute("out")=="1") echo "<td style=\"color:green;\">Oui</td>"; else echo "<td>Non</td>"; if($citizen->item($i)->getAttribute("baseDef")>1) echo "<td style=\"color:red;\">Taudis ou plus</td>"; elseif($citizen->item($i)->getAttribute("baseDef")==1) echo "<td style=\"color:green;\">Tente</td>"; else echo "<td>Normale</td>"; echo "</tr>\n"; } } echo "</table>"; ?>
Mais cette erreur s'affiche (avant le tableau mais après dans le code html) :
Fatal error: Call to a member function getAttribute() on a non-object in *** on line 13
Mais le script marche très bien, c'est ça que je comprend pas. Je ne peux pas écrire après ma boucle for. Au pire je cache les erreurs avec error_reporting(0); (ligne 2), mais ça ne résolue pas l'erreur.
Merci pour votre aide.
--
๑۩۞۩๑ canarder ๑۩۞۩๑
Le Renard qui règne sur le WEB : Firefox
A voir également:
- Erreur alors que le script marche très bien
- Mas script - Accueil - Windows
- Iptv erreur de lecture - Forum TV & Vidéo
- Erreur 0x80070570 ✓ - Forum Windows 10
- Erreur s3 bbox - Forum Bbox Bouygues
- Script vidéo youtube - Guide
1 réponse
Salut !
On s'est déjà vus à propos de Hordes je crois :)
Alors analysons l'erreur. La ligne 13 :
Le problème est un appel à la méthode getAttribute() sur quelque chose qui n'est pas un objet, en l'occurence $citizen->item($i).
Ta boucle for fait un tour de trop : quand $i est égal à $nbCitoy, $citizen->item($i) renvoie null, du coup c'est comme si tu faisais null->getAttribute("name").
Remplace le <= par un < strict.
;)
On s'est déjà vus à propos de Hordes je crois :)
Alors analysons l'erreur. La ligne 13 :
if($citizen->item($i)->getAttribute("name")=="MonsieurMechant" OR
Le problème est un appel à la méthode getAttribute() sur quelque chose qui n'est pas un objet, en l'occurence $citizen->item($i).
Ta boucle for fait un tour de trop : quand $i est égal à $nbCitoy, $citizen->item($i) renvoie null, du coup c'est comme si tu faisais null->getAttribute("name").
Remplace le <= par un < strict.
;)
EDIT : ah non ça part de 0, c'est vrai ...