Avatar billede riverhorse Nybegynder
16. januar 2008 - 20:37 Der er 2 kommentarer

Hvad skyldes denne fejl ?

Hej
Jeg 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'");
        }
Avatar billede j4k0b Nybegynder
16. januar 2008 - 21:17 #1
Fejlen opstår her:

return "Online : " . mysql_result($online,0);

...pga. at du prøve at trække række nr. 0 (index) ud af dit resultat af en tidl. mysql forespørgsel. Det kunne f.eks. løses ved at erstatte linien med disse linier:

if(mysql_num_rows($online)) {
    return "Online : " . mysql_result($online,0);
} else {
    return "Ingen brugere online";
}
Avatar billede riverhorse Nybegynder
16. januar 2008 - 23:05 #2
Så giver det 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
Online : 1
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