Einfache if Abfrage

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

  • Guenni61
    antwortet
    Hi ezzywave,

    ich glaub' du verstehst nicht, worauf ich hinaus will,oder ich kann dir nicht folgen.

    Meine Frage: $neu kann also niemals 0 sein? hast du mit ja beantwortet.

    Jetzt guck' dir in deinem gepostetem Code die Reihenfolge deiner Bedingungen an.

    Wenn $alt == 0 ist, und $neu ebenfalls 0 sein kann, so wird dieser Teil . . .
    PHP-Code:
    elseif ($alt == 0

    echo 
    "<strong><span style=\"color: #00a400;\">NEU</strong>"

    . . . nicht mehr berücksichtigt, weil du ja vorher auf Gleichheit prüfst, womit die Bedingung erfüllt wäre, wenn beide 0 sind.
    PHP-Code:
    $neu 0;
    $alt 0;
    if (
    $neu $alt
        { 
        echo 
    "Hoch"
        } 
        elseif (
    $neu === $alt
        { 
        echo 
    "Gleich"
        }
        
    /*
        * *** DIESER ZWEIG WIRD NICHT AUSGEFÜHRT, WENN BEIDE NULL SIND ***
        */
        
    elseif ($alt == 0
        { 
        echo 
    "Neu"
        } 
        else 
        { 
        echo 
    "Runter"
        } 
    Er soll aber ausgeführt werden, wenn $alt == 0 ist. Deshalb musst du diese Prüfung vor der Prüfung auf Gleichheit vornehmen.

    Gruß
    Günni

    Einen Kommentar schreiben:


  • ezzywave
    antwortet
    Zitat von Guenni61 Beitrag anzeigen
    Hi ezzywave,

    nur interessehalber . . .

    du vergleichst $neu == $alt vor $alt == 0.

    $neu kann also niemals 0 sein?

    Gruß
    Günni
    Hi Günni.

    Doch, ich bekomme ich aus der XML für "Neueinstiege" eine 0 bei $alt vorgegeben.
    Hierbei vergleiche ich die Platzierungen in den Charts.
    Gestiegen, Gefallen, Gleich, Neu
    Aktuelle Woche und die der Vorwoche - Als Tendenz mit einer Grafik dargestellt zur Verdeutlichung.

    Grüße,
    Johannes

    Einen Kommentar schreiben:


  • Guenni61
    antwortet
    Hi ezzywave,

    nur interessehalber . . .

    du vergleichst $neu == $alt vor $alt == 0.

    $neu kann also niemals 0 sein?

    Gruß
    Günni

    Einen Kommentar schreiben:


  • ezzywave
    antwortet
    Funktioniert

    Danke für den Tipp Günni.

    Ich habs jetzt nochmal auf basis der funktionierenden abfrage geschrieben.

    PHP-Code:
    <?php
        $alt 
    "".$item->lastweek."";
        
    $neu "".$item->thisweek."";
        if (
    $neu $alt)
        {
        echo 
    "<h5><span style=\"color: #00a400;\"><i class=\"icon-circle-arrow-up\"></i></h5>";
        }
        elseif (
    $neu === $alt)
        {
        echo 
    "<h5><span style=\"color: #ecc300;\"><i class=\"icon-circle-arrow-left\"></i></h5>";
        }
        elseif (
    $alt == 0)
        {
        echo 
    "<strong><span style=\"color: #00a400;\">NEU</strong>";
        }
        else
        {
        echo 
    "<h5><span style=\"color: #cf1600;\"><i class=\"icon-circle-arrow-down\"></i></h5>";
        }
        
    ?>
    Nun Funktioniert alles wie es soll ... Danke für die Hilfe

    Einen Kommentar schreiben:


  • Guenni61
    antwortet
    Hi ezzywave,

    kleiner Haken:

    Wenn du vorher schon abfragst, ob $neu größer als $alt ist,
    so wird dieser Code . . .
    PHP-Code:
    . . .
    elseif (
    $alt == 0
            { echo 
    "neu"; } 
    nie ausgeführt. Auch nicht, wenn $neu auch 0 wäre. Denn dann sind sie ja gleich.

    Du müsstest also diesen Zustand als erstes abfragen. Den letzten Vergleich kannst du dir auch sparen.
    Wenn von 4 Zuständen 3 nicht zutreffen, so kannst du ohne Vergleich die Ausgabe vornehmen.

    PHP-Code:
    $alt rand(05); 
    $neu rand(05);
    echo 
    'Alt: '.$alt.'<br>';
    echo 
    'Neu: '.$neu.'<br>';
    if (
    $alt == 0
    { echo 
    "Neu"; } 
    elseif (
    $neu $alt
    { echo 
    "Hoch"; } 
    elseif (
    $neu $alt
    { echo 
    "Runter"; } 
    else { echo 
    "Gleich"; } 
    Gruß
    Günni

    Einen Kommentar schreiben:


  • ezzywave
    antwortet
    Habe in dem selben Script nun noch eine in der Spalte davor,
    welche die aktuelle Position anzeigt und diese noch einfärben soll,
    wenn diese sich im bereich 1-5 und 6-10 bewegen, die restlichen aber normal anzeigt.

    diese funktioniert komischer weise einwandfrei.
    obwohl ich dort eigentlich nix anderes mache ..

    PHP-Code:
    <?php 
        
    if ($item->thisweek <= 5)
            { 
            echo 
    "<span style=\"color: #9b207a;\">".$item->thisweek.".</span>";
            }
            elseif (
    $item->thisweek && $item->thisweek <= 10)
            {
            echo 
    "<span style=\"color: #ff0000;\">".$item->thisweek.".</span>";
            }
            else 
            {
            echo 
    "".$item->thisweek.".";
            } 
    ?>

    Einen Kommentar schreiben:


  • ezzywave
    antwortet
    Also wenn ich die Werte einfach ausgeben lasse, bekomme ich ja
    wie erwartet beim ersten die aktuelle position mit 1 ausgegeben
    und die alte position (lastweek) 3
    dennoch sollte das dann ja eigendlich funktionieren, denn 1 und 3 sind ja nicht gleich ...

    PHP-Code:
    object(SimpleXMLElement)#6 (1) {
      
    [0]=>
      
    string(1"1"
    }
    object(SimpleXMLElement)#5 (1) {
      
    [0]=>
      
    string(1"3" 

    Einen Kommentar schreiben:


  • h3ll
    antwortet
    PHP-Code:
    var_dump($neualt);

    if (
    $neu $alt) {
        echo 
    "runter";
    } elseif (
    $neu $alt) {
        echo 
    "hoch";
    } elseif (
    $alt == $neu) {
        echo 
    "gleich";
    } elseif (
    $alt == 0) {
        echo 
    "neu";

    Was kommt hier als Ausgabe und was würdest du stattdessen erwarten?

    Einen Kommentar schreiben:


  • ezzywave
    antwortet
    Also wenn ich direkt von $item ausgehe sagt er mir dies hier
    (von dem ersten jetzt ... habe davon 50 items

    Code:
    gleichobject(SimpleXMLElement)#4 (6) { ["thisweek"]=> string(1) "1" ["lastweek"]=> string(1) "3" ["weeknumber"]=> string(1) "4" ["artist"]=> object(SimpleXMLElement)#7 (0) { } ["title"]=> object(SimpleXMLElement)#8 (0) { } ["image"]=> object(SimpleXMLElement)#9 (0) { } }
    wenn du diesen meintest

    lastweek und thisweek spuckt sonst direkt eben zahlen von 0-50 aus.
    wobei 0 bei neuen öfter vorkommt.

    Einen Kommentar schreiben:


  • h3ll
    antwortet
    Was ergibt die Debug-Ausgabe mit var_dump()?

    Einen Kommentar schreiben:


  • ezzywave
    hat ein Thema erstellt Einfache if Abfrage.

    Einfache if Abfrage

    Hi Leute ...

    Entweder steh ich grad übelst auf dem Schlauch,
    oder irgendwas läuft wirklich schief

    2 Werte vergleichen

    Ich lese zwei werte aus einer xml datei (Position 1, Position 2)
    Beide sind zahlen 0-50.

    Er gibt mir aber immer "gleich" aus, als würden ihn > oder < nicht interessieren.

    PHP-Code:
    $alt $item->lastweek;
    $neu $item->thisweek;

    if (
    $neu $alt)
            { echo 
    "runter"; }

        elseif (
    $neu $alt)
            { echo 
    "hoch"; }
            
        elseif (
    $alt == $neu)
            { echo 
    "gleich";  }

        elseif (
    $alt == 0)
            { echo 
    "neu"; } 
    Sry, mir ist das schon fast peinlich ...
    Aber kann mir da einer sagen was ich falsch gemacht hab ?
    Sämtliche Lektüre sagt mir immer genau dies, aber es geht nicht ...

    Gruß Johannes
Lädt...
X