Avatar billede riverhorse Nybegynder
09. januar 2008 - 07:35 Der er 1 kommentar

Hvorfor får jeg 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 rosvall Nybegynder
29. januar 2008 - 21:42 #1
Det er for pokker et php-spørgsmål.
Så vidt jeg kan se er det en harmløs advarsel, som du kan undertrykke med et @;
Prøv med
if(!@mysql_result($ny_bruger,0)) {
...
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
Computerworld tilbyder specialiserede kurser i database-management

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