Ankündigung

Einklappen
Keine Ankündigung bisher.

xml abfrage fehler

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • knall
    hat ein Thema erstellt xml abfrage fehler.

    xml abfrage fehler

    hallo,
    ich habe ein kleines ziemlich lästiges problem, ich finde den fehler in meinem script nicht
    PHP-Code:
    //die $level variable hat den wert 1
    $jobs simplexml_load_file('xml/jobs.xml');
    $size count($jobs);
    for(
    $i=0;$i $size;$i++)
    {
        if(
    $jobs->job[$i]->lvl <= $level)//in der schleife muss der wurm stecken
        
    {echo "hier komm ich nie hin";
        
    $jobname $jobs->job[$i]->name;}

    zugehörige xml datei
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <jobs>
        <job>
            <lvl>1</lvl>
            <name>Lieferdienst</name>
            <description>Sie liefern aus</description>
        </job>
    </jobs>
    wäre super wenn jmd den fehler finden würde ... sitze da jetzt wirklich schon seid über ner stunde dran

    das komische ist, das ich das script bei ner andren datei anwende und es einwandfrei funktioniert
    PHP-Code:
    $levels simplexml_load_file('xml/levels.xml');
        
    $size count($levels);
        for(
    $i=0;$i $size;$i++)    
        {
            if(
    $levels->level[$i]->minimal_exp <= $exp)
            {
    $level $levels->level[$i]->digit;}    
        } 
    Code:
    <levels>
        <level>
            <digit>1</digit>
            <name>Anfänger</name>
            <minimal_exp>0</minimal_exp>
            <system_message></system_message>        
        </level>
    </levels>
    MfG Lukas

  • eagle275
    antwortet
    Rätsel passieren immer wieder

    PHP versucht natürlich den Typ weitgehend anzupassen (auto-convert) ..

    Theoretisch liefert if ("4"==4) ein TRUE - aber wenn er dabei rechnen muss, würd ich mich nicht mehr darauf verlassen und feste Typkonvertierungen einbauen

    Einen Kommentar schreiben:


  • knall
    antwortet
    das ist jetzt peinlich ... du hast recht und das intval manual war bei mir sogar als tab geöffnet ...
    vielen vielen dank
    mir bleibt allerdings die frage, warum es dann bei dem andren funktioniert (siehe post 1)

    MfG Lukas

    Einen Kommentar schreiben:


  • eagle275
    antwortet
    so .. dann hast du ja hoffentlich aus dem Dump dein Problem erkannt ....

    du bekommst "1" und willst dass es kleiner / gleich 1 ist .... und eigentlich müsstest du auch den job anders ansprechen weil der Index für job auch eine Zeichenkette ist


    ich würd es mal mit nem intval( ) um den vorderen Teil deiner if.abfrage versuchen

    PHP-Code:
    if (intval($jobs->job[$i]->lvl)<=$level) {
       
    $jobname $jobs->job[$i]->name;

    Einen Kommentar schreiben:


  • knall
    antwortet
    das hattich schon gemacht -> habs nur wieder rausgeholt, das der beitrag nicht so ewig lang wird -> hier nochmal mit variablenausgabe

    PHP-Code:
    echo "Level: ".$level."<br>";
    $jobs simplexml_load_file('xml/jobs.xml');
    $size count($jobs);
    echo 
    "Size: ".$size."<br>";
    for(
    $i=0;$i $size;$i++)
    {
        echo 
    "i: ".$i."<br>";
        echo 
    "joblvl: ".$jobs->job[$i]->lvl."<br>";
        if(
    $jobs->job[$i]->lvl <= $level)
        {echo 
    "hier komm ich nie hin";
        
    $jobname $jobs->job[$i]->name;}

    Ausgabe:
    Code:
    Level: 1
    Size: 1
    i: 0
    joblvl: 1
    MfG Lukas

    hier noch die dump ausgabe
    Code:
    object(SimpleXMLElement)#2 (2) { ["job"]=>  object(SimpleXMLElement)#3 (5) { ["lvl"]=>  string(1) "1" ["name"]=>  string(12) "Lieferdienst" ["description"]=>  string(15) "Sie liefern aus" ["exp_gain"]=>  string(1) "5" ["money_gain"]=>  string(1) "5" } ["comment"]=>  object(SimpleXMLElement)#5 (0) { } }

    Einen Kommentar schreiben:


  • eagle275
    antwortet
    und woher kommt der Wert für $level bzw $exp im 2ten Script ?

    dreh mal error-reporting hoch

    und zumindest versuchsweise fürs erste Script $level=5 ; .. damit du auch ne chance hast , in den Then-Zweig reinzugehen

    lass dir am Besten noch alle Beteiligten Variablen per Echo mal ausgeben / oder var_dump ....

    Einen Kommentar schreiben:


  • N4bla
    antwortet
    Kommst du denn in die for-schleife rein ?
    Mach mal nen echo "test"; oder sowas direkt am Anfang in der for-schleife ( noch vor dem if ).
    Vielleicht happerts auch am if

    MfG

    Einen Kommentar schreiben:

Lädt...
X