13. november 2018 - 19:12Der 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?
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" )) {
print'<table id="tabletaeller">'; print("<tr><td>Idag har der hidtil været : $daghit besøgende på siden</td></tr>"); print("<tr><td>For hele månedet er det: $maanedhit</td></tr>"); print("<tr><td>På årsbasis bliver det til: $aarhit ialt</td></tr>"); print("<tr><td>Og siden tællerstart i alt : $ny_count personer</td></tr>"); print'</table>'; ?>
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
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.
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" )) {
print'<table id="tabletaeller">'; print("<tr><td>Idag har der hidtil været : $daghit besøgende på siden</td></tr>"); print("<tr><td>For hele månedet er det: $maanedhit</td></tr>"); print("<tr><td>På årsbasis bliver det til: $aarhit ialt</td></tr>"); print("<tr><td>Og siden tællerstart i alt : $ny_count personer</td></tr>"); print'</table>'; ?>
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 ???
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" )) {
print'<table id="tabletaeller">'; print("<tr><td>Idag har der hidtil været : $daghit besøgende på siden</td></tr>"); print("<tr><td>For hele månedet er det: $maanedhit</td></tr>"); print("<tr><td>På årsbasis bliver det til: $aarhit ialt</td></tr>"); print("<tr><td>Og siden tællerstart i alt : $ny_count personer</td></tr>"); print'</table>'; ?>
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'");
<?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 :-)
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
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" )) {
print'<table id="tabletaeller">'; print("<tr><td>Idag har der hidtil været : $daghit besøgende på siden</td></tr>"); print("<tr><td>For hele månedet er det: $maanedhit</td></tr>"); print("<tr><td>På årsbasis bliver det til: $aarhit ialt</td></tr>"); print("<tr><td>Og siden tællerstart i alt : $ny_count personer</td></tr>"); print'</table>'; ?>
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.
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" )) {
print'<table id="tabletaeller">'; print("<tr><td>Idag har der hidtil været : $daghit besøgende på siden</td></tr>"); print("<tr><td>For hele månedet er det: $maanedhit</td></tr>"); print("<tr><td>På årsbasis bliver det til: $aarhit ialt</td></tr>"); print("<tr><td>Og siden tællerstart i alt : $ny_count personer</td></tr>"); print'</table>'; ?>
<?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
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" )) {
print'<table id="tabletaeller">'; print("<tr><td>Idag har der hidtil været : $daghit besøgende på siden</td></tr>"); print("<tr><td>For hele månedet er det: $maanedhit</td></tr>"); print("<tr><td>På årsbasis bliver det til: $aarhit ialt</td></tr>"); print("<tr><td>Og siden tællerstart i alt : $ny_count personer</td></tr>"); print'</table>'; ?>
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" )) {
print'<table id="tabletaeller">'; print("<tr><td>Idag har der hidtil været : $daghit besøgende på siden</td></tr>"); print("<tr><td>For hele månedet er det: $maanedhit</td></tr>"); print("<tr><td>På årsbasis bliver det til: $aarhit ialt</td></tr>"); print("<tr><td>Og siden tællerstart i alt : $ny_count personer</td></tr>"); print'</table>'; ?>
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
Synes godt om
Ny brugerNybegynder
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.