Belthazor Skrevet 10. juni 2010 Del Skrevet 10. juni 2010 Det jeg vil er at når man har kommet til $max, så skal den sende til databasen at brukeren skal en level opp <?php $username=$_SESSION['username']; $query=mysql_query("SELECT * FROM users WHERE username='$username'"); $fetch=mysql_fetch_object($query); $query1=mysql_query("SELECT * FROM user_info WHERE username='$username'"); $info=mysql_fetch_object($query1); $currank=$fetch->rank; $rankp = $fetch->rankpoints; if ($currank == "Noob"){ $max = "500"; $old="0"; } elseif ($currank == "Wannabe"){ $max = "1200"; $old="500"; }elseif ($currank == "Bråkmaker"){ $max = '1500'; $old="1200"; }elseif ($currank == "Gangster"){ $max = '2000'; $old="1500"; }elseif ($currank == "Hitman"){ $max = '3500'; $old="2000"; }elseif ($currank == "Mafia"){ $max = '5000'; $old="3500"; }elseif ($currank == "Boss"){ $max = '7000'; $old="5000"; }elseif ($currank == "Consiglieri"){ $max = '15000'; $old="7000"; } elseif ($currank == "Don"){ $max = '75000'; $old="15000"; } elseif ($currank == "Gudfar"){ $max = '200000'; $old="75000"; }elseif ($currank == "Co. Owner"){ $max = '17048'; $old="1"; } elseif ($currank == "Owner"){ $max = '17048'; $old="1"; } elseif ($currank == "Coder"){ $max = '17048'; $old="1"; } elseif ($currank == "Administrator"){ $max = '17048'; $old="1"; } elseif ($currank == "Head Moderator"){ $max = '17048'; $old="1"; } elseif ($currank == "Moderator"){ $max = '17048'; $old="1"; } elseif ($currank == "Pink JC"){ $max = '17048'; $old="1"; } $percent = round($rankp, $max *100); ?> har prøvd masse rart men får det ikke til :S Lenke til kommentar
Warz Skrevet 10. juni 2010 Del Skrevet 10. juni 2010 Har prøvd å tolke spørsmålet ditt noen ganger, men skjønner ikke helt hva du mener. Kan du utdype? Er det snakk om at hver gang du kommer til linjen hvor det står $max så ønsker du å kjøre en spørring? Eller er det en teller variabel du har glemt å legge ved her? PS: Det kan være en god ide å benytte <> kode taggene her på forumet. Lenke til kommentar
Belthazor Skrevet 10. juni 2010 Forfatter Del Skrevet 10. juni 2010 (endret) Problemet er som følger. Når rankpoints har kommet til $max så skal man få en ny rank og rankbar skal starte på 0% igjen så ja, når man kommer til linjen $max så skal det være en spørring Poster en oppdatert kode <?php $retard1 = mysql_query("SELECT `rankpoints`, `rank` FROM `users` WHERE `username`='$username'"); while($retard = mysql_fetch_row($retard1)){ $rankp= $retard[0]; $currank= $retard[1]; } if ($currank == "Noob"){ $max = "100"; $old="0"; }elseif ($currank == "Wannabe"){ $max = "200"; $old="100"; }elseif ($currank == "Bråkmaker"){ $max = '400'; $old="200"; }elseif ($currank == "Gangster"){ $max = '800'; $old="400"; }elseif ($currank == "Hitman"){ $max = '2509'; $old="800"; }elseif ($currank == "Ettersøkt kriminell"){ $max = '32000'; $old="2509"; }elseif ($currank == "Mafia"){ $max = '64000'; $old="32000"; }elseif ($currank == "Assasin"){ $max = '128000'; $old="64000"; }elseif ($currank == "Boss"){ $max = '256000'; $old="128000"; }elseif ($currank == "Consiglieri"){ $max = '512000'; $old="256000"; }elseif ($currank == "Don"){ $max = '1024000'; $old="512000"; }elseif ($currank == "Gudfar"){ $max = '2048000'; $old="1024000"; } $percent = round((($rankp-$old)/($max-$old))*100, 2); ?> Endret 10. juni 2010 av Belthazor Lenke til kommentar
Crowly Skrevet 11. juni 2010 Del Skrevet 11. juni 2010 Er ikke nødvendig med noen While løkke her når du uansett kun henter en rad, kan forenkles til f. eks dette: $retard = mysql_fetch_row(mysql_query("SELECT `rankpoints`, `rank` FROM `users` WHERE `username`='$username'"))) $rankp= $retard[0]; $currank= $retard[1]; -- Det er vel bare å legge til en update sql? Noe i denne duren om jeg har forstått det riktig ... $sql=sprintf("UPDATE `users` SET `rankpoints`=%d, `rank`='%s' WHERE `username`='%s'", $rankp, $new_rank_title, $username); if (mysql_query($sql)) echo "Update successful"; else echo "Updated failed"; // oppdatert beregning // f. eks Bråkmaker med rankp = 225: (225-(400-200))/(400-200)*100 = 12,5%. // 25 er 12,5% av 200, som er differansen mellom $old og $max for Bråkmaker $percent = round(($rankp-($max-$old))/($max-$old)*100,2); Lenke til kommentar
Belthazor Skrevet 11. juni 2010 Forfatter Del Skrevet 11. juni 2010 (endret) Må jeg da legge inn $sql=sprintf("UPDATE `users` SET `rankpoints`=%d, `rank`='%s' WHERE `username`='%s'", $rankp, $new_rank_title, $username); if (mysql_query($sql)) echo "Update successful"; else echo "Updated failed"; for eksempel. if ($currank == "Noob"){ $max = "100"; $old="0"; $sql=sprintf("UPDATE `users` SET `rankpoints`=%d, `rank`='%s' WHERE `username`='%s'", $rankp, $new_rank_title, $username); if (mysql_query($sql)) echo "Update successful"; else echo "Updated failed"; må jeg legge inn for hver rank?? og der det står %d og %s, hva betyr der? Endret 11. juni 2010 av Belthazor Lenke til kommentar
Warz Skrevet 11. juni 2010 Del Skrevet 11. juni 2010 %d betyr at det er et nummer og %s betyr at det er en string (altså tekst). sprintf() funksjonen setter dermed single quotes rundt %s, men ikke rundt %d. Når funksjonen kjøres bytter den ut %d og %s med variablene som er skrevet på slutten der... Lenke til kommentar
Jonas Skrevet 11. juni 2010 Del Skrevet 11. juni 2010 Det er ikke standard oppførsel av funksjonen å legge til fnutter rundt strengrepresentasjoner. Tviler nesten på at det er et alternativ i det hele tatt. http://no2.php.net/sprintf Lenke til kommentar
MikkelRev Skrevet 12. juni 2010 Del Skrevet 12. juni 2010 Nei det holder å ha spørringen en gang nederst. Ikke at det fikser mafiascriptet ditt, men jeg ville vurdert å bytte alle de elseif'ene med switch() http://no.php.net/manual/en/control-structures.switch.php Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå