Denkblockade: $i++

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

  • Denkblockade: $i++

    Hab ein Problem, und komm seit gestern nich weiter, ich hoff mal, das ihr mir helfen könnt.

    PHP-Code:
    <?
    include("templates/db.php");
    $sql=mysql_query("SELECT * FROM bilder ORDER BY punkte DESC") or die(mysql_error());
    $num=mysql_num_rows($sql) or die(mysql_error());
    while($row=mysql_fetch_object($sql))
    {
        $id=$row->id;    
        $name=$row->name;
        $bild=$row->bild;
        $kommentar=$row->kommentar;
        $punkte=$row->punkte;
        $votes=$row->votes;
        $i=0;
    ?>        <tr>
                <td width="119">
                <a href="bewerten.php?id=<? echo $id; ?>"><img border="0" src="images/<? echo $bild; ?>" width="160" height="115"></td>
                <td valign="top">
                <table border="0" width="100%">
                    <tr>
                        <td colspan="2"><font color="#000000"><b>[B]Platz 1[/B] </b></font></td>
    </tr>
    <tr>
      <td width="68%"><div style="width: 100%; background-color:   #B44208"><div style="width: <? echo $punkte; ?>%; background-color: #731000">&nbsp;</div></div></td>
      <td width="28%">(<? echo $votes; ?> Votes)</td>
    </tr>
    <tr>
      <td colspan="2"><b><? echo $name; ?></b></td>
    </tr>
    <tr>
      <td colspan="2"><? echo $kommentar; ?></td>
    </tr>
    <tr>
      <td colspan="2">(0) Kommentar(e)</td>
    </tr>
    <table>
    </td>
    <br>
    </tr>
    <?
    }
    ?>
    Ich habe z.B. 3 Datensätze in meiner Datenbank, die untereinander aufgelistet werden. Diese werden geordnet nach Punkte. DIe mit dem meisten punkten Soll Platz 1 haben, die mit den zweitmeisten punkten soll platz 2 haben, ... . Aber ich bekome es einfach nicht, dass sich der Wert nach "platz" hochzählt. Habe schon eingies versucht, z.B. eine for() schleife, eine while schleife,... . Manchmal kommt überlall nur PLatz 0, Manchmal kommt bei jedem auch nur "Platz 012".

    Ich hoffe mal das ihr mir helfen könnt, mein Prob zu lösen

    Forumregeln!

    Gute PHP-(tutorial-)Seiten

  • #2
    hmm,

    nimm mal $i=0 aus der schleife ...
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Habs jetzt so gemacht:

      PHP-Code:
      <?
      include("templates/db.php");
      $sql=mysql_query("SELECT * FROM bilder ORDER BY punkte DESC") or die(mysql_error());
      $num=mysql_num_rows($sql) or die(mysql_error());
      while($row=mysql_fetch_object($sql))
      {
          $id=$row->id;    
          $name=$row->name;
          $bild=$row->bild;
          $kommentar=$row->kommentar;
          $punkte=$row->punkte;
          $votes=$row->votes;
      ?>        <tr>
                  <td width="119">
                  <a href="bewerten.php?id=<? echo $id; ?>"><img border="0" src="images/<? echo $bild; ?>" width="160" height="115"></td>
                  <td valign="top">
                  <table border="0" width="100%">
                      <tr>
                          <td colspan="2"><font color="#000000"><b>Platz 
      <?
       
           for($i=0; $i <= $num; $i++)
          { 
              echo $i;
          }
      ?></b></font>
      Nun zeigt er mir bei Platz überall "Platz 012"

      Forumregeln!

      Gute PHP-(tutorial-)Seiten

      Kommentar


      • #4
        testausgaben für $num, $i usw???

        normales debuggen!

        Kommentar


        • #5
          das vorgehen kennst du, oder ?
          du vergleichst die punkte mit den punkten vom vorigen
          wenn die punkte kleiner sind, wird der platz eins erhöht, ansonsten belegt er den selben platz

          bei jedem schleifendurchlauf beinhaltet $punkte ja noch die punkteanzahl vom vorgänger .. eignet sich gut für unseren vergleich ..


          PHP-Code:
          while ($row=mysql_fetch_object($sql))
          {

              if (
          $row->punkte $punkte)
                  
          $platz++

              
          $id=$row->id;    
              
          $name=$row->name;
              
          $bild=$row->bild;
              
          $kommentar=$row->kommentar;
              
          $punkte=$row->punkte;
              
          $votes=$row->votes;

              
          /* dein restl zeugs .. */


          mfg,
          [color=#0080c0]Coragon[/color]

          Kommentar


          • #6
            warum erhöst du $platz immer nur um 1?

            müsste $platz nicht vielmehr um die anzahl der datensätze, die mit der gleichen punktzahl aufwarten erhöht werden?
            PHP-Code:
            $platz $dummy 0;
            $punkte 100000000000;
            while (
            $row=mysql_fetch_object($sql))
            {
              
            $dummy++;
              if (
            $row->punkte $punkte)
                
            $platz $dummy;
              echo 
            'Punkte: '.$row->punkte;
              echo 
            'Platz: '.$platz;

            irgendwie so in der art

            ich bin zumindest der meinung, dass es so aussehen müsste:
            Code:
            platz | punkte
                1 | 30
                2 | 27
                2 | 27
                4 | 25
                5 | 15
            Zuletzt geändert von mrhappiness; 04.07.2004, 18:00.
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              hmm,

              du vergleichst die punkte mit den punkten vom vorigen
              wenn die punkte kleiner sind, wird der platz eins erhöht, ansonsten belegt er den selben platz
              ich kenne das so: bei punktegleichheit wird entweder trotzdem normal gezählt, also 1., 2., 3. ... wobei gleichstände außen vor bleiben

              oder aber, mal angenommen, es gäbe zwei 1. plätze, dann bei 3. fortgesetzt wird ...

              edit: mrhappiness war schneller
              Die Zeit hat ihre Kinder längst gefressen

              Kommentar


              • #8
                Original geschrieben von derHund
                mal angenommen, es gäbe zwei 1. plätze, dann bei 3. fortgesetzt wird ...

                edit: mrhappiness war schneller
                OffTopic:
                k - l - u - k
                ich bin k - l - u - k
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  stimmt, ihr habt recht. ich schrieb ja schon dass cih ne denkblockade hatte.

                  Forumregeln!

                  Gute PHP-(tutorial-)Seiten

                  Kommentar


                  • #10
                    OffTopic:
                    wo steht dass bei 2 2ten plätzen mit 4 weitergezählt wird ?
                    mfg,
                    [color=#0080c0]Coragon[/color]

                    Kommentar


                    • #11
                      OffTopic:
                      steht nirgendwo, aber ist oft so zu sehen; soll die genialität deiner lösung natürlich nicht im geringsten schmälern
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar

                      Lädt...
                      X