Avatar billede Slettet bruger
11. januar 2003 - 21:19 Der er 38 kommentarer og
1 løsning

Regne procent ud direkte på siden??

Jeg har en afstemning hvor den skal regne nogle procent ud... jeg kan ikke få den til det :)

i kan lige se noget kode:::..


<span class="bar" style="width: <? print"$row[nr]*100/$antal"; ?>%;"></span>&nbsp; <? print"$row[nr]*100/$antal"; ?>


kan i få den til det...

det nytter ikke at sige

$regnestykke = blablablabla

da den sætning bliver gentaget og roder en del :)
Avatar billede elskermad.dk Nybegynder
11. januar 2003 - 21:32 #1
$procent = $regnestykke
$procent = $procent*100/$antal

så bliver $regnestykke da
ved ikk om jeg har forstået spørgsmålet
Avatar billede Slettet bruger
11. januar 2003 - 21:34 #2
nej fordi den sætning deroppe bliver gentaget tre ganga af mysql og derfor holder det ikke at kalde den procent :)
Avatar billede ztyxx Nybegynder
11. januar 2003 - 21:38 #3
regnestykket ser umiddelbart fint nok ud, men hvis du lige prøver at definere hvor dine variabler i regnestykket kommer fra, så er det måske lettere at overskue
Avatar billede jakoba Nybegynder
11. januar 2003 - 21:39 #4
dit spørgsmål giver indtil videre ingen mening.

kan du beskrive det klart og grundigt? evt pege på en side der gøre det ønskede.
Avatar billede Slettet bruger
11. januar 2003 - 21:40 #5
jamen regnestykket er ganske rigtigt... det er bare med at få det til at regne sig selv ud :)
Avatar billede Slettet bruger
11. januar 2003 - 21:42 #6
Kig her så :)

www.westhi.dk/afstemning
Avatar billede ztyxx Nybegynder
11. januar 2003 - 21:46 #7
prøv at lave regnestykket som en variabel først, inden du udskriver den
Avatar billede ztyxx Nybegynder
11. januar 2003 - 21:47 #8
altså sådan

$res = $row[nr]*100/$antal;

  echo $res
Avatar billede ztyxx Nybegynder
11. januar 2003 - 21:50 #9
eller bare
print($row[nr]*100/$antal);
Avatar billede ztyxx Nybegynder
11. januar 2003 - 21:51 #10
du skal nok lige lægge en stammen ind i alle mulighederne, ellers får du en fejl, da PHP ikke er så glad for at dividere med 0
Avatar billede Slettet bruger
11. januar 2003 - 21:53 #11
ztyxx>> Det er jo det der ikke nytter noget at hente en variabel med samme navn til tre forskellige udregninger...  så kommer det ikke til at passe...

og man kan jo ikke kalde den $result$mysqlid  vel? altså hvis id'et i mysql er 52 så omdanner den selv til result52
Avatar billede ztyxx Nybegynder
11. januar 2003 - 21:55 #12
du har vel givet variablerne forskellige navn til hvar afstemningsmulighed
Avatar billede Slettet bruger
11. januar 2003 - 21:58 #13
det er jo det jeg prøver at forklare dig... Det er lidt svært..

i får lige noget mere kode:


<?
include("config.php");
$hent = mysql_query("SELECT * FROM afstemning");
while($row = mysql_fetch_array($hent)) {
?>
<?
$stemmer = mysql_query("SELECT COUNT(nr) FROM afstemning WHERE id='$id'");
$antal = mysql_result($stemmer, 0, 0);
?>
<a href="?stem=<?echo"$row[id]";?>"><?echo"$row[mulighed]";?></a><br>
<span class="bar" style="width: <? print($row[nr]*100/$antal); ?>%;"></span>&nbsp; <? print($row[nr]*100/$antal); ?> <br><br>
<?
}
?>
Avatar billede ztyxx Nybegynder
11. januar 2003 - 22:02 #14
prøv lige at smide hele din kode og database dump
Avatar billede Slettet bruger
11. januar 2003 - 22:06 #15
okay...


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>Afstemning</title>
<meta name="generator" content="TSW WebCoder">
<style type="text/css">
.bar
{
border: 1px solid black;
background: url('bar.gif');
height: 10px;
font-size: 5px;
}
body,td {
font-family: tahoma;
font-size: 10;
}
a:hover {
text-decoration: underline;
color: black;
}
a:link {
color: black;
text-decoration: none;
}
a:visited {
color: black;
text-decoration: none;
}
a:active {
color: black;
text-decoration: none;
}
</style>
</head>

<body bgcolor="#ECF2FA">

