Avatar billede martinbk Nybegynder
15. april 2003 - 14:32 Der er 6 kommentarer og
1 løsning

hjælp til fejlrettelse i online script

hejsa eksperter jeg har lavet dette lille online script der gerne skulle udskrive 2 tal, antal brugere på min side og antal gæster på min side, men som det er nu fungere skidtet bare ikke nogen der kan fortælle mig hvad der er galt
kode:
<?
$ip = $_SERVER[REMOTE_ADDR];
$past = time()-120;
$ctime = time();
if ($_SESSION['user']) {
        $guest = 1;
}
else {
        $guest = 0;
}
mysql_query("DELETE FROM online WHERE time < $past") or die(mysql_error());
$res = mysql_query("SELECT ip FROM online") or die(mysql_error());
while($ipcheck = mysql_fetch_array($res)) {
        if ($ipcheck[ip] != $ip) {
                mysql_query("INSERT INTO online (time, ip, guest) VALUES ('$ctime', '$ip', '$guest')");
        }
        elseif ($ipcheck[ip] == $ip) {
                mysql_query("UPDATE online SET time='$ctime', ip='$ip', guest='$guest' WHERE ip='$ip'");
        }
}
$gres = mysql_query("SELECT * FROM online WHERE guest=1") or die(mysql_error());
$guest = mysql_num_rows($gres);

$mres = mysql_query("SELECT * FROM online WHERE guest=0") or die(mysql_error());
$member = mysql_num_rows($mres);
?>

på forhånd tak
Avatar billede Slettet bruger
15. april 2003 - 14:54 #1
kommer der nogen fejl?
Avatar billede martinbk Nybegynder
15. april 2003 - 15:00 #2
nej den udskriver bare begge variabler til at værre 0
Avatar billede tipsen Nybegynder
15. april 2003 - 20:20 #3
Det sædvanlige spild af server ressourcer:

$gres = mysql_query("SELECT * FROM online WHERE guest=1") or die(mysql_error());
$guest = mysql_num_rows($gres);

$mres = mysql_query("SELECT * FROM online WHERE guest=0") or die(mysql_error());
$member = mysql_num_rows($mres);

rettes til:

$gres = mysql_query("SELECT COUNT(*) FROM online WHERE guest=1") or die(mysql_error());
$guest = mysql_result($gres ,0);

$mres = mysql_query("SELECT COUNT(*) FROM online WHERE guest=0") or die(mysql_error());
$member = mysql_result($mres, 0);

det gør det samme som før - bare *meget* hurtigere! (Dvs. selvom det ikke retter din fejl, så brug det alligevel!)
Avatar billede martinbk Nybegynder
16. april 2003 - 00:14 #4
hmm takker for rådet tipsen, men ingen der kan fortælle mig hvorfor der ikke indsættes noget i min tabel ?
Avatar billede martinbk Nybegynder
16. april 2003 - 11:46 #5
har selv fundet fejlen ..
Avatar billede tipsen Nybegynder
16. april 2003 - 12:12 #6
hvad var fejlen?
Avatar billede martinbk Nybegynder
25. april 2003 - 12:15 #7
ved ikke helt hvad der var galt med den kode, men jeg ændrede min while lykke til en almindelige:
$res = mysql_query("SELECT ip FROM online WHERE ip='$ip'") or die(mysql_error());

if( mysql_num_rows($res) == 1 ) {
kom til at tænke på der er jo entlig kun 1 ip
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