22. juni 2005 - 15:25Der er
25 kommentarer og 1 løsning
Opdatere onlinetid og kroner på chat
Hey...
Jeg har en kode som skal opdatere onlinetid/kroner mens man er inde på chatten. Altså dvs. en refresh hvert minut for onlinetid, men hvad med kroner når man kun skal have 6 i timen?? Når den laver den update hvert minut, så opdaterer den jo kun onlinetiden som i kan se:
<?php session_start(); if (session_is_registered("Brugernavn")) {
include("mysql.php");
$res = mysql_query("SELECT * FROM brugersystem WHERE Brugernavn = '$_SESSION[Brugernavn]'"); $row = mysql_fetch_array($res);
Sjov måde at takke for mit hidtidige indsats på at hjælpe dig. :^|
Jeg har da ellers angivet to mulige løsningsmodeller, og hvis der er noget du ikke lige forstår ved dem, så er jeg da villig til at forklare mig bedre. Men det kræver jo at du giver mig noget respons.
Mine to forskellige foreslag krævede hver især at du laver en ænding i databasen; Enten laver dit kroner-felt om fra et integer-felt til et float-felt (sådan at du kan tælle kroner & ører). Eller du indføre et felt som tæller reloads. Alt efter hvilken du vælger, skal koden tilpasses på forskellige måder. Så det er det valg du først have taget.
I så fald skal du først og fremmest regne dine point ud i decimaltal. Når man bare bruger "/" imellem to heltal så bruges der heltalsdivision. Tricket består derfor i at introducere et decimaltal:
Det næste problem består nu i at finde ud af om dit PHP-system og om din database bruger engelsk eller dansk notation mht. kommatal. Har du mulighed for at fortælle mig det?
For det første bør du omstrukture din 2. update sådan at der kommer til at stå:
UPDATE brugersystem SET kroner = kroner+0.063333333333333 WHERE Brugernavn = 'direktør'
- altså:
$SQL = "UPDATE brugersystem SET kroner = kroner+$points WHERE Brugernavn = '$_SESSION[Brugernavn]'";
Du behøver m.a.o. ikke at udtrække den krone-værd som der står i forvejen.
For det andet, kan det tænkes at din database meget hellere vil have sine tal med et decimal-komma i stedet for med et decimal-punktum. Altså på denne måde:
UPDATE brugersystem SET kroner = kroner+0,063333333333333 WHERE Brugernavn = 'direktør'
Dette kan du klare med en replace anvendt på $point:
Hmm kan det LAVES så det virker? Eller skal jeg splitte det ad og smide det ind i hver sin iframe, en iframe der opdaterer hvert 15. min (1 kr) og en frame der opdaterer hvert 1. min (minutter)
05/07-2005 22:45:43> Det er mere et spørgsmål om at skrive puritansk SQL-kode. Forskellen på:
$SQL = "UPDATE brugersystem SET kroner = kroner+$points WHERE Brugernavn = '$_SESSION[Brugernavn]'";
- og:
$SQL = "UPDATE brugersystem SET kroner = $row[kroner]+$points WHERE Brugernavn = '$_SESSION[Brugernavn]'";
- er at i den første version, trækker man ikke værdien af feltet kroner ud. Der stå rent faktisk "... kroner = kroner+0.063333333333333 ..." og ikke "... kroner = 3229+0.063333333333333 ..."
Hvis man gør det på den første måde kan man altså spare sig et SQL-kals, nemlig det som trækker den nuværende værdi af kroner ud før at den opdateres.
Jeg lavede det hver for sig, i hver sin iframe...det hastede lidt pga. beta versionen skulle åbne kl 21:00 :P
Synes godt om
Ny brugerNybegynder
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.