Avatar billede dugi Nybegynder
26. december 2003 - 20:30 Der er 25 kommentarer og
1 løsning

Beregning af gennemsnit ud fra 11 felter!

Jeg sidder her med et problem!

Jeg har siddet her de sidste par timer, og kodet et Hot afstemnings system!
Dette system er jo blevet yderst populært, så sådan et ville jeg også lave.

Nu er jeg så bare støt på et problem!
Jeg kan ikke få regnet gennemsnittet ud af stemmerne til hvert billed!

Jeg har fået noget lignende

$1 = $row[1]*1;
$2 = $row[2]*2;
$3 = $row[3]*3;
$4 = $row[4]*4;
$5 = $row[5]*5;
$6 = $row[6]*6;
$7 = $row[7]*7;
$8 = $row[8]*8;
$9 = $row[9]*9;
$10 = $row[10]*10;

$gennemsnit = $1+$2+$3+$4+$5+$6+$7+$8+$9+$10/$row["stemmer"];


Dog uden held!

Jeg er også forholdsvis ny inde for PHP, dog har jeg kodet ASP i snart 1½ år, så fatter dog de meste, og op- bygning/sætning!


Men håber der er nogle venlige sjæle derude som kan hjælpe mig!


Fakta:

Har 10 felter (1-2-3-4-5 o.s.v.)
Et felt med alle stemmerne

Skal have lavet det hele om til et gennemsnit, med 2 decimaler.

Hver gang en person har stemt, blir personens stemme opdateret i det felt som karakteren matcher og feltet stemmer blir opdateret med en ekstra stemme!

Det er måden det er bygget op på!


Håber i kan hjælpe mig!
På forhånd tak og glædelig jul/godt nytår!
Avatar billede danisher Nybegynder
26. december 2003 - 20:37 #1
Hejsa

Kan du ikke bare sætte en parantes uden om alle dine additioner?

$gennemsnit = ($1+$2+$3+$4+$5+$6+$7+$8+$9+$10)/$row["stemmer"];

Du er jo i den rette vej.

Mvh
Avatar billede dugi Nybegynder
26. december 2003 - 20:40 #2
Danisher, først tak for et hurtigt svar!
har prøvet det du har skrevet, men det virker det desværre ikke! =/
Avatar billede danisher Nybegynder
26. december 2003 - 20:46 #3
Kan du prøve at skrive ud, hvad $gennemsnit giver?
Avatar billede dugi Nybegynder
26. december 2003 - 20:48 #4
den giver intet, hele siden er bare hvid!
den viser ikke engang HTML! :S
Avatar billede danisher Nybegynder
26. december 2003 - 20:50 #5
Må jeg så se hele koden?
Avatar billede dugi Nybegynder
26. december 2003 - 20:52 #6
<?php
$mode        = $_GET["mode"];
$vote        = $_GET["vote"];
$id          = $_GET["id"];
$sidste_id  = $_GET["sidste_id"];

$conn = mysql_connect("localhost", "root", "");
mysql_select_db("ungdomssite");

if ($sidste_id != "")
{
$sidste_sql = mysql_query("SELECT * FROM hot WHERE id = \"$sidste_id\"") or die("mysql_error()");
$sidste_rs = mysql_fetch_array($sidste_sql);

$1 = $sidste_rs[1]*1;
$2 = $sidste_rs[2]*2;
$3 = $sidste_rs[3]*3;
$4 = $sidste_rs[4]*4;
$5 = $sidste_rs[5]*5;
$6 = $sidste_rs[6]*6;
$7 = $sidste_rs[7]*7;
$8 = $sidste_rs[8]*8;
$9 = $sidste_rs[9]*9;
$10 = $sidste_rs[10]*10;

$gennemsnit = ($1+$2+$3+$4+$5+$6+$7+$8+$9+$10)/$sidste_rs[stemmer];
}


$randomsql = mysql_query("SELECT * FROM hot ORDER BY RAND() LIMIT 0,1") or die("mysql_error()");
$random = mysql_fetch_array($randomsql);
$sql = mysql_query("SELECT * FROM hot WHERE id = \"$random[id]\"") or die("mysql_error()");
$rs = mysql_fetch_array($sql);
?>



Ser nok ikke så proffesionelt ud, og variablerne, har jeg lavet så de minder om ASP, på den måde kan jeg bedre finde rundt! :)
Avatar billede danisher Nybegynder
26. december 2003 - 20:58 #7
<?

$mode  = $_GET["mode"];
$vote = $_GET["vote"];
$id  = $_GET["id"];
$sidste_id  = $_GET["sidste_id"];

mysql_connect("localhost", "root", "");
mysql_select_db("ungdomssite");

