Avatar billede Erik Jensen Juniormester
13. november 2018 - 19:12 Der er 25 kommentarer og
2 løsninger

Problemer med ældre php tæller script!

Jeg har en ældre php tæller script liggende på min hjemmeside - www.zerious.dk - men efter at One.com har opgraderet til nyeste php version er den blevet sat ud af drift, hvilket jeg er ked af.
Og da jeg ikke er programmør, har jeg brug for hjælp til at få det omskrevet til nyeste php version 7.2. Scriptet er på ca 20 linjer.
Er der evt. en af jer her, der kan omskrive det, eller kender en person, der kan gøre det for mig, vil det glæde mig?

Venlig hilsen Erik Jensen
Avatar billede Slater Ekspert
13. november 2018 - 19:15 #1
Det skulle jo gerne være let nok. Hvad med bare at smide koden herind, eller evt. i en pastebin.com - så kan vi nok få ordnet det hurtigt.
Avatar billede Erik Jensen Juniormester
13. november 2018 - 19:29 #2
Tak for det - koden kommer her:

$dag = "d".date("dmy");
$maaned = "m".date("my");
$aar = "y".date("y");
$ip = $_SERVER['REMOTE_ADDR'];
$besoegt_idag = mysql_query("SELECT COUNT(*) AS antal FROM $tablecount WHERE ip='$ip' AND date_add(time,interval 30 MINUTE) > NOW() ORDER BY id DESC LIMIT 0,1") or die(mysql_error());
if (!mysql_result($besoegt_idag,0)) {
mysql_query("insert into $tablecount (time, ip, dag, maaned, aar) values (NOW(),'$ip', '$dag', '$maaned', '$aar')");
}
$fetchday = mysql_query("select dag from $tablecount where dag = '$dag'");
$daghit = mysql_num_rows($fetchday);
$fetchmonth = mysql_query("select maaned from $tablecount where maaned = '$maaned'");
$maanedhit = mysql_num_rows($fetchmonth);
$fetchyear = mysql_query("select aar from $tablecount where aar = '$aar'");
$aarhit = mysql_num_rows($fetchyear);
$besoeg_ialt = mysql_query("SELECT COUNT(*) AS antal FROM $tablecount");
$ny_count = mysql_result($besoeg_ialt,0);
mysql_close($db);
print'<table id="tabletaeller">';
print("<tr><td>Idag har der hidtil været&nbsp;:&nbsp;$daghit besøgende på siden</td></tr>");
print("<tr><td>For hele månedet er det:&nbsp;$maanedhit</td></tr>");
print("<tr><td>På årsbasis bliver det til:&nbsp;$aarhit ialt</td></tr>");
print("<tr><td>Og siden tællerstart i alt&nbsp;:&nbsp;$ny_count personer</td></tr>");
print'</table>';
?>
        <h4>Tak for besøget!</h4>
        <div id="tid">
<?php
$m_navn = array(1 => 'januar','februar','marts','april','maj','juni','juli','august','september','oktober','november','december');
$d_navn = array('søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag');
$d = date('d');
$n = date('n');
$w = date('w');
$y = date('Y');
print"&nbsp;&nbsp;&nbsp;&nbsp;Senest opdateret - $d_navn[$w] d. $d $m_navn[$n] $y ". date("");
?>

Jeg håber det kan lykkes - tusind tak.
Hilsen Erik Jensen
Avatar billede htx98i17 Professor
13. november 2018 - 20:53 #3
Utestet.

Tilpas mysql forbindelse parametre.
Jeg formoder at variablen $tablecount er defineret andetsteds.


