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.
<?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.
A voir également:
- Erreur alors que le script marche très bien
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Erreur t32 ✓ - Forum Livebox
- Dans la table des matières du document à télécharger, le chapitre 6 et ses 2 sections n'apparaissent pas. trouvez l'erreur dans la structure du document et corrigez-la. mettez à jour la table des matières. quel est le mot formé par les lettres en majuscules de la table des matières après sa mise à jour ? - Forum Word
- Erreur 0x80070643 - Accueil - Windows
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 ...