![]() |
hitta nivå bland lista
har en lista som ser ut såhär:
0 10 50 100 200 500 1000 om en person har värdet 75 hamnar han på 50 nivån om en person har värdet 100 hamnar han på 100 nivån Om en person har värdet 0 hamnar han på 0 nivån Hur kan jag enklast veta vilken nivå en användare är på om den har ett visst värde. Detta kan gärna göras som en SQL fråga annars går pseudo bra |
select max(level_limits) where user_points >= level_limits;
Otestad kod, men känns rätt i mitt huvud :-) |
Logiken i nedan pseudocode funkar så att när den väl hittar en match så hoppar den vidare till slutet av funktionen.
Pseudocode: Kod:
begin function getLevel(value) |
Citat:
|
Citat:
|
Citat:
select max(level_limits) from level_limits_table where user_points >= level_limits; |
Här kommer lite SQL-kod som jag testat i MS SQL-server 2008 R2, har sånt sabla problem att få MySQL 5.5.28.2 att fungera.
Kod:
Kod:
-- Lägg upp definitionen av alla tabellerna Kod:
-- kolla innehållet i hela tabellen, så det ser ut att vara OK Kod:
-- Så här får man fram rätt LEVEL |
Här kommer lite stored procedures som kan vara till hjälp:
Kod:
CREATE PROCEDURE [dbo].[LevelInsert] |
Citat:
|
Min modell av det hela är mer generell och öppen för utbyggnad och flexibilitet.
Bland annat kan man använda en benämning på nivåerna som är helt oberoende från värdet på poängen i tabellen. Man kan på ett enkelt sätt justera beräkningen av vilken nivå man hamnar på i en enskild SP utan att ändra en rad i programkoden. Enbart en ändring i SPn räcker. |
Alla tider är GMT +2. Klockan är nu 15:37. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson