Ene keer goed geladen, andere keer niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Martijn van den Ende

Martijn van den Ende

09/07/2009 21:45:00
Quote Anchor link
Dag mensen,

Momenteel ben ik bezig met een site die gegevens moet halen uit de World of Warcraft Armory. Ik heb een class gemaakt die er als volgt uit ziet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
class loadXML
    {
    var
$xml;
    
    function
__construct($url, $define = "")
        {

        if($define == 1)
            {

            define("USE_CURL", true);
            }

        $ch = curl_init();
        $useragent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6";
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
        $rawxml = curl_exec($ch);
        curl_close($ch);
        $this->xml = simplexml_load_string($rawxml);
        }
    }

?>

Hierbij is $url de link naar de pagina en $define een bool afhankelijk of dit wel of niet de eerste keer is dat cURL geopend wordt.

Vervolgens roep ik deze class aan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$server
= new loadXML("http://www.wow-europe.com/realmstatus/index.xml", 1);
$guild = new loadXML("http://armory.wow-europe.com/guild-info.xml?r=Silvermoon&n=Hodirs+Hammer");
?>

Met $server haal ik informatie op of de Realm wel of niet online is, met $guild haal ik gegevens op uit de Armory van een guild. Vervolgens haal gebruik ik de XML gegevens (bijv. met foreach($guild->blabla as $blabla) etc.) om te verwerken in de site. Ik test alles lokaal en daar werkt het prima, maar wanneer ik deze upload naar een andere server, werkt het wel om de server informatie te verwerken, maar bij het verwerken van de guild gegevens doet ie of niets, of kapt halverwege de pagina af (zie www.n-dsign.com/?p=members als voorbeeld).

Ik heb werkelijk geen idee waarom de eerste aanroep wel werkt, maar de tweede niet. Als ik echter een 'kale' testversie gebruik (www.n-dsign.com/testxml.php) werkt het prima. Weet iemand wat hier mis gaat?
Gewijzigd op 01/01/1970 01:00:00 door Martijn van den Ende
 
PHP hulp

PHP hulp

09/11/2024 03:41:40
 
Jelmer -

Jelmer -

09/07/2009 23:27:00
Quote Anchor link
Zet eens boven aan index.php (ik neem aan dat je via $_GET[p] een script include in index.php) deze regeltjes:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
error_reporting(E_ALL);
ini_set('display_errors', true);
?>

Nu zouden alle foutjes zichtbaar moeten worden, want je probleem vertoont alle symptomen van een php fatal error, behalve de foutmelding zelf :)
 
Martijn van den Ende

Martijn van den Ende

10/07/2009 00:26:00
Quote Anchor link
Staat erin, ik krijg nu het volgende te zien:

(in sidebar): Warning: Invalid argument supplied for foreach() in /var/www/vhosts/n-dsign.com/httpdocs/sidebar_left.php on line 8

(in members.php): Fatal error: Cannot use object of type loadXML as array in /var/www/vhosts/n-dsign.com/httpdocs/members.php on line 2

Inderdaad een fatal error, maar lokaal heeft hij deze error niet, en bij het verwerken van de server status gegevens (wat op exact dezelfde manier werkt) krijg ik dit ook niet.
 
Jelmer -

Jelmer -

10/07/2009 10:57:00
Quote Anchor link
Hoe ziet je members.php eruit, en dan vooral de regeltjes rond (en inclusief natuurlijk :P) regel 2?
 
Martijn van den Ende

Martijn van den Ende

10/07/2009 13:08:00
Quote Anchor link
Code van de classes.php heb je al (hierboven). Dit staat er in de index.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$guild
= new loadXML("http://armory.wow-europe.com/guild-info.xml?r=Silvermoon&n=Hodirs+Hammer");
$members = $guild->xml->guildInfo->guild->members;
?>

En dit in members.php (volledige code)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo "Total membercount: ".$members["memberCount"]."<br /><br />";
?>

<table>
<tr>
<td><b>Name:</b></td><td><b>Race:</b></td><td><b>Class:</b></td><td><b>Lvl:</b></td><td><b>Rank:</b></td>
</tr>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php

foreach($members->character as $member)
    {

    $name = $member["name"];
    $race = raceId($member["raceId"]);
    $class = classId($member["classId"]);
    $level = $member["level"];
    $rank = rankId($member["rank"]);
    echo "<tr><td>".$name."</td><td>".$race."</td><td>".$class."</td><td>".$level."</td><td>".$rank."</td></tr>\n";
    }

?>

</table>
 
Martijn van den Ende

Martijn van den Ende

11/07/2009 11:58:00
Quote Anchor link
Iemand een idee?
 
Jelmer -

Jelmer -

11/07/2009 14:20:00
Quote Anchor link
Zet vóór regel 2 van members.php eens
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
var_dump($members);
?>


Ik heb het idee dat die $members niet dezelfde inhoud heeft als dat wat jij toewijst aan $members in index.php. Doe je soms ergens $members=new loadXML(..); ?
 
Martijn van den Ende

Martijn van den Ende

11/07/2009 17:32:00
Quote Anchor link
Resultaat:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
object(SimpleXMLElement)#12 (2) { ["@attributes"]=>  array(1) { ["memberCount"]=>  string(1) "2" } ["character"]=>  array(2) { [0]=>  object(SimpleXMLElement)#10 (1) { ["@attributes"]=>  array(8) { ["achPoints"]=>  string(3) "510" ["classId"]=>  string(1) "2" ["genderId"]=>  string(1) "0" ["level"]=>  string(2) "71" ["name"]=>  string(8) "Orvathar" ["raceId"]=>  string(1) "1" ["rank"]=>  string(1) "0" ["url"]=>  string(23) "r=Silvermoon&n=Orvathar" } } [1]=>  object(SimpleXMLElement)#14 (1) { ["@attributes"]=>  array(8) { ["achPoints"]=>  string(4) "1220" ["classId"]=>  string(1) "6" ["genderId"]=>  string(1) "0" ["level"]=>  string(2) "80" ["name"]=>  string(7) "Halling" ["raceId"]=>  string(1) "4" ["rank"]=>  string(1) "2" ["url"]=>  string(22) "r=Silvermoon&n=Halling" } } } }
?>


Het is niet te geloven... Nu pakt ie members.php wel goed, d.w.z. geen problemen met laden, geen errors, terwijl ik helemaal niets heb gedaan, maar nog steeds krijg ik een ongewenste error in de sidebar.
Gewijzigd op 01/01/1970 01:00:00 door Martijn van den Ende
 
Martijn van den Ende

Martijn van den Ende

15/07/2009 15:00:00
Quote Anchor link
Nog meer ideeën? Zou het aan de functie simple_xml_load_string() kunnen liggen?
 
GaMer B

GaMer B

15/07/2009 15:05:00
Quote Anchor link
Ik denk eerder aan de website waar je het vandaan haalt. Misschien krijg je eent time-out o.i.d.
 
Martijn van den Ende

Martijn van den Ende

16/07/2009 11:06:00
Quote Anchor link
Hoor ik hiervoor niet een error message the krijgen?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.