<div align="center">


<div style="width: 210; background-color: c0c0c0; border: 1px solid black">
<table width="100%" height="100%"><tr><td valign="top">
Er denne afstemning flot...?<br><br>
<?
include("config.php");
$hent = mysql_query("SELECT * FROM afstemning");
while($row = mysql_fetch_array($hent)) {
?>
<?
$stemmer = mysql_query("SELECT COUNT(nr) FROM afstemning WHERE id='$id'");
$antal = mysql_result($stemmer, 0, 0);
?>
<a href="?stem=<?echo"$row[id]";?>"><?echo"$row[mulighed]";?></a><br>
<span class="bar" style="width: <? print($row[nr]*100/$antal); ?>%;"></span>&nbsp; <? print($row[nr]*100/$antal); ?> <br><br>
<?
}
?>


Antal stemmer i alt: <? echo "$antal"; ?>


<?
if($id) {
$update = mysql_query("UPDATE afstemning SET nr = nr+1 WHERE id='$id'");
{
echo "<br><br>Din stemme er registeret!";
}
}
?>



</td></tr>
</table>
</div>
</div>
</body>
</html>



og databasen.....


CREATE TABLE afstemning (
  id tinyint(4) NOT NULL auto_increment,
  mulighed tinytext NOT NULL,
  nr tinytext NOT NULL,
  PRIMARY KEY  (id)
) TYPE=MyISAM;
Avatar billede jakoba Nybegynder
11. januar 2003 - 22:08 #16
det er anførselstegn som sædvanligt. du sætter dem om et regnestykke du vil have udregnet.

<span class="bar" style="width: <? print ($row['nr']*100)/$antal; ?>%;"></span>&nbsp; <? print ($row['nr']*100/$antal); ?>
Avatar billede jakoba Nybegynder
11. januar 2003 - 22:12 #17
Ups. det har ztyxx allere sagt 11/01-2003 21:50:21
Avatar billede Slettet bruger
11. januar 2003 - 22:13 #18
jeg tror måden jeg læser det fulde antal stemmer på er forkert....

kan i forstå meningen i mit script?? :D

jakoba>> Det virker heller ikke :(
Avatar billede ztyxx Nybegynder
11. januar 2003 - 22:14 #19
har du noget datastruktur fra din tabel også
Avatar billede Slettet bruger
11. januar 2003 - 22:16 #20
#
# Struktur dump for tabellen `afstemning`
#

CREATE TABLE afstemning (
  id tinyint(4) NOT NULL auto_increment,
  mulighed tinytext NOT NULL,
  nr tinytext NOT NULL,
  PRIMARY KEY  (id)
) TYPE=MyISAM;

#
# Data dump for tabellen `afstemning`
#

INSERT INTO afstemning VALUES (1, 'Flot', '7');
INSERT INTO afstemning VALUES (2, 'Njaaaa....!', '3');
INSERT INTO afstemning VALUES (3, 'Pænt klam!', '1');
Avatar billede jakoba Nybegynder
11. januar 2003 - 22:25 #21
while($row = mysql_fetch_array($hent)) {
?> 
<?
    $stemmer = mysql_query("SELECT COUNT(nr) FROM afstemning WHERE id='$id'");
    $antal = mysql_result($stemmer, 0, 0);
?>
<a href="?stem=<?echo"$row[id]";?>"><?echo"$row[mulighed]";?></a><br>
<span class="bar" style="width: <? print($row[nr]*100/$antal); ?>%;"></span>&nbsp; <? print($row[nr]*100/$antal); ?> <br><br>
<?
}

såvidt jeg kan se er $antal det antal stemmer der er på DEN id, det skulle være det totale antal stemmer

?>
<?
sådan at afslutte php blot for at åbne igen er spild af servertid.

kunne det være du mener
    $stemmer = mysql_query("SELECT SUM(nr) FROM afstemning WHERE id='$id'");
eller
    $stemmer = mysql_query("SELECT COUNT(*) FROM afstemning WHERE id='$id'");
hvad du end mener giver det ikke rigtig mening. id er en unik nøgle i den tabel, så der vil aldrig være mere end een record at SUMmme eller COUNTe
Avatar billede jakoba Nybegynder
11. januar 2003 - 22:36 #22
og anførselstegn een gang til
  nr tinytext NOT NULL,
nr er et nummer, et antal, en numerisk værdi
  25 er det antal fingre og tæer du har hvis en ven giver dig en hånd.
  '25' er bogstaverne '2' og '5' efter hinanden
det er 2 meget forskellige ting, og det er en god ide at holde rede i hvad der er hvad.

  nr int NOT NULL,
'int' står for heltal (ligesom i id feltet)
og der skal ikke anførselstegn omkring numre for så er det ikke numre mere.
INSERT INTO afstemning VALUES (1, 'Flot', 7);
Avatar billede jakoba Nybegynder
11. januar 2003 - 22:52 #23
id  mulighed        nr
--  ---------      --
1    'Flot'          7
2    'Njaaaa....!'  3
3    'Pænt klam!'    1

jeg tipper at nr står for det antal mennesker der har klikket på den valgmulighed

det totale antal mennesker der har stemt er så  SUM(nr) uden nogen betingelse
og de 3 procenttal der skal udregnes bliver

  7 * 100 / 11
  3 * 100 / 11
  1 * 100 / 11

så koden bliver:

$hent = mysql_query("SELECT * FROM afstemning");  // hent rækkerne
$ialt = mysql_query("SELECT SUM(nr) FROM afstemning");  // lægger nr fra alle records sammen
$antal = mysql_result($ialt, 0, 0);
while($row = mysql_fetch_array($hent)) {
    ?>
<a href="?stem=<?echo"$row[id]";?>"><?echo"$row[mulighed]";?></a><br>
<span class="bar" style="width: <? print($row[nr]*100/$antal); ?>%;"></span>&nbsp; <? print($row[nr]*100/$antal); ?> <br><br>
    <?
}
Avatar billede Slettet bruger
11. januar 2003 - 23:21 #24
hold da kæft.... det virker jo :)

