Denkblockade: $i++

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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

    Comment


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

      Comment


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

        normales debuggen!

        Comment


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

          Comment


          • #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
            Last edited by mrhappiness; 04-07-2004, 18:00.
            Ich denke, also bin ich. - Einige sind trotzdem...

            Comment


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

              Comment


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

                Comment


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

                  Forumregeln!

                  Gute PHP-(tutorial-)Seiten

                  Comment


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

                    Comment


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

                      Comment

                      Working...
                      X