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

  • 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

  • #2
    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

    Kommentar


    • #3
      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 ....
      "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

      Kommentar


      • #4
        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) { } }

        Kommentar


        • #5
          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;

          "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

          Kommentar


          • #6
            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

            Kommentar


            • #7
              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
              "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

              Kommentar

              Lädt...
              X