<?php
    $host = "";
    $bruger = "";
    $kode = "";
    $database = "";
   
    if($mysqli = new mysqli($host, $bruger, $kode, $database)) {
   
        $dag = "d".date("dmy");
        $maaned = "m".date("my");
        $aar = "y".date("y");
       
        $ip = $_SERVER['REMOTE_ADDR'];
       
        if($besoegt_idag = $mysqli->prepare("SELECT COUNT(*) AS antal FROM ? WHERE ip = ? AND date_add(time,interval 30 MINUTE) > NOW() ORDER BY id DESC LIMIT 0,1" )) {
           
            $besoegt_idag->bind_param('ss',$tablecount,$ip);
            $besoegt_idag->execute();
            $besoegt_idag->bind_result($antal);
            $besoegt_idag->store_result();
   
   
            if ($antal<1) {
               
                if($registrer = $mysqli->prepare("insert into ? (time, ip, dag, maaned, aar) values (NOW(),?,?,?,?) " )) {
           
                    $registrer->bind_param('sssss',$tablecount,$ip,$dag,$maaned,$aar);
                    $registrer->execute();
               
                } else {
               
                    echo($mysqli->error);
               
                }
               
                $registrer->close();
            }
       
       
        } else {
           
            echo($mysqli->error);
           
        }
       
        $besoegt_idag->close();
       
        if($fetchday = $mysqli->prepare("select dag from ? where dag = ? " )) {
           
            $fetchday->bind_param('ss',$tablecount,$dag);
            $fetchday->execute();
            $fetchday->store_result();
            $daghit = $fetchday->num_rows;
           
           
        } else {
   
            echo($mysqli->error);
           
        }
       
        $fetchday->close();
       
        if($fetchmonth = $mysqli->prepare("select dag from ? where maaned = ? " )) {
           
            $fetchmonth->bind_param('ss',$tablecount,$maaned);
            $fetchmonth->execute();
            $fetchmonth->store_result();
            $maanedhit = $fetchmonth->num_rows;
           
           
        } else {
   
            echo($mysqli->error);
           
        }
       
        $fetchmonth->close();
       
       
        if($fetchyear = $mysqli->prepare("select dag from ? where aar = ? " )) {
           
            $fetchyear->bind_param('ss',$tablecount,$aar);
            $fetchyear->execute();
            $fetchyear->store_result();
            $aarhit = $fetchyear->num_rows;
           
           
        } else {
   
            echo($mysqli->error);
           
        }
       
        $fetchyear->close();
       
       
        if($besoeg_ialt = $mysqli->prepare("SELECT * AS antal FROM $tablecount" )) {
           
            $besoeg_ialt->execute();
            $besoeg_ialt->store_result();
            $ny_count = $besoeg_ialt->num_rows;
           
           
        } else {
   
            echo($mysqli->error);
           
        }
       
        $besoeg_ialt->close();
       
        print'<table id="tabletaeller">';
        print("<tr><td>Idag har der hidtil været&nbsp;:&nbsp;$daghit besøgende på siden</td></tr>");
        print("<tr><td>For hele månedet er det:&nbsp;$maanedhit</td></tr>");
        print("<tr><td>På årsbasis bliver det til:&nbsp;$aarhit ialt</td></tr>");
        print("<tr><td>Og siden tællerstart i alt&nbsp;:&nbsp;$ny_count personer</td></tr>");
        print'</table>';
    ?>
   
    <h4>Tak for besøget!</h4>
     
    <div id="tid">
   
    <?php
        $m_navn = array(1 => 'januar','februar','marts','april','maj','juni','juli','august','september','oktober','november','december');
        $d_navn = array('søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag');
        $d = date('d');
        $n = date('n');
        $w = date('w');
        $y = date('Y');
       
        print"&nbsp;&nbsp;&nbsp;&nbsp;Senest opdateret - $d_navn[$w] d. $d $m_navn[$n] $y ". date("");
    ?>
   
<?php
   
    } else {
       
        echo("Databaseforbindelse fejler".$mysqli->error);
       
    }
   
?>
Avatar billede expnet Seniormester
13. november 2018 - 20:54 #4
Du skal nok også have rette der hvor du laver din mysql forbindelse

hvis du sender den her ind UDEN dine oplysninger. kan vi også få det plads.

$dag = "d".date("dmy");
$maaned = "m".date("my");
$aar = "y".date("y");
$ip = $_SERVER['REMOTE_ADDR'];
$besoegt_idag = mysqli_query($dbConn, "SELECT COUNT(*) AS antal FROM $tablecount WHERE ip='$ip' AND date_add(time,interval 30 MINUTE) > NOW() ORDER BY id DESC LIMIT 0,1") or die(mysql_error());
if (!mysqli_result($besoegt_idag,0)) {
mysqli_query($dbConn, "insert into $tablecount (time, ip, dag, maaned, aar) values (NOW(),'$ip', '$dag', '$maaned', '$aar')");
}
$fetchday = mysqli_query($dbConn, "select dag from $tablecount where dag = '$dag'");
$daghit = mysqli_num_rows($fetchday);
$fetchmonth = mysqli_query($dbConn, "select maaned from $tablecount where maaned = '$maaned'");
$maanedhit = mysqli_num_rows($fetchmonth);
$fetchyear = mysqli_query($dbConn, "select aar from $tablecount where aar = '$aar'");
$aarhit = mysqli_num_rows($fetchyear);
$besoeg_ialt = mysql_query($dbConn, "SELECT COUNT(*) AS antal FROM $tablecount");
$ny_count = mysqli_result($besoeg_ialt,0);
mysqli_close($dbConn);
print'<table id="tabletaeller">';
print("<tr><td>Idag har der hidtil været&nbsp;:&nbsp;$daghit besøgende på siden</td></tr>");
print("<tr><td>For hele månedet er det:&nbsp;$maanedhit</td></tr>");
print("<tr><td>På årsbasis bliver det til:&nbsp;$aarhit ialt</td></tr>");
print("<tr><td>Og siden tællerstart i alt&nbsp;:&nbsp;$ny_count personer</td></tr>");
print'</table>';
?>
        <h4>Tak for besøget!</h4>
        <div id="tid">
<?php
$m_navn = array(1 => 'januar','februar','marts','april','maj','juni','juli','august','september','oktober','november','december');
$d_navn = array('søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag');
$d = date('d');
$n = date('n');
$w = date('w');
$y = date('Y');
print"&nbsp;&nbsp;&nbsp;&nbsp;Senest opdateret - $d_navn[$w] d. $d $m_navn[$n] $y ". date("");
?>

Du er også velkommen til at smide en PB til mig så kan jeg hjælpe dig det
Avatar billede expnet Seniormester
13. november 2018 - 20:55 #5
rettet lige et en fejl:

