Avatar billede DePlex Nybegynder
27. november 2010 - 17:53 Der er 19 kommentarer og
2 løsninger

Level system

Hej eksperter!

Jeg har et forum hvor jeg gerne vil have et level system... Det skal være sådan at man f.eks. stiger level ved 10 forum indlæg, hvordan kan jeg gøre det?
Avatar billede kentora Nybegynder
27. november 2010 - 18:02 #1
Du kan give brugerne point for hvert indlæg, eller lade brugere rate en person på hans indlæg, guides m.m, hvordan du nu vælger at gøre, og så bare gemme det i en mysql.

Så kan du lave en table hvor du skriver rang-navne, og hvad kravet for point er, og så bare lave et opslag fra hvor mange point en bruger har..

Håber du kan bruge det til noget. :)
Avatar billede DePlex Nybegynder
27. november 2010 - 19:47 #2
Har det her:

<?php
include("include/session.php");

$post = mysql_query("SELECT forum_posts FROM users WHERE username ='$session->username'");

if ($post >= 0 && $post <= 5)
{
echo 'Du er level 1';
}
elseif ($post >= 6 && $post <= 10)
{
echo 'Du er level 2';
}
?>

Men det gider ikke vise hvilket level man er i og kan ikke rigtig se hvorfor.
Avatar billede repox Seniormester
27. november 2010 - 20:07 #3
Det er fordi at $post er et mysql resultat; en resource - ikke et tal du kan regne med.
Så skal du gøre noget ala
<?php
include("include/session.php");

$res = mysql_query("SELECT forum_posts FROM users WHERE username ='$session->username'");
$post = mysql_num_rows($post);

if ($post >= 0 && $post <= 5)
{
echo 'Du er level 1';
}
elseif ($post >= 6 && $post <= 10)
{
echo 'Du er level 2';
}
?>
Avatar billede webweaver Praktikant
27. november 2010 - 21:02 #4
$post = mysql_num_rows($post);

skal bare lige ændres til

$post = mysql_num_rows($res);

Så skal det også nok virke.
Men var helt sikkert også det repox ville frem til! :)
Avatar billede repox Seniormester
27. november 2010 - 21:37 #5
Jaeh, lille copy-paste fejl... ;)
Avatar billede showsource Seniormester
28. november 2010 - 13:31 #6
Måske:

$post = mysql_result(mysql_query("SELECT COUNT(*) FROM users WHERE username ='$session->username'"),0);

// antal posts for at "opgradere"
$step = 10;

// mindste og største opgradering
$minimum = 1;
$maximum = 10;

// aktuelt level
$level = floor($post/$step);

echo $level."<p>";


$vist_level = ($level == 0 ? $minimum : ($level >= $maximum ? $maximum : ($post%$level == 0 && ($level+1) < $maximum ? ($level+1) : $level)));

echo $vist_level;
Avatar billede DePlex Nybegynder
28. november 2010 - 18:26 #7
Kan ikke rigtig få det til at virke... I feltet forum_posts står der jo hvor mange indlæg man har skrevet... Og lige meget hvor mange jeg skriver er jeg altid level 1. Kan ikke rigtig lige se hvad jeg kan gøre.
Avatar billede webweaver Praktikant
28. november 2010 - 18:52 #8
Hvad for et eksempel arbejder du ud fra?
Avatar billede DePlex Nybegynder
28. november 2010 - 19:16 #9
Jeg arbejder ud fra:


<?php
include("include/session.php");

$res = mysql_query("SELECT forum_posts FROM users WHERE username ='$session->username'");
$post = mysql_num_rows($post);

if ($post >= 0 && $post <= 5)
{
echo 'Du er level 1';
}
elseif ($post >= 6 && $post <= 10)
{
echo 'Du er level 2';
}
?>
Avatar billede DePlex Nybegynder
28. november 2010 - 19:18 #10
Og har rettet $post til $res.. copy paste fejl :-)
Avatar billede webweaver Praktikant
28. november 2010 - 19:59 #11
Hvis du udskriver $post på siden, hvilken værdi har det så? Den rigtige værdi? Altså echo $post;
Avatar billede DePlex Nybegynder
28. november 2010 - 20:08 #12
Nej det får værdien nul når jeg bruger echo $post, men i min db er den 11.
Avatar billede kentora Nybegynder
28. november 2010 - 20:18 #13
Prøv med mysql_num_rows i stedet for mysql_num_rows..? :)
Avatar billede DePlex Nybegynder
28. november 2010 - 20:19 #14
Øhh... Hvad er forskellen? :-)
Avatar billede kentora Nybegynder
28. november 2010 - 20:20 #15
Du skal også lige tænke på at du med den her kode tæller hvor mange rækker der er, og det lyder som om det er et felt du opdaterer i din DB?
Avatar billede kentora Nybegynder
28. november 2010 - 20:21 #16
Det ved jeg ikke, men jeg har erfaring med at det nogle gange hjælper at skifte ud.
Avatar billede DePlex Nybegynder
28. november 2010 - 20:23 #17
Kentora... Det ved jeg... Men jeg ved ikke hvordan jeg får 11 tallet frem så jeg kan bruge det til at regne med :)
Avatar billede kentora Nybegynder
28. november 2010 - 20:28 #18
Hvis det er et felt du opdaterer, så skal du skrive noget alá:

[code]
<?php
include("include/session.php");

$res = mysql_query("SELECT forum_posts FROM users WHERE username ='$session->username'");
$post2 = mysql_fetch_array($res);
$post = $post2['forum_posts'];

if ($post >= 0 && $post <= 5)
{
echo 'Du er level 1';
}
elseif ($post >= 6 && $post <= 10)
{
echo 'Du er level 2';
}
?>
[/code]

hvor feltet forum_posts så er det felt du har antal i. :)
Avatar billede DePlex Nybegynder
28. november 2010 - 20:35 #19
Tak! Kentora og repox opret svar :)
Avatar billede repox Seniormester
30. november 2010 - 10:57 #20
Jamen, jeg smider da et svar, så vi kan få lukket...
Avatar billede kentora Nybegynder
04. december 2010 - 18:08 #21
Svar :)
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