nu skal jeg bare lige ordne update så man kan stemme... og selvfølgelig smide cookie på :)

www.westhi.dk/afstemning
Avatar billede Slettet bruger
11. januar 2003 - 23:24 #25
hvordan er det nu man runder decimaler af?

jeg er ikke særlig meget inde i regning med php :)
Avatar billede ztyxx Nybegynder
11. januar 2003 - 23:26 #26
floor()
Avatar billede Slettet bruger
11. januar 2003 - 23:27 #27
har aldrig hørt om floor :)
Avatar billede ztyxx Nybegynder
11. januar 2003 - 23:31 #28
floor() runder ned til nærmeste heltal
round() afrunder til nærmeste heltal
ceil() runder op til nærmeste heltal
http://www.php.net/manual/en/function.floor.php
http://www.php.net/manual/en/function.round.php
http://www.php.net/manual/en/function.ceil.php
Avatar billede Slettet bruger
11. januar 2003 - 23:36 #29
kan man ikke bruge substr ?
Avatar billede Slettet bruger
11. januar 2003 - 23:40 #30
jeg fatter ikke floor()
Avatar billede jakoba Nybegynder
11. januar 2003 - 23:42 #31
substr står for  subSTRing, og en string er en sekvens af bogstaver ikke et tal.
hvis du vil have 2 decimaler kan du evt bruge number_format() funktionen den kan lave et tal til en køn streng:
  $resultatstreng = number_format( $din_talværdi, $antal_decimaler );
http://dk.php.net/manual/en/function.number-format.php
Avatar billede Slettet bruger
11. januar 2003 - 23:44 #32
okay for jeg har nemlig altid brugt substr til at at forkorte bogstaver...

Men hvordan kan jeg få number_format til at forkorte procenterne i min afstemning når regnestykket ikke er en variabel?
Avatar billede jakoba Nybegynder
11. januar 2003 - 23:58 #33
det behøver ikke være en variabel, det kan være et renestykke:

<span class="bar" style="width: <? print(number_format($row[nr]*100/$antal),2); ?>%;"></span>&nbsp; <? print( number_format($row[nr]*100/$antal,2)); ?> <br><br>
Avatar billede Slettet bruger
12. januar 2003 - 00:07 #34
Nåååå nu fatter jeg det :D

det er alt for godt.. og forresten du skal da lige have points jakoba ;)
Avatar billede Slettet bruger
12. januar 2003 - 00:11 #35
du havde godt nok lige lavet nogle skrivefejl men dem fik jeg ordnet :)
Avatar billede jakoba Nybegynder
12. januar 2003 - 00:34 #36
Avatar billede Slettet bruger
12. januar 2003 - 11:18 #37
hvad er der sket her?? jeg kan da se alle andre spørgsmål fint nok....!?
Avatar billede Slettet bruger
12. januar 2003 - 11:19 #38
og nu virker det igen... det sædvanlige med at spørgeren skal skrive en kommentar :)
Avatar billede ztyxx Nybegynder
12. januar 2003 - 11:20 #39
jakoba> vi deler i porten så:-)
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

IT-JOB