simple for-schleife

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

  • simple for-schleife

    Mahlzeit,

    kurze Frage vorweg. Warum findet man im forum keine einträge wenn man in der suche nach FOR sucht ? Sonst hätte ich das dort irgendwo mit reingepostet


    nun zu meinem problem:
    hier der php code
    PHP-Code:
    $daten[$userid][awardtext] = "";
    $daten[$userid][awards] = $row->user_awards// wird aus einer Datenbank ausgelesen

    for($i $daten[$userid][awards]; $i 0; )
        {
        if(
    $i >= 50)
            {
            
    $daten[$userid][awardtext] = $daten[$userid][awardtext].'<img src="images/page/sterngruen.gif" border="0">';
            
    $i $i 50;
            }
        elseif(
    $i >= 10)
            {
            
    $daten[$userid][awardtext] = $daten[$userid][awardtext].'<img src="images/page/sterngelb.gif" border="0">';
            
    $i $i 10;
            }
        elseif(
    $i >= 5)
            {
            
    $daten[$userid][awardtext] = $daten[$userid][awardtext].'<img src="images/page/sternblau.gif" border="0">';
            
    $i $i 5;
            }
        elseif(
    $i >= 1)
            {
            
    $daten[$userid][awardtext] = $daten[$userid][awardtext].'<img src="images/page/sternrot.gif" border="0">';
            
    $i $i 1;
            }
        } 
    $daten[$userid][awards] ist eine Zahl die größer als 0 ist. Das auslesen dieser Zahl klappt auch ohne Probleme.
    Mit der schleife möchte ich erreichen, dass je nach größe dieser zahl bestimmte Bilder dargestellt werden. also wenn jmd 10 awardpunkte hat, bekommt er einen gelben Stern. Hat er zB 11 Awardpunkte, so sollte er einen gelben und einen roten Stern bekommen.
    Das soll in $daten[$userid][awardtext] gespeichert werden. Diese VAR wird vorher festgelegt - wie ihr oben sehen könnt.

    Wenn ich das ganze nun ausgeben möchte, ist $daten[$userid][awardtext] immer noch leer. Warum ?
    Zuletzt geändert von DasUNBEKANNTe; 22.10.2005, 18:26.

  • #2
    kurze Frage vorweg. Warum findet man im forum keine einträge wenn man in der suche nach FOR sucht ?
    FOR klingt doch sehr nach einem reservierten/sehr häufigen wort.

    benötigt ne for-schleife nicht 3 parameter???

    Wieso einfach, wenns auch schwer geht???

    PHP-Code:
    $daten[$userid][awardtext] = "";
    $daten[$userid][awards] = $row->user_awards// wird aus einer Datenbank ausgelesen

    $i $daten[$userid][awards];

    if(
    $i >= 50)
    {
            
    $daten[$userid][awardtext] = $daten[$userid][awardtext].
    '<img src="images/page/sterngruen.gif" border="0">';
    }
    if(
    $i >= 10)
    {
            
    $daten[$userid][awardtext] = $daten[$userid][awardtext].
    '<img src="images/page/sterngelb.gif" border="0">';
    }
    if(
    $i >= 5)
    {
            
    $daten[$userid][awardtext] = $daten[$userid][awardtext].
    '<img src="images/page/sternblau.gif" border="0">';
    }
    if(
    $i >= 1)
    {
            
    $daten[$userid][awardtext] = $daten[$userid][awardtext].
    '<img src="images/page/sternrot.gif" border="0">';

    Kommentar


    • #3
      wie soll dabei dann jmd mit 11 punkten einen gelben und einen roten stern bekommen ? der würde ja nur einen gelben bekommen und nich mehr

      Kommentar


      • #4
        wie soll dabei dann jmd mit 11 punkten einen gelben und einen roten stern bekommen ? der würde ja nur einen gelben bekommen und nich mehr
        Quatsch! Du hast meinen Code nicht wirklich nachvollzogen. Sonst wäre dir der tatsächliche Fehler aufgefallen. Nämlich, dass auch ein Blauer stern angezeigt wird.

        Kurze zwischenfrage: Ist es so gedacht, dass ich bei 10.000 Punkten etwa 200 grüne sterne angezeigt bekomme?

        Kommentar


        • #5
          PHP-Code:
          $daten[$userid][awardtext] = "";
          $daten[$userid][awards] = $row->user_awards// wird aus einer Datenbank ausgelesen

          $i $daten[$userid][awards];

          while(
          $i >0)
          {
            if(
          $i >= 50)
            {
              
          $daten[$userid][awardtext] = $daten[$userid][awardtext].
                
          '<img src="images/page/sterngruen.gif" border="0">';
              
          $i-= 50;
            }
            elseif(
          $i >= 10)
            {
              
          $daten[$userid][awardtext] = $daten[$userid][awardtext].
                
          '<img src="images/page/sterngelb.gif" border="0">';
              
          $i $i 10;
            }
            
          // etc, pp...

          Kommentar


          • #6
            Original geschrieben von TobiaZ
            Quatsch! Du hast meinen Code nicht wirklich nachvollzogen. Sonst wäre dir der tatsächliche Fehler aufgefallen. Nämlich, dass auch ein Blauer stern angezeigt wird.

            Kurze zwischenfrage: Ist es so gedacht, dass ich bei 10.000 Punkten etwa 200 grüne sterne angezeigt bekomme?
            ich glaub dann hätte ich andere werte genommen die awardpunkte sind derzeit bei max 30 ... und sie steigen auch nich so schnell
            du kannst dir das gern hier angucken.


            mit der while schleife funzt es so wie es soll. vielen dank dafür.
            nur für mein verständnis ... warum gehts nich auch mit for-schleife ? kannste mir das evtl. erklären ?


            EDIT:
            kannste mir evtl. noch bei einem anderen Problem helfen ? Und zwar kann ich hier auch nach Usernamen sortieren. Das funktioniert allerdings mit einem kleinen "Fehler"
            das script sortiert erst von A-Z und danach von a-z
            kann man das beeinflussen, dass auch die klein geschrieben sachen bei A-Z berücksichtigt werden ? also ...

            A
            A
            a
            b
            C
            c

            usw.

            hier der code zum sortieren:
            PHP-Code:
            foreach($daten as $res)
                    {
                    if(!isset(
            $_GET[order]))
                        { 
            $_GET[order] = "awards"$_GET['sort'] = "DESC"; }
                                
                    if(
            $_GET[order] == "awards")
                        { 
            $order1[] = $res[awards]; }
                    elseif(
            $_GET[order] == "team")
                        { 
            $order1[] = $res[team]; }
                    elseif(
            $_GET[order] == "entry")
                        { 
            $order1[] = $res[dabei]; }
                    elseif(
            $_GET[order] == "nick")
                        { 
            $order1[] = $res[user_name]; }
                    }
                
                if(
            $_GET['sort'] == "DESC"
                    { 
            array_multisort($order1SORT_DESC$daten); }
                else
                    { 
            array_multisort($order1SORT_ASC$daten); }
                } 
            Zuletzt geändert von DasUNBEKANNTe; 22.10.2005, 19:56.

            Kommentar


            • #7
              nur für mein verständnis ... warum gehts nich auch mit for-schleife ? kannste mir das evtl. erklären ?
              Es geht auch mit einer For-Schleife. Nur muss die richtig aufgebaut sein.

              Guck dir deine nochmal an. Das wäre das gleiche, als wenn ich schreibe

              PHP-Code:
              while($i=0
              Verstehst, was sache ist?

              Kommentar


              • #8
                wirklich verstehen tue ich es nicht. nach meinem verständnis läuft von (zb) von 33 bis zu 0 ... nach jeder aktion sollte $i verringern werden

                also das gleiche als wenn ich schreibe (nur n bsp)
                PHP-Code:
                for($i 0$i 15; ++$i

                kannst du dir bitte auch noch folgendes angucken? hatte ich oben schon mal gepostet:
                EDIT:
                kannste mir evtl. noch bei einem anderen Problem helfen ? Und zwar kann ich hier auch nach Usernamen sortieren. Das funktioniert allerdings mit einem kleinen "Fehler"
                das script sortiert erst von A-Z und danach von a-z
                kann man das beeinflussen, dass auch die klein geschrieben sachen bei A-Z berücksichtigt werden ? also ...

                A
                A
                a
                b
                C
                c

                usw.

                hier der code zum sortieren:
                PHP-Code:
                foreach($daten as $res)
                        {
                        if(!isset(
                $_GET[order]))
                            { 
                $_GET[order] = "awards"$_GET['sort'] = "DESC"; }
                                    
                        if(
                $_GET[order] == "awards")
                            { 
                $order1[] = $res[awards]; }
                        elseif(
                $_GET[order] == "team")
                            { 
                $order1[] = $res[team]; }
                        elseif(
                $_GET[order] == "entry")
                            { 
                $order1[] = $res[dabei]; }
                        elseif(
                $_GET[order] == "nick")
                            { 
                $order1[] = $res[user_name]; }
                        }
                    
                    if(
                $_GET['sort'] == "DESC"
                        { 
                array_multisort($order1SORT_DESC$daten); }
                    else
                        { 
                array_multisort($order1SORT_ASC$daten); }
                    } 
                [/B]
                Zuletzt geändert von DasUNBEKANNTe; 31.10.2005, 15:33.

                Kommentar


                • #9
                  PHP-Code:
                  for($i 0$i 15; ++$i
                  du machst schon wieder den gleichen fehler: So lange $i = 15 ist. I wird vorher mit 0 definiert. Wie lange glaubst du ist i also 15??? ja, zum programmieren gehört ein bisschen logik!

                  Zum Edit: Warum sortierst du nicht mysql-seitig?

                  Kommentar


                  • #10
                    $i wird bei jedem durchlauf um 1 erhöht, bis $i = 15. dann bricht die schleife ab ODER NICHT ?
                    ich werd montag auch gleich mal in die stadt. vielleicht ham die in irgend nem laden nochn bissl LOGIK.

                    Kommentar


                    • #11
                      $i wird bei jedem durchlauf um 1 erhöht, bis $i = 15. dann bricht die schleife ab ODER NICHT ?
                      Jetzt lies doch bitte mal das manual anstatt dich noch weiter zu blamieren... Ein einfacher Test sollte dich ebenfalls vom gegenteil überzeugen.

                      Besonders spannend, dass du dein wissen auch noch verkaufst
                      Zuletzt geändert von TobiaZ; 22.10.2005, 20:43.

                      Kommentar


                      • #12
                        ok, es muss <= 15 heißen
                        werd mich trotzdem montag gleich auf die socken machen. ich hoffe, sowas gibts noch zu kaufen

                        Besonders spannend, dass du dein wissen auch noch verkaufst
                        cool wa, auch ohne grips, kann man geld machen
                        Zuletzt geändert von DasUNBEKANNTe; 22.10.2005, 20:55.

                        Kommentar

                        Lädt...
                        X