Avatar billede TumseMM Nybegynder
25. oktober 2011 - 19:37 Der er 5 kommentarer og
1 løsning

Ordinal suffix - 1st, 2nd, 3rd... osv

Hej eksperter!

Har et rankingsystem hvor jeg gerne vil have de 10 bedste brugere.

Hvordan skal jeg indsætte Ordinal Suffix i min kode?


<?php

       
            $res_avg = mysql_query("SELECT username, AVG(rating) as avg_rating FROM ratings GROUP BY username ORDER BY avg_rating DESC LIMIT 10 ");
            while($row_avg = mysql_fetch_array($res_avg))    
                   
                    echo'<table border="1"><tr>
                               
                                         
                                        <td><text style="color:white">'.$row_avg['username'].' =</text></td>
                                           
                                        <td><u>'.round($row_avg['avg_rating'],1).'</u><br /></td>
                                       
                        </tr>   
                    </table>';

?>


Tak på forhånd!
Avatar billede acore Ekspert
26. oktober 2011 - 22:16 #1
Jeg ville lave while om til for med en tæller fx med $i 1, 2, 3, ... og så ville jeg lave en getsuffix funktion a la denne her:

function getsuffix($i)
{
  suffixes = array("th", "st, "nd", "rd");

  $suffix = (array_key_exists($i, $suffixes)? $suffixes[$i]: $suffixes[0]);

  return $i.$suffix;
}

Der i echo hvor jeg så skulle bruge suffixet, ville jeg indsætte

getsuffix($i)
Avatar billede acore Ekspert
26. oktober 2011 - 22:17 #2
Ups - der mangler et $ foran den først suffixes
Avatar billede TumseMM Nybegynder
29. oktober 2011 - 21:08 #3
den gør alt teksten i mit script rødt i TextMate. hvad er der galt? :) tak på hjælpen btw
Avatar billede acore Ekspert
30. oktober 2011 - 13:22 #4
Hvis jeg skal have en chance for at svare på det, må du poste din kode.
Avatar billede TumseMM Nybegynder
30. oktober 2011 - 17:35 #5
<?php
function getsuffix($i)
{
  $suffixes = array("4th", "1st", "2nd", "3rd");

  $suffix = (array_key_exists($i, $suffixes)? $suffixes[$i]: $suffixes[0]);

  return $i.$suffix;
}

       
            $res_avg = mysql_query("SELECT username, AVG(rating) as avg_rating FROM ratings GROUP BY username ORDER BY avg_rating DESC LIMIT 10 ");
            while($row_avg = mysql_fetch_array($res_avg))    
                   
                    echo'<table border="1">
                                        <tr>
                                            <th>Bruger:</th>
                                            <th>Gnm. rating:</th>
                                        </tr>
                                          <tr>
<td><text style="color:brown">'.getsuffix($i).'</text>

<text style="color:pink">'.$row_rank['rankname'].'</text>

<text style="color:white">'.$row_avg['username'].' =</text></td>
                               
<td><u>'.round($row_avg['avg_rating'],1).'</u></td>
                                        </tr>   
                    </table>';


?>

Har fået det til at virke, det med det røde skrift. Der manglede en " ved "st". :) Men ligemeget hvilken position brugeren har i rankingsystemet er han/hun bare 4th ??
Avatar billede acore Ekspert
30. oktober 2011 - 22:31 #6
Du mangler den del af rådet, der handlede om at lave while om til for:

  for($i = 1; $row_avg = mysql_fetch_array($res_avg); $i++)   

Og så har du skrevet den første linie i getsuffix forkert af. Der skal ikke være tal på - de kommer jo via $i i den sidste linie!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester