Jag håller på med en topplista där summeringen hämtar värden från sql.
10veckors värden hämtas per person. Det jag sedan vill göra är att subtrahera med de 2 lägsta. Så resultatet som visas är de bästa 8veckors resultaten.
Okey. Jag är som sagt ny när det gäller php/sql och har lekt ihop en tips-sm hemsida. Det jag sedan har gjort är att jämföra tipparens värden med admins värden.
<?php
$select_user = mysql_query("SELECT * FROM tips WHERE username='$_SESSION[username]' AND week='$res_row[week]' ORDER BY id DESC LIMIT 1") or die(mysql_error());
$select_admin = mysql_query("SELECT * FROM tipsii WHERE username='admin' AND week='$res_row[week]' ORDER BY id DESC LIMIT 1") or die(mysql_error());
$select_adminm = mysql_query("SELECT * FROM tipsM WHERE username='admin' ORDER BY id DESC LIMIT 1") or die (mysql_error());
$res_row = mysql_fetch_array($select_adminm);
$user_array = mysql_fetch_array($select_user);
$admin_array = mysql_fetch_array($select_admin);
if ($user_array['r101'] == $admin_array['r1'] or $user_array['r102'] == $admin_array['r1'] or $user_array['r103'] == $admin_array['r1']){
$user1 = 1;
}
else {
$user1 = 0;
}
if ($user_array['r201'] == $admin_array['r2'] or $user_array['r202'] == $admin_array['r2'] or $user_array['r203'] == $admin_array['r2']){
$user2 = 1;
}
else {
$user2 = 0;
}
if ($user_array['r301'] == $admin_array['r3'] or $user_array['r302'] == $admin_array['r3'] or $user_array['r303'] == $admin_array['r3']){
$user3 = 1;
}
else {
$user3 = 0;
}
if ($user_array['r401'] == $admin_array['r4'] or $user_array['r402'] == $admin_array['r4'] or $user_array['r403'] == $admin_array['r4']){
$user4 = 1;
}
else {
$user4 = 0;
}
if ($user_array['r501'] == $admin_array['r5'] or $user_array['r502'] == $admin_array['r5'] or $user_array['r503'] == $admin_array['r5']){
$user5 = 1;
}
else {
$user5 = 0;
}
if ($user_array['r601'] == $admin_array['r6'] or $user_array['r602'] == $admin_array['r6'] or $user_array['r603'] == $admin_array['r6']){
$user6 = 1;
}
else {
$user6 = 0;
}
if ($user_array['r701'] == $admin_array['r7'] or $user_array['r702'] == $admin_array['r7'] or $user_array['r703'] == $admin_array['r7']){
$user7 = 1;
}
else {
$user7 = 0;
}
if ($user_array['r801'] == $admin_array['r8'] or $user_array['r802'] == $admin_array['r8'] or $user_array['r803'] == $admin_array['r8']){
$user8 = 1;
}
else {
$user8 = 0;
}
if ($user_array['r901'] == $admin_array['r9'] or $user_array['r902'] == $admin_array['r9'] or $user_array['r903'] == $admin_array['r9']){
$user9 = 1;
}
else {
$user9 = 0;
}
if ($user_array['r1001'] == $admin_array['r10'] or $user_array['r1002'] == $admin_array['r10'] or $user_array['r1003'] == $admin_array['r10']){
$user10 = 1;
}
else {
$user10 = 0;
}
if ($user_array['r1101'] == $admin_array['r11'] or $user_array['r1102'] == $admin_array['r11'] or $user_array['r1103'] == $admin_array['r11']){
$user11 = 1;
}
else {
$user11 = 0;
}
if ($user_array['r1201'] == $admin_array['r12'] or $user_array['r1202'] == $admin_array['r12'] or $user_array['r1203'] == $admin_array['r12']){
$user12 = 1;
}
else {
$user12 = 0;
}
if ($user_array['r1301'] == $admin_array['r13'] or $user_array['r1302'] == $admin_array['r13'] or $user_array['r1303'] == $admin_array['r13']){
$user13 = 1;
}
else {
$user13 = 0;
}
?>
Sedan har jag infogat veckans resultatet i sql databasen.
och hämtat värdena med summeringen igen.
$select_radw1 = mysql_query("SELECT * FROM ismw WHERE id='1'") or die(mysql_error());
$select_radw11 = mysql_query("SELECT * FROM tipsw WHERE id='1' AND week='1'") or die(mysql_error());
$select_radw12 = mysql_query("SELECT * FROM tipaw WHERE id='1' AND week='2'") or die(mysql_error());
$select_radw13 = mysql_query("SELECT * FROM tipsw WHERE id='1' AND week='3'") or die(mysql_error());
$select_radw14 = mysql_query("SELECT * FROM tipsw WHERE id='1' AND week='4'") or die(mysql_error());
$select_radw15 = mysql_query("SELECT * FROM tipsw WHERE id='1' AND week='5'") or die(mysql_error());
$select_radw16 = mysql_query("SELECT * FROM tipsw WHERE id='1' AND week='6'") or die(mysql_error());
$select_radw17 = mysql_query("SELECT * FROM tipsw WHERE id='1' AND week='7'") or die(mysql_error());
$select_radw18 = mysql_query("SELECT * FROM tipsw WHERE id='1' AND week='8'") or die(mysql_error());
$select_radw19 = mysql_query("SELECT * FROM tipsw WHERE id='1' AND week='9'") or die(mysql_error());
$select_radw10 = mysql_query("SELECT * FROM tipsw WHERE id='1' AND week='10'") or die(mysql_error());
Nu är saken att jag vill att endast 8 veckor räknas. Med andra ord så ska de 2 lägsta tas bort.
Hoppas det hjälpte dig att förstå vad jag är ute efter.
//stefan
För att komma någon vart alls i programmering/scriptning måste man lära sig sådana styrstrukturer som slingor och loopar. Den kod du visar, där värden hårdkodas, ett i taget, för 13 användare och x rader är... i princip inte framkomlig. Säg att du vill ändra på något någonstans eller lägga till 5 användare? Du får en massa - egentligen identiska - kodrader att ändra. Och den fråga du ställer, hur ta bort de två lägsta värdena blir omöjlig att lösa så länge du inte kan hantera flera värden i samma kodslinga.
Om du däremot sätter dig in i slingor och loopar kan du dels skriva om den kod du nu har till avsevärt färre rader och dessutom enkelt lösa problemet med att ta bort de två sämsta raderna, genom att hela tiden i loopen hålla reda på vilka dessa är, och sedan skriva ut alla andra.
Rekommenderar en lärobok i PHP eller t.ex. Slingor i PHP till att börja med. :)
Tack för ditt svar!
Jag är som sagt ny när det gäller php/sql så all hjälp man kan få är jag enormt tacksam för!
Har även gjort om summeringen så den hämtar den totala summan av samtliga användare utan att behöva koda om efter antal användare:
$summering = "SELECT SUM(summa) AS sum_points FROM `ismw` GROUP BY id DESC ";
$resulttot = mysql_query($summering) or die(mysql_error());
while($tot = mysql_fetch_array($resulttot)){
echo "<tr>";
echo "<td>" . $tot['sum_points'] . "</td>";
}
Men jag sitter fortfarande fast på hur jag ska ta bort de 2 lägsta värdena.
Hoppas det vart lite trevligare att se dessa koder..