if ($sidste_id != "") {
    $sidste_sql = mysql_query("SELECT * FROM hot WHERE id = '" . $sidste_id . "'") or die("mysql_error()");
    $sidste_rs = mysql_fetch_array($sidste_sql);

    $1 = $sidste_rs[1]*1;
    $2 = $sidste_rs[2]*2;
    $3 = $sidste_rs[3]*3;
    $4 = $sidste_rs[4]*4;
    $5 = $sidste_rs[5]*5;
    $6 = $sidste_rs[6]*6;
    $7 = $sidste_rs[7]*7;
    $8 = $sidste_rs[8]*8;
    $9 = $sidste_rs[9]*9;
    $10 = $sidste_rs[10]*10;

    $gennemsnit = ($1+$2+$3+$4+$5+$6+$7+$8+$9+$10)/$sidste_rs[stemmer];
}

$randomsql = mysql_query("SELECT * FROM hot ORDER BY RAND() LIMIT 1") or die("mysql_error()");
$random = mysql_fetch_array($randomsql);
$sql = mysql_query("SELECT * FROM hot WHERE id = '" . $random["id"] . "'") or die("mysql_error()");
$rs = mysql_fetch_array($sql);

print $gennemsnit;
?>

Prøv at køre det i stedet, og så sig hvad den skriver på skærmen
Avatar billede Slettet bruger
26. december 2003 - 23:24 #8
Et variabelnavn må ikke starte med et tal.
Avatar billede Slettet bruger
26. december 2003 - 23:28 #9
$total=0;
for ($i=1;$i<=10;$i++){
  $total=$total+$sidste_rs[$i]*$i;
}
$gennemsnit=$total/10;
Avatar billede Slettet bruger
26. december 2003 - 23:29 #10
Hvis du skal have uddybet, så bare spørg.
Avatar billede dugi Nybegynder
27. december 2003 - 00:20 #11
sandbox: Vil meget gerne have det uddybbet :)

ser intressant ud!
Avatar billede dugi Nybegynder
27. december 2003 - 00:31 #12
Sandbox, har lige prøvet din løkke!

Godt nok virker det, og ligner dog også et gennemsnit, men det passer ikke!
1 til 10 stemmer, også kan man ikke få et gennemsnit på 63, og 39.8 som jeg har fået!

desuden, skal der også være xx.xx .. 2 decimaler! :)


Mon du kan lave en sød lille ny løkke? :)
Avatar billede nicklasb Nybegynder
27. december 2003 - 00:37 #13
det er jo blok fordi du dividere med 10.. du skal bare dividere med det fulde antal stemmer..

og de to decimaler kan klares med
round($resultat, 2);
Avatar billede dugi Nybegynder
27. december 2003 - 00:38 #14
okay, har nu fået min egen måde til at virker:

$vote1 = $sidste_rs[1]*1;
$vote2 = $sidste_rs[2]*2;
$vote3 = $sidste_rs[3]*3;
$vote4 = $sidste_rs[4]*4;
$vote5 = $sidste_rs[5]*5;
$vote6 = $sidste_rs[6]*6;
$vote7 = $sidste_rs[7]*7;
$vote8 = $sidste_rs[8]*8;
$vote9 = $sidste_rs[9]*9;
$vote10 = $sidste_rs[10]*10;

$gennemsnit = ($vote1+$vote2+$vote3+$vote4+$vote5+$vote6+$vote7+$vote8+$vote9+$vote10)/$sidste_rs["stemmer"];


Men hvordan runder jeg så op til kun 2 decimaler? =O
xx.xx ?
Avatar billede dugi Nybegynder
27. december 2003 - 00:42 #15
Nevermind!

Har selv fixet den med: $gennemsnit = round($gennemsnittet, 2);

Så hele selve gennemsnits koden af DuGi ser således ud:

$vote1 = $sidste_rs[1]*1;
$vote2 = $sidste_rs[2]*2;
$vote3 = $sidste_rs[3]*3;
$vote4 = $sidste_rs[4]*4;
$vote5 = $sidste_rs[5]*5;
$vote6 = $sidste_rs[6]*6;
$vote7 = $sidste_rs[7]*7;
$vote8 = $sidste_rs[8]*8;
$vote9 = $sidste_rs[9]*9;
$vote10 = $sidste_rs[10]*10;

$gennemsnittet = ($vote1+$vote2+$vote3+$vote4+$vote5+$vote6+$vote7+$vote8+$vote9+$vote10)/$sidste_rs["stemmer"];
$gennemsnit = round($gennemsnittet, 2);


Dette gir gennemsnit af den sidste record! ;)
-Godnat og sov godt alle sammen!
Avatar billede nicklasb Nybegynder
27. december 2003 - 00:46 #16
er det ikke det der hele tiden er blevet postet??

Der kommer endda meget smartere og langt mere optimerede koder.. men du vælger alligevel en "skodløsning"?! Nogle gange vælger folk altså underligt.. tror mange af dem der er her er lige glad med dine point.. men bare princippet i at hjælpe og så bare blive afvist.. den føglelse VED jeg mange hader!!

En bedre kode med udgangspunkt i sandbox' kode ville være noget hen i retningen af;
Avatar billede nicklasb Nybegynder
27. december 2003 - 00:47 #17
hov.. mangede koden;

$total=0;
for ($i=1;$i<=10;$i++){
  $total=$total+$sidste_rs[$i]*$i;
}
$gennemsnit = round($total/$sidste_rs['stemmer'], 2);

