Avatar billede hollow Nybegynder
12. december 2009 - 17:14 Der er 4 kommentarer og
1 løsning

PHP besøgstæller virker ikke

Jeg er ved at lave en besøgstæller som registrer den besøgendes ip og den dato som den besøgende besøger siden på.

Min database indeholder 3 koloner id, visitor-ip, visitor_date


Jeg kan ikke få den min if til at virke.. den bliver ved med at registrere ip og dato når man opdatere siden, kan ikke lige se hvad der skulle være galt


Min kode ser således ud:

// Opdater besøgs antallet hver gang en ip besøger siden, bliver kun registeret en gang pr. dag
$visitor_ip=$_SERVER['REMOTE_ADDR'];
$visitor_date = date("d-m-y");



$check_visit = 'SELECT * FROM visitors WHERE ip='.$visitor_ip.' AND date='.$visitor_date.'';
$check_visit_query = mysql_query($check_visit);
$check_visit_count = mysql_num_rows($check_visit_query);

if($check_visit_count!=1) {
mysql_query("INSERT INTO visitors (visitor_ip, visitor_date) VALUES ('$visitor_ip', '$visitor_date') ");
} else {
die(mysql_error());
}

$count_visitors ='SELECT * FROM visitors';
$count_visitors_query = mysql_query($count_visitors);
$number_of_visitors = mysql_num_rows($count_visitors_query);
Avatar billede hollow Nybegynder
12. december 2009 - 17:16 #1
Har rettet en fejl i min $check_visit hvor ip skulle være visitor_ip og date skulle være visitor_date

Det virker stadig ikke
12. december 2009 - 17:38 #2
Det er ikke helt klart hvad du vil opnaa.  Vil du taelle paa hvor mange forskellige datoer en bruger har besoegt siden?  Altsaa hvis en besoeger med en IP adresse 12 dec 2009 har besoegt siden fem gange saa vil du taelle 1?

Og hvad goer koden saa i stedet?  Taeller hvert besoeg saaledes at de fem besoeg 12 dec indfoeres fem gange i databasen?

Jeg kan ikke forstaa din if-loekke (maaske er det der det gaar galt.)  Du undersoeger om en IP adresse for en dato findes i databasen.  Hvis den findes en gang saa vil du have en mysql_error, hvis den findes 0 eller 2 eller flere gange saa indfoerer du den paany.  Jeg ville mene at hvis IP adressen for datoen ikke findes saa indfoerer du den, ellers goer du ingenting.  Altsaa denne if-loekke:

if($check_visit_count=0)
{
  mysql_query("INSERT INTO visitors (visitor_ip, visitor_date) VALUES ('$visitor_ip', '$visitor_date') ");
}
Avatar billede or.han Nybegynder
13. december 2009 - 19:45 #3
Nu ved jeg ikke om din datatype (i databasen) for 'visitor_date' er varchar eller date, men hvis den er date, så burde der i stedet for

$visitor_date = date("d-m-y");

stå

$visitor_date = date("Y-m-d");


Ved ikke om du har rettet denne fejl, men din query mangler nogle gåseøjne. I stedet for

$check_visit = 'SELECT * FROM visitors WHERE ip='.$visitor_ip.' AND date='.$visitor_date.'';

burde queryen se således ud

$check_visit = "SELECT * FROM visitors WHERE vistor_ip = '{$visitor_ip}' AND date = '{$visitor_date}'";
Avatar billede hollow Nybegynder
14. december 2009 - 14:02 #4
Havde rette gåseøjnene :) og date står som varchar..

Christian: jeg fik det til at virke på din metode, åbenlyst.. så logisk at det skulle gøres på den måde :) smid lige et svar
14. december 2009 - 14:26 #5
Her er mit svar.
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