18. november 2005 - 10:53
Der er
36 kommentarer og 1 løsning
Hvordan lavet jeg et simpelt level system ?
Haii Eksperter .. Vil en af jer hjælpe mig med et simpelt men funktionelt level system ? det skal være sån at den tæller hvor lang tid man har været online , og så mellem visse timer skal den så omsætte det til et level , fx Mellem 1 til 5 er det level 1 mellem 5 til 10 er det level 2 osv .. det er bare nogen eksempler .. og så når den har regnet ud hvad lvl man har , så skal den gemme det i Databasen i en tabel som hedder "users" og row som hedder "lvl" ... eR det noget i kan hjælpe Meed? hvor mange oplysninger skal i bruge ? jeg sætter gerne flere point ud hvis det blir nødvendigt .. 100 Point til at starte med , ligger flere ud hvis det er nødvendigt .. !
Annonceindlæg fra Computerworld
AI-agenterne kommer vrimlende
Virksomheder er på vej fra store sprogmodeller, der svarer på spørgsmål, til AI-agenter, der kan udføre opgaver på egen hånd. Det gør teknologien mere nyttig – og langt mere risikabel.
18. november 2005 - 20:20
#1
Prøv at se her: <?php //http://exp.dk/spm/665517 function calcLevel($login_time_UNIX) { $difference = time() - $login_time_UNIX; $fullHours = floor($difference / 3600); $level = 0; switch(true) { case $fullHours > 0 && $fullHours <= 5: $level = 1; break; case $fullHours > 5 && $fullHours <= 10: $level = 2; break; case $fullHours > 10 && $fullHours <= 15: $level = 3; break; case $fullHours > 15 && $fullHours <= 20: $level = 4; break; case $fullHours > 20 && $fullHours <= 25: $level = 5; break; case $fullHours > 25 && $fullHours <= 30: $level = 6; break; case $fullHours > 30 && $fullHours <= 35: $level = 7; break; case $fullHours > 35 && $fullHours <= 40: $level = 8; break; case $fullHours > 40 && $fullHours <= 45: $level = 9; break; case $fullHours > 45 && $fullHours <= 50: $level = 10; break; default: $level = 0; } return $level; } $test = mktime(11, 0, 0, 11, 18, 2005); echo calcLevel($test); ?>
18. november 2005 - 20:21
#2
Når du trækker login tiden ud af din database, så bruge: SELECT UNIX_TIMESTAMP(datotid) AS unix WHERE user = brugerID og hvor du så vil bruge level, laver du: echo calcLevel($row["unix"]);
20. november 2005 - 16:59
#3
Hvilke Tabeller / Rows skal jeg så oprette i min db ? kan se jeg skal lave en row som hedder "unix" men hvad hedder tabellen ? kan du skrive den så at den kommer til at ligge i Tabellen users ? eller gør den det ?
20. november 2005 - 17:01
#4
WHERE user = brugerID Der skal vel stå: WHERE username = userid .... ? hvordan er det den trækker id'et ud ? er det ikke: $id=[getid] eller noed i den stil ???
20. november 2005 - 17:08
#5
hvad skal den så hedde i den her? print "<img src=\"png.php?lvl=calcLevel($row["unix"])\">"; ??? skal den se sådan ud ellR hvad ? ^^^^^^
20. november 2005 - 17:40
#6
Jeg har prøvet , jeg kan ikk få den til at virke .. der skal vel stå noget før : SELECT UNIX_TIMESTAMP(datotid) AS unix WHERE user = brugerID der skal vel stå $ ???? den ser sån ud: $SELECT UNIX_TIMESTAMP(datotid) AS unix WHERE (username='$id'); har jeg lavet fejl ?
20. november 2005 - 20:17
#7
mysql_query("SELECT UNIX_TIMESTAMP(datotid) AS unix WHERE user = ".$_SESSION["brugerID"]." LIMIT 1");
20. november 2005 - 23:01
#8
altså PHP filen kommer så til at se således ud: <php include="sql.php"; //http://exp.dk/spm/665517 function calcLevel($login_time_UNIX) { $difference = time() - $login_time_UNIX; $fullHours = floor($difference / 3600); $level = 0; switch(true) { case $fullHours > 0 && $fullHours <= 5: $level = 1; break; case $fullHours > 5 && $fullHours <= 10: $level = 2; break; case $fullHours > 10 && $fullHours <= 15: $level = 3; break; case $fullHours > 15 && $fullHours <= 20: $level = 4; break; case $fullHours > 20 && $fullHours <= 25: $level = 5; break; case $fullHours > 25 && $fullHours <= 30: $level = 6; break; case $fullHours > 30 && $fullHours <= 35: $level = 7; break; case $fullHours > 35 && $fullHours <= 40: $level = 8; break; case $fullHours > 40 && $fullHours <= 45: $level = 9; break; case $fullHours > 45 && $fullHours <= 50: $level = 10; break; default: $level = 0; } return $level; } $test = mktime(11, 0, 0, 11, 18, 2005); echo calcLevel($test); ?> <? mysql_query("SELECT UNIX_TIMESTAMP(datotid) AS unix WHERE username = ".$_SESSION["id"]." LIMIT 1"); ?> <? echo calcLevel($row["unix"]); ?> elleR hvad ? men hvor har den row fra? altså $row["unix"] ... hvis det ikk eR rigtigt vil du så ikk lige skrive den hele ? altså den php fil .. og sige hvilken Row's jeg skal lave ..
21. november 2005 - 08:00
#9
$query = mysql_query("SELECT UNIX_TIMESTAMP(datotid) AS unix WHERE username = ".$_SESSION["id"]." LIMIT 1"); if(mysql_num_rows($query)>0) { $row = mysql_fetch_assoc($query); echo calcLevel($row["unix"]); }
21. november 2005 - 19:11
#10
Den siger fejl i linie 141.. Line 141: if(mysql_num_rows($query)>0) Sån her ser fejlen ud når jeg ser den på siden: 0 Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\websider\vhosts\DOMÆNE.dk\httpdocs\chatnet\loginok.php on line 141
21. november 2005 - 19:35
#11
Så er der noget galt i den sql vi har lavet ovenover.
21. november 2005 - 19:47
#12
Hvor henne er fejlen Såå ? jeg kan ikk se den ..
21. november 2005 - 19:51
#13
Prøv efter: $query = mysql_query("SELECT UNIX_TIMESTAMP(datotid) AS unix WHERE username = ".$_SESSION["id"]." LIMIT 1"); echo mysql_error(); og så: if(mysql_num_rows($query)>0) { $row = mysql_fetch_assoc($query); echo calcLevel($row["unix"]); }
21. november 2005 - 20:09
#14
jeg får denne fejl: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE bow know = 17' at line 1 Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\websider\vhosts\Domæne.dk\httpdocs\chatnet\lvl2.php on line 48 Linie 48: if(mysql_num_rows($query)<0) if(mysql_num_rows($query)>0) Det eR den samme , prøvede bare at vende >< om , men får samme fejl uanset hvad ..
21. november 2005 - 20:12
#15
skal der ikk oZz være en Select til den her : <? function calcLevel($login_time_UNIX) { $difference = time() - $login_time_UNIX; $fullHours = floor($difference / 3600); $level = 0; switch(true) { case $fullHours > 0 && $fullHours <= 5: $level = 1; break; case $fullHours > 5 && $fullHours <= 10: $level = 2; break; case $fullHours > 10 && $fullHours <= 15: $level = 3; break; case $fullHours > 15 && $fullHours <= 20: $level = 4; break; case $fullHours > 20 && $fullHours <= 25: $level = 5; break; case $fullHours > 25 && $fullHours <= 30: $level = 6; break; case $fullHours > 30 && $fullHours <= 35: $level = 7; break; case $fullHours > 35 && $fullHours <= 40: $level = 8; break; case $fullHours > 40 && $fullHours <= 45: $level = 9; break; case $fullHours > 45 && $fullHours <= 50: $level = 10; break; } return $level; } $test = mktime(11, 0, 0, 11, 18, 2005); ?> ???? og hvilke Rows skal jeg lave i min db .. ?
21. november 2005 - 20:15
#16
Problemet er det er noget galt i din sql. Alt andet skulle være ok! Hvad har du i din tabel? Du skal jo som minimum have: brugerID onlinetid
21. november 2005 - 20:20
#17
vil du se et dump af den jeg tester den på ? -- -------------------------------------------------------- -- -- Struktur-dump for tabellen `users` -- CREATE TABLE `users` ( `id` int(5) NOT NULL auto_increment, `username` varchar(15) collate latin1_danish_ci NOT NULL default '', `password` varchar(32) collate latin1_danish_ci NOT NULL default '', `onlinetid` int(10) NOT NULL default '0', PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`,`username`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_danish_ci AUTO_INCREMENT=151 ; -- Sån ser den ud !
21. november 2005 - 20:22
#18
Du har noget helt galt i din SQL. Hvor kommer det her fra: WHERE bow know = 17 Du skulle bruge SQL: $query = mysql_query("SELECT UNIX_TIMESTAMP(datotid) AS unix WHERE username = ".$_SESSION["id"]." LIMIT 1");
21. november 2005 - 20:22
#19
Jeg har lavet en Include .. skal jeg ikk oZz have en Row som hedder unix ?
21. november 2005 - 20:25
#20
Hvad er onlinetid for en fisk? Er det et unix_timestamp som gemmes i den?
21. november 2005 - 20:27
#21
onlinetid er den tid som man har været online i, det var fra et tidligere system .. jeg prøvede men som ikk virkede .. Hvorn kan jeg se det ?
21. november 2005 - 20:28
#22
Prøv at smid noget dump fra din users tabel.
21. november 2005 - 20:30
#23
det eR den der^^^^: -- -------------------------------------------------------- -- -- Struktur-dump for tabellen `users` -- CREATE TABLE `users` ( `id` int(5) NOT NULL auto_increment, `username` varchar(15) collate latin1_danish_ci NOT NULL default '', `password` varchar(32) collate latin1_danish_ci NOT NULL default '', `onlinetid` int(10) NOT NULL default '0', PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`,`username`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_danish_ci AUTO_INCREMENT=151 ; --
21. november 2005 - 20:32
#24
Ja, men jeg mener hvilken slags data du har i onlinetid.
21. november 2005 - 20:33
#25
Der er tal .. Hvad Mener duH helt konkret ? den fil som opdatere onlinetid ?
21. november 2005 - 20:36
#26
Nej, hvad betyder det som står i onlinetid? Er det antal sekunder?
21. november 2005 - 20:39
#27
Jaa , det skulle jeg mene .. 3600 skal der stå før man er online i en time ...
21. november 2005 - 20:41
#28
Så retter du funktionen til: function calcLevel($online_tid) { $fullHours = floor($online_tid / 3600); $level = 0; switch(true) { case $fullHours > 0 && $fullHours <= 5: $level = 1; break; case $fullHours > 5 && $fullHours <= 10: $level = 2; break; case $fullHours > 10 && $fullHours <= 15: $level = 3; break; case $fullHours > 15 && $fullHours <= 20: $level = 4; break; case $fullHours > 20 && $fullHours <= 25: $level = 5; break; case $fullHours > 25 && $fullHours <= 30: $level = 6; break; case $fullHours > 30 && $fullHours <= 35: $level = 7; break; case $fullHours > 35 && $fullHours <= 40: $level = 8; break; case $fullHours > 40 && $fullHours <= 45: $level = 9; break; case $fullHours > 45 && $fullHours <= 50: $level = 10; break; } return $level; } Og så kalder du den med: echo calcLevel($row["onlinetid"]);
21. november 2005 - 20:46
#29
Skal : $query = mysql_query("SELECT UNIX_TIMESTAMP(datotid) AS unix WHERE username = ".$_SESSION["id"]." LIMIT 1"); echo mysql_error(); if(mysql_num_rows($query) < 0){ $row = mysql_fetch_assoc($query); stadig være deR ?
21. november 2005 - 20:56
#30
$query = mysql_query("SELECT onlinetid WHERE username = ".$_SESSION["id"]." LIMIT 1"); if(mysql_num_rows($query) < 0) { $row = mysql_fetch_assoc($query); echo calcLevel($row["onlinetid"]); }
21. november 2005 - 21:01
#31
fejl i Linie 45 .. Line 45: if(mysql_num_rows($query) < 0)
21. november 2005 - 21:04
#32
Ja, men det var jo det vi fandt ud af før! At du har et fejl i din SQL! Af en eller anden årsag skriver du bow how i SQL! Det ser ud som om du sætter det ind i stedet for username
21. november 2005 - 21:06
#33
Sån her ser min lvl fil ud: <? include("inc/sql.php"); $query = mysql_query("SELECT UNIX_TIMESTAMP(datotid) AS unix WHERE username = ".$_SESSION["id"]." LIMIT 1"); function calcLevel($online_tid) { $fullHours = floor($online_tid / 3600); $level = 0; switch(true) { case $fullHours > 0 && $fullHours <= 5: $level = 1; break; case $fullHours > 5 && $fullHours <= 10: $level = 2; break; case $fullHours > 10 && $fullHours <= 15: $level = 3; break; case $fullHours > 15 && $fullHours <= 20: $level = 4; break; case $fullHours > 20 && $fullHours <= 25: $level = 5; break; case $fullHours > 25 && $fullHours <= 30: $level = 6; break; case $fullHours > 30 && $fullHours <= 35: $level = 7; break; case $fullHours > 35 && $fullHours <= 40: $level = 8; break; case $fullHours > 40 && $fullHours <= 45: $level = 9; break; case $fullHours > 45 && $fullHours <= 50: $level = 10; break; } return $level; } $query = mysql_query("SELECT onlinetid WHERE username = ".$_SESSION["id"]." LIMIT 1"); if(mysql_num_rows($query) < 0) { $row = mysql_fetch_assoc($query); echo calcLevel($row["onlinetid"]); } ?>
21. november 2005 - 21:15
#34
Fang mig lige på MSN! jakobdo (at) hotmail (dot) com
12. december 2005 - 19:10
#35
jakob skal du have point her? du hjalp mig trodsalt med at løse det og komme på vej så .. men lig et svar ..
12. december 2005 - 20:00
#36
Svar!
13. december 2005 - 23:24
#37
Takker for point!
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.