$dag = "d".date("dmy");
$maaned = "m".date("my");
$aar = "y".date("y");
$ip = $_SERVER['REMOTE_ADDR'];
$besoegt_idag = mysqli_query($dbConn, "SELECT COUNT(*) AS antal FROM $tablecount WHERE ip='$ip' AND date_add(time,interval 30 MINUTE) > NOW() ORDER BY id DESC LIMIT 0,1") or die(mysql_error());
if (!mysqli_result($besoegt_idag,0)) {
mysqli_query($dbConn, "insert into $tablecount (time, ip, dag, maaned, aar) values (NOW(),'$ip', '$dag', '$maaned', '$aar')");
}
$fetchday = mysqli_query($dbConn, "select dag from $tablecount where dag = '$dag'");
$daghit = mysqli_num_rows($fetchday);
$fetchmonth = mysqli_query($dbConn, "select maaned from $tablecount where maaned = '$maaned'");
$maanedhit = mysqli_num_rows($fetchmonth);
$fetchyear = mysqli_query($dbConn, "select aar from $tablecount where aar = '$aar'");
$aarhit = mysqli_num_rows($fetchyear);
$besoeg_ialt = mysqli_query($dbConn, "SELECT COUNT(*) AS antal FROM $tablecount");
$ny_count = mysqli_result($besoeg_ialt,0);
mysqli_close($dbConn);
print'<table id="tabletaeller">';
print("<tr><td>Idag har der hidtil været&nbsp;:&nbsp;$daghit besøgende på siden</td></tr>");
print("<tr><td>For hele månedet er det:&nbsp;$maanedhit</td></tr>");
print("<tr><td>På årsbasis bliver det til:&nbsp;$aarhit ialt</td></tr>");
print("<tr><td>Og siden tællerstart i alt&nbsp;:&nbsp;$ny_count personer</td></tr>");
print'</table>';
?>
        <h4>Tak for besøget!</h4>
        <div id="tid">
<?php
$m_navn = array(1 => 'januar','februar','marts','april','maj','juni','juli','august','september','oktober','november','december');
$d_navn = array('søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag');
$d = date('d');
$n = date('n');
$w = date('w');
$y = date('Y');
print"&nbsp;&nbsp;&nbsp;&nbsp;Senest opdateret - $d_navn[$w] d. $d $m_navn[$n] $y ". date("");
?>
Avatar billede Erik Jensen Juniormester
13. november 2018 - 21:20 #6
Det må være den her du mener:
$tablecount = "counter";
// Navn på tabel i dette tilfælde counter
// Database forbindelse skal ikke rettes
$db = mysql_connect ( $host , $user , $pass );
mysql_select_db ( $dbase );
mysql_query("SET NAMES 'utf8'");
?>

Så vidt jeg forstår det er den den der skaber forbindelsen til MySgl hos One.com
Avatar billede htx98i17 Professor
13. november 2018 - 21:38 #7
Ja, så prøv at definere de 5 første variabler og sæt den kode ind. Så kommer der nok nogle fejl og jeg er på vej i seng, så natteravnene må gerne tage over hvis de vil.


<?php
    $host = "";
    $bruger = "";
    $kode = "";
    $database = "";
   
    $tablecount = "counter";
   
    if($mysqli = new mysqli($host, $bruger, $kode, $database)) {
        $mysqli->set_charset("utf8");
        $dag = "d".date("dmy");
        $maaned = "m".date("my");
        $aar = "y".date("y");
       
        $ip = $_SERVER['REMOTE_ADDR'];
       
        if($besoegt_idag = $mysqli->prepare("SELECT COUNT(*) AS antal FROM ? WHERE ip = ? AND date_add(time,interval 30 MINUTE) > NOW() ORDER BY id DESC LIMIT 0,1" )) {
           
            $besoegt_idag->bind_param('ss',$tablecount,$ip);
            $besoegt_idag->execute();
            $besoegt_idag->bind_result($antal);
            $besoegt_idag->store_result();
   
   
            if ($antal<1) {
               
                if($registrer = $mysqli->prepare("insert into ? (time, ip, dag, maaned, aar) values (NOW(),?,?,?,?) " )) {
           
                    $registrer->bind_param('sssss',$tablecount,$ip,$dag,$maaned,$aar);
                    $registrer->execute();
               
                } else {
               
                    echo($mysqli->error);
               
                }
               
                $registrer->close();
            }
       
       
        } else {
           
            echo($mysqli->error);
           
        }
       
        $besoegt_idag->close();
       
        if($fetchday = $mysqli->prepare("select dag from ? where dag = ? " )) {
           
            $fetchday->bind_param('ss',$tablecount,$dag);
            $fetchday->execute();
            $fetchday->store_result();
            $daghit = $fetchday->num_rows;
           
           
        } else {
   
            echo($mysqli->error);
           
        }
       
        $fetchday->close();
       
        if($fetchmonth = $mysqli->prepare("select dag from ? where maaned = ? " )) {
           
            $fetchmonth->bind_param('ss',$tablecount,$maaned);
            $fetchmonth->execute();
            $fetchmonth->store_result();
            $maanedhit = $fetchmonth->num_rows;
           
           
        } else {
   
            echo($mysqli->error);
           
        }
       
        $fetchmonth->close();
       
       
        if($fetchyear = $mysqli->prepare("select dag from ? where aar = ? " )) {
           
            $fetchyear->bind_param('ss',$tablecount,$aar);
            $fetchyear->execute();
            $fetchyear->store_result();
            $aarhit = $fetchyear->num_rows;
           
           
        } else {
   
            echo($mysqli->error);
           
        }
       
        $fetchyear->close();
       
       
        if($besoeg_ialt = $mysqli->prepare("SELECT * AS antal FROM $tablecount" )) {
           
            $besoeg_ialt->execute();
            $besoeg_ialt->store_result();
            $ny_count = $besoeg_ialt->num_rows;
           
           
        } else {
   
            echo($mysqli->error);
           
        }
       
        $besoeg_ialt->close();
       
        print'<table id="tabletaeller">';
        print("<tr><td>Idag har der hidtil været&nbsp;:&nbsp;$daghit besøgende på siden</td></tr>");
        print("<tr><td>For hele månedet er det:&nbsp;$maanedhit</td></tr>");
        print("<tr><td>På årsbasis bliver det til:&nbsp;$aarhit ialt</td></tr>");
        print("<tr><td>Og siden tællerstart i alt&nbsp;:&nbsp;$ny_count personer</td></tr>");
        print'</table>';
    ?>
   
    <h4>Tak for besøget!</h4>
     
    <div id="tid">
   
    <?php
        $m_navn = array(1 => 'januar','februar','marts','april','maj','juni','juli','august','september','oktober','november','december');
        $d_navn = array('søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag');
        $d = date('d');
        $n = date('n');
        $w = date('w');
        $y = date('Y');
       
        print"&nbsp;&nbsp;&nbsp;&nbsp;Senest opdateret - $d_navn[$w] d. $d $m_navn[$n] $y ". date("");
    ?>
   
<?php
   
    } else {
       
        echo("Databaseforbindelse fejler".$mysqli->error);
       
    }
   
