webForumDet fria alternativet

är det svårt att göra en räknare

PHP

22 svar · 905 visningar · startad av Emil W

Medlem sedan mars 2009512 inlägg
Frågan#1

Hej jag undrar om det är svårt att göra en besöksräknare som räknar hur många besökare det har varit på en dag ?

Medlem sedan juni 20006 031 inlägg
#2

Nej, det är inte så svårt.

Men vad ska du ha det till?
Ska du skriva ut på sidan hur många besökare du haft en viss dag eller är det bara för att du vill kunna se statistik?
Om det är alternativ två rekommenderar jag dig att använda t ex Google analytics

Medlem sedan mars 2009512 inlägg
#3

för att skriva ut på sidan

Medlem sedan mars 2009512 inlägg
#4

jag har håller på med en databas till den

Medlem sedan mars 2007845 inlägg
#5

Ännu en databas? Om det är till samma sida föreslår jag att du använder samma databas. Man kan ha flera tabeller med varierande innehåll i den sån.

Medlem sedan mars 2009512 inlägg
#6

vad ska jag välja på adress host date och antal för något för typ

Medlem sedan mars 2007845 inlägg
#7

Adress och host är typiska varchar(50). date beror på vad du använder för format. Jag föreslår att du använder Unix timestamp time() och då är den int(11) antal är också int.

Medlem sedan mars 2009512 inlägg
#8

jag hittade ingen det stod Unix timestamp time() i listan med det fanns Timestamp som nummer som står i parantes är det värden/Längd

Medlem sedan juni 20006 031 inlägg
#9

Jag skulle ha gjort ungefär såhär.
En tabell i databasen med namnet online.
Tabellen innehåller fälten ip och time.

Gör en include i din file där du vill ha texten utskriven.

<?php include('online.php'); ?>

online.php

<?php 
$mysql_server = "localhost"; 
$mysql_user = "username"; 
$mysql_password = "password"; 
$mysql_database = "database";
 
$conn = @mysql_connect($mysql_server, $mysql_user, $mysql_password) or die("Counter error"); 
mysql_select_db($mysql_database, $conn); 

// tid som ska räknas, i sekunder
$intSavetime   = 86400;
 
// radera alla poster som är för gamla
mysql_query("DELETE FROM online WHERE time < " . time()) or die();
 
// kolla om ip redan är reggad
$sqlNum = mysql_num_rows(mysql_query("SELECT ip FROM online WHERE ip='" . $_SERVER['REMOTE_ADDR'] . "'"));

// Frågor för update och insert
$sqlUpdate = "UPDATE online SET time='" . (time() + $intSavetime) . "' WHERE ip='" . $_SERVER['REMOTE_ADDR'] . "'";
$sqlNew = "INSERT INTO online (ip, time) VALUES ('" . $_SERVER['REMOTE_ADDR'] . "', '" . (time() + $intSavetime) . "')";
 
// uppdatera om ip redan är räknad,
// annars lägg in ny
if($sqlNum > 0){
   mysql_query($sqlUpdate) or die(mysql_error());
}elseif($sqlNum == 0){
   mysql_query($sqlNew) or die(mysql_error());
}
 
// räkna hur många som har varit online
$numOnline = mysql_num_rows(mysql_query("SELECT ip FROM online"));

// skriv ut antalet
echo "Besökare senaste dygnet: $numOnline st.";
?>
Medlem sedan mars 2007845 inlägg
#10

För att förtydliga så heter funktionen time() och returnerar ett Unix timestamp. Det är sekunder sedan 1970-01-01 kl 00:00:00 GMT.

Medlem sedan mars 2009512 inlägg
#11

Tack så jätte mycket pedda för koden

Medlem sedan juni 20006 031 inlägg
#12

Emil W skrev:

jag hittade ingen det stod Unix timestamp time() i listan med det fanns Timestamp som nummer som står i parantes är det värden/Längd

Välj INT med värdet 11 som drew skrev, inte Timestamp.
Väljer du Timestamp förväntar sig databasen en tid i formatet 0000-00-00 00:00:00

Medlem sedan mars 2009512 inlägg
#13

jag får inte till det jag skapade en databas som heter besokare och tabellen heter online

men han säger på sidan Counter error

jag har inget lösenord på databaserna

Medlem sedan juni 20006 031 inlägg
#14

Har du ändrat mysql uppgifterna till ditt användarnamn, lösen mm?

$mysql_server = "localhost"; 
$mysql_user = "username"; 
$mysql_password = "password"; 
$mysql_database = "database";
Medlem sedan mars 2009512 inlägg
#15

jag behöver aldrig lösenord för att logga in till databaserna

vad ska man skriva där det står $mysql_database = "database"; behöver jag ändra alla dom

Medlem sedan mars 2007845 inlägg
#16

Där ska namnet på din databas stå.

Om du ska ha sidan tillgänglig via internet borde du absolut sätta lösenordsskydda databaserna.

Medlem sedan juni 20006 031 inlägg
#17
$mysql_server = "localhost"; 
$mysql_user = "root"; 
$mysql_password = ""; 
$mysql_database = "besokare";

Jag vet inte vad du har för användarnamn, kanske root fungerar för dig.
I exemplet ovan har jag angett användarnamn som root, inget lösenord och databasen heter besokare.

Medlem sedan mars 2009512 inlägg
#18

hur gör jag då för att sätta lösenord på dom

Medlem sedan juni 20006 031 inlägg
#19

Kör du lokalt på din egen dator behöver du inte sätta något lösenord.

Medlem sedan mars 2009512 inlägg
#20

kan man göra en kod i javascript som registerar besökare så att man lägger den på sin hemsida istället för den långa koden ? så att man måste lägga en registerings koden så innan han börjar och registera besökare

264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)