Hvad skyldes denne fejl ?
HejJeg bruger et script til at fortælle hvor mange der er online på min side, som jeg fandt her: http://www.dunweber.com/docs/scripts/kildekoder/counter.source.php
Men nogle gange får jeg denne fejl:
Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 7 in /volume1/web/counter.php on line 123
Er der nogle der kan fortælle mig hvad der er galt med scriptet ?
<?php
#####################################################
# Forfatter: Christian L. Dünweber [www.dunweber.com]
# Version: 2007-04-19
#
# Dette script må frit benyttes, ændres og videre-
# gives sålænge denne besked bevares.
#####################################################
# Onlinetællerfunktionen kaldes med et argument i sekunder, f.eks. 5 minutter = 300 sekunder
# Argumentet gør at brugeren står som online i det fastsatte antal sekunder
echo online("300");
# Tællerfunktionen som benytter MySQL-tabellen counter
function online($onlinetid) {
# Ændrer nedenstående fire til din databases værdier
$link = mysql_connect("HOST","BRUGERNAVN","PASSWORD");
mysql_select_db("DATABASENAVN_EVT_BRUGERNAVN");
# Snupper brugerens IP-adresse og user-agent-navn
$ip = $_SERVER["REMOTE_ADDR"];
$agent = $_SERVER["HTTP_USER_AGENT"];
# Der tjekkes om brugeren skulle være en søgerobot der ikke skal indsættes og give hit
# Der kan tilføjes andre søgerobotter ved at tilføje && !eregi("ROBOTNAVN",$agent)
if(!eregi("Googlebot",$agent) &&
!eregi("MSNBot",$agent) &&
!eregi("Scooter",$agent) &&
!eregi("WebCrawler",$agent) &&
!eregi("Slurp",$agent) &&
!eregi("Lycos_Spider",$agent)) {
# Er brugeren i tabellen?
$ny_bruger = mysql_query("SELECT null FROM online WHERE ip='$ip'");
# Hvis ikke så indsættes han/hun ellers opdateres brugerens tidpunkt til nu
if(!mysql_result($ny_bruger,0)) {
mysql_query("INSERT INTO online SET tid=NOW(), ip='$ip'");
} else {
mysql_query("UPDATE online SET tid=NOW() WHERE ip='$ip'");
}
}
# Brugere der ikke har foretaget sig noget i den fastsatte onlinetid slettes
# fra tabellen
mysql_query("DELETE FROM online WHERE date_add(tid,interval $onlinetid SECOND)<NOW()");
# Antal online tælles aom antallet af rækker i tabellen
$online = mysql_query("SELECT COUNT(*) FROM online");
if(!$online) {
$online = 1;
}
mysql_close($link);
return "Online : " . mysql_result($online,0);
}
?>
Linie 123 siger:
if(!mysql_result($ny_bruger,0)) {
mysql_query("INSERT INTO online SET tid=NOW(), ip='$ip'");
} else {
mysql_query("UPDATE online SET tid=NOW() WHERE ip='$ip'");
}