?>
Avatar billede Erik Jensen Juniormester
13. november 2018 - 21:54 #8
Ok. Men kan en af jer evt. fortælle mig, hvilken version jeg skal bruge, den fra bruger HTX98i17 eller Expnet?
Avatar billede Erik Jensen Juniormester
13. november 2018 - 22:09 #9
Desuden ligger MySql forbindelsen i en separat fil der blot hedder db.php og det er den, der indeholder dette:

$tablecount = "counter";
// Navn på tabel i dette tilfælde counter
// Database forbindelse skal ikke rettes
$db = mysql_connect ( $host , $user , $pass );
mysql_select_db ( $dbase );
mysql_query("SET NAMES 'utf8'");
?>

Men i det svar HTX98i17 har skrevet, kan jeg ikke forstå, hvad jeg skal rette ???

Hilsen Erik
Avatar billede htx98i17 Professor
14. november 2018 - 06:23 #10
Der må være mere i den fil, noget ala:

$user = "ditbrugernavn";
$pass = "din kode"
osv...


Men du kan bruge nedenstående:

<?php
   
    include("db.php");
   
    if($mysqli = new mysqli($host, $user, $pass, $dbase)) {
   
        $dag = "d".date("dmy");
        $maaned = "m".date("my");
        $aar = "y".date("y");
       
        $ip = $_SERVER['REMOTE_ADDR'];
       
        if($besoegt_idag = $mysqli->prepare("SELECT COUNT(*) AS antal FROM ? WHERE ip = ? AND date_add(time,interval 30 MINUTE) > NOW() ORDER BY id DESC LIMIT 0,1" )) {
           
            $besoegt_idag->bind_param('ss',$tablecount,$ip);
            $besoegt_idag->execute();
            $besoegt_idag->bind_result($antal);
            $besoegt_idag->store_result();
   
   
            if ($antal<1) {
               
                if($registrer = $mysqli->prepare("insert into ? (time, ip, dag, maaned, aar) values (NOW(),?,?,?,?) " )) {
           
                    $registrer->bind_param('sssss',$tablecount,$ip,$dag,$maaned,$aar);
                    $registrer->execute();
               
                } else {
               
                    echo($mysqli->error);
               
                }
               
                $registrer->close();
            }
       
       
        } else {
           
            echo($mysqli->error);
           
        }
       
        $besoegt_idag->close();
       
        if($fetchday = $mysqli->prepare("select dag from ? where dag = ? " )) {
           
            $fetchday->bind_param('ss',$tablecount,$dag);
            $fetchday->execute();
            $fetchday->store_result();
            $daghit = $fetchday->num_rows;
           
           
        } else {
   
            echo($mysqli->error);
           
        }
       
        $fetchday->close();
       
        if($fetchmonth = $mysqli->prepare("select dag from ? where maaned = ? " )) {
           
            $fetchmonth->bind_param('ss',$tablecount,$maaned);
            $fetchmonth->execute();
            $fetchmonth->store_result();
            $maanedhit = $fetchmonth->num_rows;
           
           
        } else {
   
            echo($mysqli->error);
           
        }
       
        $fetchmonth->close();
       
       
        if($fetchyear = $mysqli->prepare("select dag from ? where aar = ? " )) {
           
            $fetchyear->bind_param('ss',$tablecount,$aar);
            $fetchyear->execute();
            $fetchyear->store_result();
            $aarhit = $fetchyear->num_rows;
           
           
        } else {
   
            echo($mysqli->error);
           
        }
       
        $fetchyear->close();
       
       
        if($besoeg_ialt = $mysqli->prepare("SELECT * AS antal FROM $tablecount" )) {
           
            $besoeg_ialt->execute();
            $besoeg_ialt->store_result();
            $ny_count = $besoeg_ialt->num_rows;
           
           
        } else {
   
            echo($mysqli->error);
           
        }
       
        $besoeg_ialt->close();
       
        print'<table id="tabletaeller">';
        print("<tr><td>Idag har der hidtil været&nbsp;:&nbsp;$daghit besøgende på siden</td></tr>");
        print("<tr><td>For hele månedet er det:&nbsp;$maanedhit</td></tr>");
        print("<tr><td>På årsbasis bliver det til:&nbsp;$aarhit ialt</td></tr>");
        print("<tr><td>Og siden tællerstart i alt&nbsp;:&nbsp;$ny_count personer</td></tr>");
        print'</table>';
    ?>
   
    <h4>Tak for besøget!</h4>
     
    <div id="tid">
   
    <?php
        $m_navn = array(1 => 'januar','februar','marts','april','maj','juni','juli','august','september','oktober','november','december');
        $d_navn = array('søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag');
        $d = date('d');
        $n = date('n');
        $w = date('w');
        $y = date('Y');
       
        print"&nbsp;&nbsp;&nbsp;&nbsp;Senest opdateret - $d_navn[$w] d. $d $m_navn[$n] $y ". date("");
    ?>
   
<?php
   
    } else {
       
        echo("Databaseforbindelse fejler".$mysqli->error);
       
    }
   
