Avatar billede taskmgr Nybegynder
12. februar 2003 - 23:00 Der er 3 kommentarer og
1 løsning

Find den højeste - hvis flere, find flere :)

Jeg har lavet en lille afstemning...

For at markere det svar med flest stemmer, laver jeg <tr>'en i en anden farve, sådan:

$high = mysql_query("SELECT * FROM vote order by votes desc limit 0,1");
$who = mysql_fetch_array($high);

//laver så en while løkke og henter allesamme

//og finder så ud af om den pågældende er lig med $who["id"]
if ($tal["id"]==$who["id"]){ $col = "#CCCCCC";}
...osv

Men hvis nu der er to, tre, eller flere med samme (højeste) værdi, hvordan bør jeg så skære den?
Avatar billede jakoba Nybegynder
12. februar 2003 - 23:09 #1
Det er kun den allerhøjeste der skal have anden farve ikke?

$high = mysql_query("SELECT * FROM vote order by votes desc limit 0,1");
$hojeste = -1;

while ( $who = mysql_fetch_array($high) ) {
    extract( $who );
    if ( $votes >= $hojeste ) {
        $col = "#CCCCCC";            // specialfarve for førstepladsen
        $hojeste = $votes;
    } else {
        $col = "#EEEEEE";
    }
    //.. din tabelrække
}

mvh JakobA
Avatar billede jakoba Nybegynder
12. februar 2003 - 23:10 #2
Øh, med den limit henter du kun een række.
Avatar billede taskmgr Nybegynder
12. februar 2003 - 23:26 #3
Jeg tror ik du ved hvad jeg mener... Det er heller ik lige til at forstå, men du kan lige få hele mit script:

<?
$res = mysql_query("SELECT * FROM vote order by navn asc");
$col0 = "#ffffff"; 
$col1 = "#efefef";
$i=0;
               
$high = mysql_query("SELECT * FROM vote order by votes desc limit 0,1");
$who = mysql_fetch_array($high);

$ialt = mysql_query("SELECT SUM(votes) as sum FROM vote");
$summi = mysql_fetch_array($ialt);
$all = $summi["sum"];
               
while($tal = mysql_fetch_array($res)) {
if ($i % 2==0) { $col = $col1; } else { $col = $col0; }
if ($tal["id"]==$who["id"]){ $col = "#CCCCCC";}
                   
$votes = $tal["votes"];
$procent = round((($votes*100)/$all),0);
?>
<tr bgcolor="<?=$col?>">
<td style="border-right: 1px solid #C0C0C0;"><?=$tal["navn"]?></td>
<td style="border-right: 1px solid #C0C0C0;" align="right"><?=$tal["votes"]?></td>
<td style="border-right: 1px solid #C0C0C0;" align="right"><?=$procent?> %</td>
<td><img src="fyld.gif" style="width: <?=$procent?>px; height: 11px;"></td>
</tr>
<?
++$i;
}

Jeg finder den højeste, og giver den en anden farve (#CCCCCC), men hvis der er to, eller flere, som ligger i toppen, så giver den kun én af dem, den anden farve (#CCCCCC). (Den som kommer først i alfabetet)

Her skal den så give flere den anden farve, hvis der ligger flere i toppen.

Håber du forstår :)
Avatar billede taskmgr Nybegynder
20. februar 2003 - 15:21 #4
Undrer mig lidt over hvad jeg tænkte på den dag...

if ($tal["id"]==$who["id"]){ $col = "#CCCCCC";}
skal bare være...
if ($tal["votes"]==$who["votes"]){ $col = "#CCCCCC";}

Det løste problemet.
Undskylder ulejligheden :)
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