Avatar billede sevinding Juniormester
11. februar 2012 - 11:26 Der er 16 kommentarer og
1 løsning

Procentregning

Nu har jeg snart prøvet alle eksempler jeg har fundet, men uden held.
Det jeg gerne vil i nedenstående script er at regne ud hvor mange procent antal_land er af antal_aar:

<?php
$wins = mysql_query("SELECT
ou.year AS year,
ryt.flags AS flags,
ryt.fra AS fra,

count(ryt.fra) AS antal_land

FROM
    out AS ou
    INNER JOIN ryttere AS ryt

WHERE ou.year=$aar AND ou.name = ryt.id

GROUP BY
    ryt.fra

ORDER BY antal_land DESC

");

while($w=mysql_fetch_array($wins)){

            echo "<table width='280' border='0' cellspacing='0' cellpadding='0'><tr><td  style='border-top:ridge 1px #C2C2A6;'>";
                echo "<table width='280' border='0' cellspacing='0' cellpadding='2'><tr>";
                echo "<td width='140' align='left' valign='bottom'><img src=$w[flags] width='10' height='10' border=0>  <a href='country_ouryt.php?aar=$aar&fra=$w[fra]' class='link2'>$w[fra]</a></td>";
            echo "<td width='50' align='right'  valign='bottom'>$w[antal_land]</td>";
            echo "<td width='90' align='right'  valign='bottom'>";

$winsall = mysql_query("SELECT count(id) AS antal_aar FROM out WHERE  year=$aar ");

while($wall=mysql_fetch_array($winsall)){

echo "$wall[antal_aar]";

}

            echo "</td>";
            echo "</tr></table>";
            echo "</tr></table>";

}

$number = 0;

?>

Håber der er en der kan få mig ud af min elendighed.
Avatar billede nemlig Professor
11. februar 2012 - 13:29 #1
Dit udtræk $winsall kører du i en while.
Er der ikke bare tale om et enkelt tal, du skal hente, hver gang du gennemløber $wins?

Er der ikke bare tale om 2 variabler, som du skal lave formlen på?
Avatar billede sevinding Juniormester
11. februar 2012 - 13:56 #2
Se der er jeg lost.
Det jeg gerne vil er, at der hvor der står:

echo "$wall[antal_aar]";

skulle der gerne stå et procenttal af antal_land/antal_aar, og hvad formler angår, er jeg bare tabt bag af en vogn.

Se: http://www.tourfacts.dk/test.php

Håber virkelig at du kan gi mig en ide om hvordan jeg gør.
11. februar 2012 - 13:56 #3
Som sagt i #1, forespørgslen for $winsall behøver du kun at gøre en gang.  Og hvis du vil have resultaterne fra alle landene vist i en tabel, så skal <tabel> og </tabel> være udenfor løkken.  Du vil velsagtens også have en overskrift for tabellen, som du også skal lave før løkken.

Det følgende er ikke testet - jeg viser bare 'slagets gang.'  Jeg har også udeladt al formattering.

$result = mysql_query(SELECT COUNT(*) AS antal_aar);
$winsall = mysql_result($result, 0);

$wins = [din forespørgsel.]

echo "<table>";
echo "<tr>";
echo "<td...>[flags o.s.v.]";
echo "<td>flags</td>";
echo "<td>antal fra</td>";
echo "<td>%flag</td>";
echo "</tr>";

while($w = mysql_fetch_array($wins))
{
  $antal_land = $w['antal_land'];
  echo "<tr>";
  echo "<td>[flags etc.]</td>";
  echo "<td>$antal_land</td>";
  echo "<td>$antal_land/$winsall</td>";
  echo "</tr>";
}

echo "</table>";
11. februar 2012 - 13:57 #4
Jeg fik en linie for meget med.  Den første blok af echo's skulle være:

echo "<table>";
echo "<tr>";
echo "<td>flags</td>";
echo "<td>antal fra</td>";
echo "<td>%flag</td>";
echo "</tr>";
Avatar billede sevinding Juniormester
11. februar 2012 - 14:38 #5
Hej Christian.
Hvis jeg har læst rigtigt, skal det stå sådsan her:

<?php
$result = mysql_query(SELECT COUNT(*) AS antal_aar FROM out WHERE year=$aar);
$winsall = mysql_result($result, 0);

$wins = mysql_query("SELECT
ou.year AS year,
ryt.flags AS flags,
ryt.fra AS fra,

count(ryt.fra) AS antal_land

FROM
    out AS ou
    INNER JOIN ryttere AS ryt

WHERE ou.year=$aar AND ou.name = ryt.id

GROUP BY
    ryt.fra

ORDER BY antal_land DESC

");

while($w=mysql_fetch_array($wins)){

og så tabellen.
Men jeg får denne melding:
Parse error: syntax error, unexpected T_STRING in /hsphere/local/home/nist1737/tourfacts.dk/test.php on line 79

Line 79= $result = mysql_query(SELECT COUNT(*)

Eller har jeg helt misforstået det?
11. februar 2012 - 14:50 #6
Det må du undskylde.  Queryen skal naturligvis stå i anførselstegn, altså;

$result = mysql_query("SELECT COUNT(*) AS antal_aar FROM out WHERE year=$aar");

Jeg håber det retter op på det.  (Men det er vel en af de ting du måske selv havde kunnet se.)
Avatar billede sevinding Juniormester
11. februar 2012 - 14:50 #7
Hej igen.
Fik klaret line 79.
Nu melder den:
Parse error: syntax error, unexpected $end in /hsphere/local/home/nist1737/tourfacts.dk/test.php on line 135
Avatar billede sevinding Juniormester
11. februar 2012 - 14:53 #8
Mht line 79 må jeg tilstå min mgl. oversigt. Det undskylder jeg.
Avatar billede sevinding Juniormester
11. februar 2012 - 15:08 #9
Så kom det. Der er bare lige det, at der ikke rigtig kommer noget % frem.

    echo "<table>";


while($w = mysql_fetch_array($wins))
{
  $antal_land = $w['antal_land'];

      echo "<tr>";
      echo "<td><img src=$w[flags] width='10' height='10' border=0></td>";
      echo "<td>$w[fra]</td>";
      echo "<td>$antal_land</td>";
      echo "<td>$antal_land/$winsall</td>";
      echo "</tr>";
}

    echo "</table>";

men: http://www.tourfacts.dk/test.php
Avatar billede nemlig Professor
11. februar 2012 - 15:13 #10
while($w = mysql_fetch_array($wins))
{

  $antal_land = $w['antal_land'];
  $resultat = $antal_land/$winsall*100;
      echo "<tr>";
      echo "<td><img src=$w[flags] width='10' height='10' border=0></td>";
      echo "<td>$w[fra]</td>";
      echo "<td>$antal_land</td>";
      echo "<td>".$resultat." %</td>";
      echo "</tr>";
}
Avatar billede nemlig Professor
11. februar 2012 - 15:16 #11
Og skal du vise med 2 decimaler, kan du skrive:

echo "<td>".number_format($resultat], 2, ',', '.')." %</td>";
Avatar billede sevinding Juniormester
11. februar 2012 - 15:17 #12
Hej Nemlig.
Det virker. Er der mulighed for at nøjes med 2 decimaler?
Avatar billede nemlig Professor
11. februar 2012 - 15:24 #13
Du har da 2 decimaler, eller misforstår jeg dig?
Avatar billede sevinding Juniormester
11. februar 2012 - 15:24 #14
Så kører det. Jeg siger så mange tak til jer begge to.
I har gjort en gammel mand glad i dag.
Sender i et svar så jeg kan gi jer point?
Avatar billede nemlig Professor
11. februar 2012 - 15:28 #15
Samler ikke.... ;)
Avatar billede sevinding Juniormester
11. februar 2012 - 15:29 #16
Nemlig.
Så skkal der lyde en ekstra tak til dig.
11. februar 2012 - 16:13 #17
svar fra mig.
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