?>


og så skal du slette følgende i din db.php:

// Database forbindelse skal ikke rettes
$db = mysql_connect ( $host , $user , $pass );
mysql_select_db ( $dbase );
mysql_query("SET NAMES 'utf8'");
Avatar billede expnet Seniormester
14. november 2018 - 06:48 #11
du opdater din db.php med det her og retter koder til

// her skal du skrive din oplysninger
$host = '';
$user = '';
$pass = '';
$db = '';

$tablecount = "counter";
// Navn på tabel i dette tilfælde counter
// Database forbindelse skal ikke rettes
$dbConn = mysqli_connect($host, $user, $pass, $db);
mysqli_query($dbConn, "SET NAMES 'utf8'");
Avatar billede Erik Jensen Juniormester
14. november 2018 - 10:28 #12
Min db.php fil indeholder dette og KUN dette:

<?php
// konfiguration variabler
//
$host =  "xxxxx";
// Din MySQL Host, næsten altid localhost, tjek med din udbyder
//
$user = "xxxxx";
// MySQL brugernavn
//
$pass = "xxxxx";
// MySQL password
//
$dbase = "xxxxx";
// MySQL Navn på den database du bruger
//
$tablecount = "counter";
// Navn på tabel i dette tilfælde counter
// Database forbindelse skal ikke rettes
$db = mysql_connect ( $host , $user , $pass );
mysql_select_db ( $dbase );
mysql_query("SET NAMES 'utf8'");
?>

Der hvor der står xxxxx har jeg mine private oplysninger stående, derfor x'er.
Det er absolut vidunderligt, at I vil hjælpe, men er der noget her jeg misforstår, hvis jeg læser jeres løsninger til at være forskellige?
Jeg har undret mig over at på den side, der formodes at skulle vise min tællerfunktion, der ligger koden stadig på siden - og bliver som sagt ikke vist.
Jeg har selvfølgelig skrevet til One.com for at få at vide hvordan det hænger sammen.
Men lige så snart jeg har fået et svar fra dem prøver jeg jeres løsninger og håber at en af dem vil hjælpe. En af dem skal nok virke :-)

Hilsen Erik
Avatar billede htx98i17 Professor
14. november 2018 - 11:51 #13
Ja det er 2 forskellige løsninger.

Gør som jeg skriver i #10.
Avatar billede Erik Jensen Juniormester
14. november 2018 - 17:12 #14
Ved at bruge forslaget i #10 er der desværre en fejl. Den kan ses på min hjemmeside under tælleren. Kan det løses?
Avatar billede Erik Jensen Juniormester
14. november 2018 - 17:16 #15
Fejlen ser sådan ud:

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '? WHERE ip = ? AND date_add(time,interval 30 MINUTE) > NOW() ORDER BY id DESC LI' at line 1
Avatar billede Erik Jensen Juniormester
14. november 2018 - 17:23 #16
Og så har jeg prøvet forslaget fra Expnet i #5 - der giver følgende resultat:

Tællerfunktionen er indsat den 23 januar 2014.
Avatar billede htx98i17 Professor
14. november 2018 - 18:08 #17
prøv dette


<?php
   
    include("db.php");
   
    if($mysqli = new mysqli($host, $user, $pass, $dbase)) {
   
        $dag = "d".date("dmy");
        $maaned = "m".date("my");
        $aar = "y".date("y");
       
        $ip = $_SERVER['REMOTE_ADDR'];
       
        if($besoegt_idag = $mysqli->prepare("SELECT COUNT(*) AS antal FROM counter WHERE ip = ? AND date_add(time,interval 30 MINUTE) > NOW() ORDER BY id DESC LIMIT 0,1" )) {
           
            $besoegt_idag->bind_param('s',$ip);
            $besoegt_idag->execute();
            $besoegt_idag->bind_result($antal);
            $besoegt_idag->store_result();
   
   
            if ($antal<1) {
               
                if($registrer = $mysqli->prepare("insert into counter (time, ip, dag, maaned, aar) values (NOW(),?,?,?,?) " )) {
           
                    $registrer->bind_param('ssss',$ip,$dag,$maaned,$aar);
                    $registrer->execute();
               
                } else {
               
                    echo($mysqli->error);
               
                }
               
                $registrer->close();
            }
       
       
        } else {
           
            echo($mysqli->error);
           
        }
       
        $besoegt_idag->close();
       
        if($fetchday = $mysqli->prepare("select dag from counter where dag = ? " )) {
           
            $fetchday->bind_param('s',$dag);
            $fetchday->execute();
            $fetchday->store_result();
            $daghit = $fetchday->num_rows;
           
           
        } else {
   
            echo($mysqli->error);
           
        }
       
        $fetchday->close();
       
        if($fetchmonth = $mysqli->prepare("select dag from counter where maaned = ? " )) {
           
            $fetchmonth->bind_param('s',$maaned);
            $fetchmonth->execute();
            $fetchmonth->store_result();
            $maanedhit = $fetchmonth->num_rows;
           
           
        } else {
   
            echo($mysqli->error);
           
        }
       
        $fetchmonth->close();
       
       
        if($fetchyear = $mysqli->prepare("select dag from counter where aar = ? " )) {
           
            $fetchyear->bind_param('s',$aar);
            $fetchyear->execute();
            $fetchyear->store_result();
            $aarhit = $fetchyear->num_rows;
           
           
        } else {
   
            echo($mysqli->error);
           
        }
       
        $fetchyear->close();
       
       
        if($besoeg_ialt = $mysqli->prepare("SELECT * AS antal FROM counter" )) {
           
            $besoeg_ialt->execute();
            $besoeg_ialt->store_result();
            $ny_count = $besoeg_ialt->num_rows;
           
           
        } else {
   
            echo($mysqli->error);
           
        }
       
        $besoeg_ialt->close();
       
        print'<table id="tabletaeller">';
        print("<tr><td>Idag har der hidtil været&nbsp;:&nbsp;$daghit besøgende på siden</td></tr>");
        print("<tr><td>For hele månedet er det:&nbsp;$maanedhit</td></tr>");
        print("<tr><td>På årsbasis bliver det til:&nbsp;$aarhit ialt</td></tr>");
        print("<tr><td>Og siden tællerstart i alt&nbsp;:&nbsp;$ny_count personer</td></tr>");
        print'</table>';
    ?>
   
    <h4>Tak for besøget!</h4>
     
    <div id="tid">
   
    <?php
        $m_navn = array(1 => 'januar','februar','marts','april','maj','juni','juli','august','september','oktober','november','december');
        $d_navn = array('søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag');
        $d = date('d');
        $n = date('n');
        $w = date('w');
        $y = date('Y');
       
        print"&nbsp;&nbsp;&nbsp;&nbsp;Senest opdateret - $d_navn[$w] d. $d $m_navn[$n] $y ". date("");
    ?>
   
<?php
   
    } else {
       
        echo("Databaseforbindelse fejler".$mysqli->error);
       
    }
   