og del så point ud til de rette, hvis du vil gøre dig bare lidt større forhåbning om hjælp næste gang!! (Tag det ikke til dig hvis du ikke kan klare det.. men læs det alligevel, og prøv at forstå det.. ! TAK)
Avatar billede dugi Nybegynder
27. december 2003 - 07:22 #18
nicklasb: Jeg bruger min egen kode, fordi den løkke sandbox brugte virkede jo ikke!

Og det gjorde min egen! Jeg er i princippet også fucking ligeglad, jeg markeret mit eget svar som rigtig fordi lortet virker, og det vil andre folk ku se!

Så drop børnhaven attituden! For hvis nu sandbox's kode havde virket, på den måde som jeg ønskede det, havde jeg da også klart brugt den!

Men hey, nu bruger jeg min egen kode, fordi jeg er stolt over at ku have lavet den efter jeg kun har lært PHP på 3 dage!


Men forsat god dag!
Avatar billede Slettet bruger
27. december 2003 - 07:38 #19
Min løkke virkede. Det var udelukkende gennemsnit-beregningen uden for løkken, hvor jeg var kommet til at dele med et forkert tal. Hvis du havde kigget bare 2 sekunder på den, kunne du vel også have set det.
Avatar billede Slettet bruger
27. december 2003 - 07:39 #20
Denne linie kan vel ikke siges på nogen måde at være kompliceret eller ugennemskuelig, uanset hvor længe man har brugt php.

$gennemsnit=$total/10;
Avatar billede nicklasb Nybegynder
27. december 2003 - 11:40 #21
jo tak og elige måde!! (altså tl forsat god dag.. for det vil jeg da sørge for så.. ;)

Men kan ikke se hvad det er der er galt med de svar der er kommet uanset din forklaring.. Jeg forklarede FØR du kom med dit svar at du bare skulle dividere med det fulde antal stemmer.. Og vupti, rettede du det i din egen (og tog æren!, og ja, også for sandbox's arbejde), så skrev jeg at for at få tallet med to decimaler kunne du bruge round, og vupti, kommer du med dit "Nevermind! Har selv fixet den med ...", og tager så igen bare og bruger andres svar som en trøst for at komme videre..

Hvor langt ville du have været kommet uden vores hjælp? Tænk over det!!
Og hvad skader det at ligge nogle point hos dem der har svaret på dit spørgsmål? De er intet værd for nogle, men andre føler det rart at få et tak for sit svar. Og her er point så en god ting, da mange bare glemmer det og ligger kommentare som "Nevermind! Har selv fixet den med ...".
Tænk over det, og lad der flyde nogle point til de rette, hvis du vil have bare en smule større chance for et velovervejet og grundigt svar næste gang..

Og så er jeg da bedøvende lige glad med hvor langt tid du har brugt på at lære det.. Men tillykke med det du!! (du er heldig eller noget..)
Avatar billede dugi Nybegynder
27. december 2003 - 17:39 #22
Hallo Niklasb hest!

Kig i toppen!

Jeg har divideret hele tiden!!
og hvor langt jeg ville være kommet!?

Ja det eneste som hjalp mig var sandbox som skrev:

Kommentar: sandbox
26/12-2003 23:24:51    Et variabelnavn må ikke starte med et tal.


og det ændrede jeg så, også virkede hele lortet!

Så stop dine små historier!
og bliv over 12 år! plz!
Avatar billede nicklasb Nybegynder
27. december 2003 - 19:24 #23
gider ikke diskutere med dig.. for det kommer der øjensynligt intet posetivt ud af..

Du har anmeldt nedenstående brugere :
dugi

og nej.. man vælger ikke selv sin alder.. Men den alder du selv har skrevet burde du lige en ekstra gang overveje hvem der passer bedst til...

og så giver det ikke den vilde respekt at bruge ord som plz osv..
Avatar billede dugi Nybegynder
27. december 2003 - 20:27 #24
well jeg er som jeg er, og jeg har fået løs mit problem selv!
og point? ja hvad kan jeg bruge dem til?

NADA! så er derfor også bedøvende ligeglad med dem!
Avatar billede nicklasb Nybegynder
27. december 2003 - 21:52 #25
lol.. ser da ikke ud til at du har den holdning til point, hvis man tager den pointgivning du har lavet ovenfor i betragtning.. Så den skal du da være den sidste til at fyrer af.. ;)
Avatar billede eagleeye Praktikant
27. december 2003 - 23:09 #26
dugi >> Først lad os lige slå fast at alle kommentare skal holdes i sober tone. Se regel §2.2 der er under ingen omsændigheder grund til at kalde folk for forskellige ting...

Du har fået svar på dit spørgsmål du skriver selv i kommentar 27/12-2003 17:39:24 at det virkede efter du rettede hvad sandbox hvade forslået. nicklasb
har også svaret på nogle af dine små ekstra spørgsmål..
Så du bedes oprette et ny spørgsmål med point til dem som har hjulpet dig i dette spørgsmål, husk at lave et link til det nye spørgsmål her, og omvendt.

eagleeye / CoAdmin
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