26. december 2003 - 20:30Der 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 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!
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);
$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! :)
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);
$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
Synes godt om
Slettet bruger
26. december 2003 - 23:24#8
Et variabelnavn må ikke starte med et tal.
Synes godt om
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;
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! :)
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;
$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)
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!
Synes godt om
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.
Synes godt om
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.
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..)
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.. ;)
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
Synes godt om
Ny brugerNybegynder
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.