?>
Avatar billede Erik Jensen Juniormester
14. november 2018 - 18:27 #18
Har lige uploaded dit forslag, men men...
Lige så snart jeg vælger punktet Besøgstæller kommer der med det samme en helt blank skærm - intet andet. Og samtidig ryger jeg ud af hjemmesiden.
Avatar billede Erik Jensen Juniormester
14. november 2018 - 18:28 #19
Jeg skal lige ned og ha købt noget mad - vender tilbage ;-)
Avatar billede htx98i17 Professor
14. november 2018 - 18:33 #20
Det er nemmere hvis du poster al koden fra starten.

Hvor ligger filen db.php ift counter.php?
Avatar billede Erik Jensen Juniormester
14. november 2018 - 19:08 #21
Her er hele den php kode jeg har uploaded:

<?php
include("db.php");
<?php
 
    include("db.php");
 
    if($mysqli = new mysqli($host, $user, $pass, $dbase)) {
 
        $dag = "d".date("dmy");
        $maaned = "m".date("my");
        $aar = "y".date("y");
     
        $ip = $_SERVER['REMOTE_ADDR'];
     
        if($besoegt_idag = $mysqli->prepare("SELECT COUNT(*) AS antal FROM counter WHERE ip = ? AND date_add(time,interval 30 MINUTE) > NOW() ORDER BY id DESC LIMIT 0,1" )) {
         
            $besoegt_idag->bind_param('s',$ip);
            $besoegt_idag->execute();
            $besoegt_idag->bind_result($antal);
            $besoegt_idag->store_result();
 
 
            if ($antal<1) {
             
                if($registrer = $mysqli->prepare("insert into counter (time, ip, dag, maaned, aar) values (NOW(),?,?,?,?) " )) {
         
                    $registrer->bind_param('ssss',$ip,$dag,$maaned,$aar);
                    $registrer->execute();
             
                } else {
             
                    echo($mysqli->error);
             
                }
             
                $registrer->close();
            }
     
     
        } else {
         
            echo($mysqli->error);
         
        }
     
        $besoegt_idag->close();
     
        if($fetchday = $mysqli->prepare("select dag from counter where dag = ? " )) {
         
            $fetchday->bind_param('s',$dag);
            $fetchday->execute();
            $fetchday->store_result();
            $daghit = $fetchday->num_rows;
         
         
        } else {
 
            echo($mysqli->error);
         
        }
     
        $fetchday->close();
     
        if($fetchmonth = $mysqli->prepare("select dag from counter where maaned = ? " )) {
         
            $fetchmonth->bind_param('s',$maaned);
            $fetchmonth->execute();
            $fetchmonth->store_result();
            $maanedhit = $fetchmonth->num_rows;
         
         
        } else {
 
            echo($mysqli->error);
         
        }
     
        $fetchmonth->close();
     
     
        if($fetchyear = $mysqli->prepare("select dag from counter where aar = ? " )) {
         
            $fetchyear->bind_param('s',$aar);
            $fetchyear->execute();
            $fetchyear->store_result();
            $aarhit = $fetchyear->num_rows;
         
         
        } else {
 
            echo($mysqli->error);
         
        }
     
        $fetchyear->close();
     
     
        if($besoeg_ialt = $mysqli->prepare("SELECT * AS antal FROM counter" )) {
         
            $besoeg_ialt->execute();
            $besoeg_ialt->store_result();
            $ny_count = $besoeg_ialt->num_rows;
         
         
        } else {
 
            echo($mysqli->error);
         
        }
     
        $besoeg_ialt->close();
     
        print'<table id="tabletaeller">';
        print("<tr><td>Idag har der hidtil været&nbsp;:&nbsp;$daghit besøgende på siden</td></tr>");
        print("<tr><td>For hele månedet er det:&nbsp;$maanedhit</td></tr>");
        print("<tr><td>På årsbasis bliver det til:&nbsp;$aarhit ialt</td></tr>");
        print("<tr><td>Og siden tællerstart i alt&nbsp;:&nbsp;$ny_count personer</td></tr>");
        print'</table>';
    ?>
 
    <h4>Tak for besøget!</h4>
   
    <div id="tid">
 
    <?php
        $m_navn = array(1 => 'januar','februar','marts','april','maj','juni','juli','august','september','oktober','november','december');
        $d_navn = array('søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag');
        $d = date('d');
        $n = date('n');
        $w = date('w');
        $y = date('Y');
     
        print"&nbsp;&nbsp;&nbsp;&nbsp;Senest opdateret - $d_navn[$w] d. $d $m_navn[$n] $y ". date("");
    ?>
 
<?php
 
    } else {
     
        echo("Databaseforbindelse fejler".$mysqli->error);
     
    }
 
?>

Og her er den db. php jeg bruger:

<?php
// konfiguration variabler
//
$host =  "xxxxx";
// Din MySQL Host, næsten altid localhost, tjek med din udbyder
//
$user = "xxxxx";
// MySQL brugernavn
//
$pass = "xxxxx";
// MySQL password
//
$dbase = "xxxxx";
// MySQL Navn på den database du bruger
//
$tablecount = "counter";
// Navn på tabel i dette tilfælde counter
?>

Db.php ligger i samme bibliotek som counter, desuden også i roden af hjemmesiden - det 2 er ens
Avatar billede htx98i17 Professor
14. november 2018 - 19:18 #22
Du har ikke indsat den kode jeg postede i #17
Prøv igen og meld nye fejl ind.
Avatar billede Erik Jensen Juniormester
14. november 2018 - 19:31 #23
Nu har jeg taget en nøjagtig kopi af din #17 og uploaded, men den melder desværre stadig fejl som du kan se på siden
Avatar billede htx98i17 Professor
14. november 2018 - 19:45 #24
ja jeg er lidt rusten, så fejl var forventet. og det er nok ikke den sidste.

prøv


<?php
   
    include("db.php");
   
    if($mysqli = new mysqli($host, $user, $pass, $dbase)) {
   
        $dag = "d".date("dmy");
        $maaned = "m".date("my");
        $aar = "y".date("y");
       
        $ip = $_SERVER['REMOTE_ADDR'];
       
        if($besoegt_idag = $mysqli->prepare("SELECT COUNT(*) FROM counter WHERE ip = ? AND date_add(time,interval 30 MINUTE) > NOW() ORDER BY id DESC LIMIT 0,1" )) {
           
            $besoegt_idag->bind_param('s',$ip);
            $besoegt_idag->execute();
            $besoegt_idag->bind_result($antal);
            $besoegt_idag->store_result();
   
   
            if ($antal<1) {
               
                if($registrer = $mysqli->prepare("insert into counter (time, ip, dag, maaned, aar) values (NOW(),?,?,?,?) " )) {
           
                    $registrer->bind_param('ssss',$ip,$dag,$maaned,$aar);
                    $registrer->execute();
               
                } else {
               
                    echo($mysqli->error);
               
                }
               
                $registrer->close();
            }
       
       
        } else {
           
            echo($mysqli->error);
           
        }
       
        $besoegt_idag->close();
       
        if($fetchday = $mysqli->prepare("select dag from counter where dag = ? " )) {
           
            $fetchday->bind_param('s',$dag);
            $fetchday->execute();
            $fetchday->store_result();
            $daghit = $fetchday->num_rows;
           
           
        } else {
   
            echo($mysqli->error);
           
        }
       
        $fetchday->close();
       
        if($fetchmonth = $mysqli->prepare("select dag from counter where maaned = ? " )) {
           
            $fetchmonth->bind_param('s',$maaned);
            $fetchmonth->execute();
            $fetchmonth->store_result();
            $maanedhit = $fetchmonth->num_rows;
           
           
        } else {
   
            echo($mysqli->error);
           
        }
       
        $fetchmonth->close();
       
       
        if($fetchyear = $mysqli->prepare("select dag from counter where aar = ? " )) {
           
            $fetchyear->bind_param('s',$aar);
            $fetchyear->execute();
            $fetchyear->store_result();
            $aarhit = $fetchyear->num_rows;
           
           
        } else {
   
            echo($mysqli->error);
           
        }
       
        $fetchyear->close();
       
       
        if($besoeg_ialt = $mysqli->prepare("SELECT * AS antal FROM counter" )) {
           
            $besoeg_ialt->execute();
            $besoeg_ialt->store_result();
            $ny_count = $besoeg_ialt->num_rows;
           
           
        } else {
   
            echo($mysqli->error);
           
        }
       
        $besoeg_ialt->close();
       
        print'<table id="tabletaeller">';
        print("<tr><td>Idag har der hidtil været&nbsp;:&nbsp;$daghit besøgende på siden</td></tr>");
        print("<tr><td>For hele månedet er det:&nbsp;$maanedhit</td></tr>");
        print("<tr><td>På årsbasis bliver det til:&nbsp;$aarhit ialt</td></tr>");
        print("<tr><td>Og siden tællerstart i alt&nbsp;:&nbsp;$ny_count personer</td></tr>");
        print'</table>';
    ?>
   
    <h4>Tak for besøget!</h4>
     
    <div id="tid">
   
    <?php
        $m_navn = array(1 => 'januar','februar','marts','april','maj','juni','juli','august','september','oktober','november','december');
        $d_navn = array('søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag');
        $d = date('d');
        $n = date('n');
        $w = date('w');
        $y = date('Y');
       
        print"&nbsp;&nbsp;&nbsp;&nbsp;Senest opdateret - $d_navn[$w] d. $d $m_navn[$n] $y ". date("");
    ?>
   
<?php
   
    } else {
       
        echo("Databaseforbindelse fejler".$mysqli->error);
       
    }
   
?>
Avatar billede htx98i17 Professor
14. november 2018 - 19:56 #25
Og hvis det hjalp på den fejl, så kommer der bare en ny længere nede. Så prøv med denne:


<?php
   
    include("db.php");
   
    if($mysqli = new mysqli($host, $user, $pass, $dbase)) {
   
        $dag = "d".date("dmy");
        $maaned = "m".date("my");
        $aar = "y".date("y");
       
        $ip = $_SERVER['REMOTE_ADDR'];
       
        if($besoegt_idag = $mysqli->prepare("SELECT COUNT(*) FROM counter WHERE ip = ? AND date_add(time,interval 30 MINUTE) > NOW() ORDER BY id DESC LIMIT 0,1" )) {
           
            $besoegt_idag->bind_param('s',$ip);
            $besoegt_idag->execute();
            $besoegt_idag->bind_result($antal);
            $besoegt_idag->store_result();
   
   
            if ($antal<1) {
               
                if($registrer = $mysqli->prepare("insert into counter (time, ip, dag, maaned, aar) values (NOW(),?,?,?,?) " )) {
           
                    $registrer->bind_param('ssss',$ip,$dag,$maaned,$aar);
                    $registrer->execute();
               
                } else {
               
                    echo($mysqli->error);
               
                }
               
                $registrer->close();
            }
       
       
        } else {
           
            echo($mysqli->error);
           
        }
       
        $besoegt_idag->close();
       
        if($fetchday = $mysqli->prepare("select dag from counter where dag = ? " )) {
           
            $fetchday->bind_param('s',$dag);
            $fetchday->execute();
            $fetchday->store_result();
            $daghit = $fetchday->num_rows;
           
           
        } else {
   
            echo($mysqli->error);
           
        }
       
        $fetchday->close();
       
        if($fetchmonth = $mysqli->prepare("select dag from counter where maaned = ? " )) {
           
            $fetchmonth->bind_param('s',$maaned);
            $fetchmonth->execute();
            $fetchmonth->store_result();
            $maanedhit = $fetchmonth->num_rows;
           
           
        } else {
   
            echo($mysqli->error);
           
        }
       
        $fetchmonth->close();
       
       
        if($fetchyear = $mysqli->prepare("select dag from counter where aar = ? " )) {
           
            $fetchyear->bind_param('s',$aar);
            $fetchyear->execute();
            $fetchyear->store_result();
            $aarhit = $fetchyear->num_rows;
           
           
        } else {
   
            echo($mysqli->error);
           
        }
       
        $fetchyear->close();
       
       
        if($besoeg_ialt = $mysqli->prepare("SELECT * FROM counter" )) {
           
            $besoeg_ialt->execute();
            $besoeg_ialt->store_result();
            $ny_count = $besoeg_ialt->num_rows;
           
           
        } else {
   
            echo($mysqli->error);
           
        }
       
        $besoeg_ialt->close();
       
        print'<table id="tabletaeller">';
        print("<tr><td>Idag har der hidtil været&nbsp;:&nbsp;$daghit besøgende på siden</td></tr>");
        print("<tr><td>For hele månedet er det:&nbsp;$maanedhit</td></tr>");
        print("<tr><td>På årsbasis bliver det til:&nbsp;$aarhit ialt</td></tr>");
        print("<tr><td>Og siden tællerstart i alt&nbsp;:&nbsp;$ny_count personer</td></tr>");
        print'</table>';
    ?>
   
    <h4>Tak for besøget!</h4>
     
    <div id="tid">
   
    <?php
        $m_navn = array(1 => 'januar','februar','marts','april','maj','juni','juli','august','september','oktober','november','december');
        $d_navn = array('søndag','mandag','tirsdag','onsdag','torsdag','fredag','lørdag');
        $d = date('d');
        $n = date('n');
        $w = date('w');
        $y = date('Y');
       
        print"&nbsp;&nbsp;&nbsp;&nbsp;Senest opdateret - $d_navn[$w] d. $d $m_navn[$n] $y ". date("");
    ?>
   
<?php
   
    } else {
       
        echo("Databaseforbindelse fejler".$mysqli->error);
       
    }
   
?>
Avatar billede Erik Jensen Juniormester
14. november 2018 - 20:08 #26
Yes yes yes...., den er der :-)
Tusind tusind tak for hjælpen - hilsen Erik
ps: heldigvis var du alligevel ikke så rusten :-)
Avatar billede Erik Jensen Juniormester
04. marts 2019 - 15:22 #27
Jeg har tidligere været så heldig her på siden at få rettet koden til min tæller. Desværre tænkte jeg ikke lige over, at besøgsresultatet bliver vist på min hjemmeside på en skæv/ulige måde, hvilket kan ses her:
http://www.zerious.dk/counter/counter.php

Er der evt. en af jer dygtige folk, der kan rette koden til, så den fremover viser besøgene på en lidt mere lige/pænere måde?

Venlig hilsen Erik
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