Geavanceerde Website counter.

Status
Niet open voor verdere reacties.

pascallino

Gebruiker
Lid geworden
29 dec 2009
Berichten
167
Hallo allemaal,
Ik ben al een poos aan het zoeken voor een goede website counter.
Ik kan alleen niet vinden wat ik zoek.
Ik heb er nu een dat als ik op F5 druk hij er een keer bijop telt.
Dat wil ik niet.
Ik wil ook dat hij de ip's opslaat.
Mvg. Pascallino
 
Ik heb wat gevonden.
Alleen het werk niet helemaal.
Kan iemand mij helpen?
Dit is mijn code:
PHP:
<?php
$conn = mysql_connect("***********", "********", "********");

mysql_select_db("sql01_5790pascal", $conn);

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

$last = mysql_query("SELECT * FROM counter WHERE last_ip = '"$_SERVER['REMOTE_ADDR']"' AND last_visit = '" . $datum . "'") or die(mysql_error());
$row1 = mysql_num_rows( $last );
If ($row1 == 0){
$update = mysql_query("UPDATE counter SET last_ip='"$_SERVER['REMOTE_ADDR']"', last_visit='" . $datum . "' WHERE ID='1'");
If (!$update) {
	die(mysql_error());
}

}
$result = mysql_fetch_assoc($last);
echo "U bent bezoeker nummer:<p>";
echo $result[total_visits];
?>
Ik krijg de volgende foutmelding:
Code:
Parse error: syntax error, unexpected T_VARIABLE in C:\Users\Pascal\Desktop\concrete\xampp\htdocs\teller\index.php on line 6
Mvg. Pascallino
 
Laatst bewerkt:
Ik zie niks vreemds. Ik gok dat er iets mis gaat in je connection string, heb je een dubbele punt of backslash in je wachtwoord staan ofzo?
 
Je kunt ook dit proberen. Geeft een wat gedetailleerder beeld en leeft volledig op je eigen server dus je hoeft niet van derden gebruik te maken.
 
Hm die eerste twee lijken goed. Tenzij er een \ of " in je wachtwoord zit zou het wel moeten werken opzich... ik zie iig niets vreemds. Parse errors kun je meestal wel zien als je code highlighting hebt zoals op het forum.
 
Ik snap er niet veel meer van.
Ik heb nog een aantal aanpasingen gedaan op aanbeveling van vrienden.
Dit is de code:
PHP:
<?php

mysql_connect("www.freesqldatabase.com", "sql01_57901", "*******") or die(mysql_error());
mysql_select_db("sql01_5790pascal") or die(mysql_error());

$datum = date("D-M-Y");

$last = mysql_query("SELECT * FROM counter WHERE last_ip = '"$_SERVER['REMOTE_ADDR']"' AND last_visit = '" . $datum . "'") or die(mysql_error())
$row1 = mysql_num_rows($last)
If ($row1 == 0){
$update = mysql_query("UPDATE counter SET last_ip='"$_SERVER['REMOTE_ADDR']"', last_visit='" . $datum . "' WHERE ID='1'")
If (!$update) {
	die(mysql_error())
}

}
$result = mysql_fetch_assoc($last)
echo "U bent bezoeker nummer:<p>"
echo $result[total_visits]
mysql_close()

?>
Hij geeft nu aan dat het aan lijn 8 ligt.
Please help.
Mvg. Pascallino
 
Oh, nu zie ik het wel. Je had volgensmij de <?php gemist in het andere script, de fout zat niet waar ik keek. Hij zit hier:
PHP:
$last = mysql_query("SELECT * FROM counter WHERE last_ip = '"$_SERVER['REMOTE_ADDR']"' AND last_visit = '" . $datum . "'") or die(mysql_error())

Je mist een paar . operators bij het $_SERVER['REMOTE_ADDR'] gedeelte.
 
Heb het op een andere manier geprobeerd:
PHP:
<?php

mysql_connect("www.freesqldatabase.com", "sql01_57901", "*******") or die(mysql_error());
mysql_select_db("sql01_5790pascal") or die(mysql_error());

$datum = date("D-M-Y");

$last = mysql_query("SELECT * FROM counter WHERE last_ip = '" . $_SERVER['REMOTE_ADDR'] . "' AND last_visit = '" . $datum . "'") or die(mysql_error());
$row1 = mysql_num_rows($last);
If ($row1 == 0){
$update = mysql_query("UPDATE counter SET last_ip='" . $_SERVER['REMOTE_ADDR'] . "', last_visit='" . $datum . "' WHERE ID='1'");
If (!$update) 	{
	die(mysql_error());
		}
	echo "<table border='1'>";

while($row = mysql_fetch_array($last)) {
	echo "<H1>U bent bezoeker nummer</H1>";
	echo "<tr><td>";
	echo $row['total_visits'];
	echo "</tr></td>";
} 
	echo "</table>
	
mysql_close()

?>
Werkt ook niet.
Foutmelding:
Code:
Parse error: syntax error, unexpected $end, expecting T_VARIABLE or T_DOLLAR_OPEN_CURLY_BRACES or T_CURLY_OPEN in C:\Users\Pascal\Desktop\concrete\xampp\htdocs\teller\index.php on line 27

Mvg. Pascal Drewes
 
Je hebt ook nog ergens een set aanhalingstekens gemist aan het eind.

Dit zijn allemaal vrij simpele fouten, als je echt wat wil leren kun je ze beter zelf opzoeken, ze zijn allemaal redelijk vanzelfsprekend namelijk als je er even goed naar kijkt.
 
Ik heb hem aan de praat.
Dit is de code:
PHP:
<?php

mysql_connect("www.freesqldatabase.com", "sql01_57901", "*******") or die(mysql_error());
mysql_select_db("sql01_5790pascal") or die(mysql_error());

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

$last = mysql_query("SELECT * FROM counter WHERE last_ip = '" . $_SERVER['REMOTE_ADDR'] . "' AND last_visit = '" . $datum . "'") or die(mysql_error());
$row1 = mysql_num_rows($last);
If ($row1 == 0){
$update = mysql_query("UPDATE counter SET last_visit='" . $datum . "' WHERE ID='1'") or die(mysql_error());
$update1 = mysql_query("UPDATE counter SET last_ip='" . $SERVER['REMOTE_ADDR'] . "' WHERE ID='1'") or die(mysql_error());

		}
	echo "<table border='1'>";
$select = mysql_query("SELECT * FROM counter") or die(mysql_error());
while($row = mysql_fetch_array($select)) {
	echo "<H1>U bent bezoeker nummer</H1>";
	echo "<tr><td>";
	echo $row['total_visits'];
	echo "</tr></td>";
} 
	echo "</table>";

	
mysql_close();

?>
Alleen hij telt het aantal totaal visits nog niet.
En het ip komt niet in de database te staan.
Dat vakje blijft leeg.
Kan iemand mij daar bij helpen???
Mvg. Pascallino
 
Laatst bewerkt:
PHP:
$update = mysql_query("UPDATE counter SET last_visit='" . $datum . "' WHERE ID='1'") or die(mysql_error());
$update1 = mysql_query("UPDATE counter SET last_ip='" . $SERVER['REMOTE_ADDR'] . "' WHERE ID='1'") or die(mysql_error());
Ik gok dat de ID in de table en auto incerment is. Wat je in deze query doet is het wijzigen van de waardes waar de ID='1' en ik gok dat de ID de waarde moet hebben van deze query
PHP:
$last = mysql_query("SELECT * FROM counter WHERE last_ip = '" . $_SERVER['REMOTE_ADDR'] . "' AND last_visit = '" . $datum . "'")

ik gok het maar want ik weet niet hoe jij je db hebt op gezet. Maar het ziet er wel zo uit!
 
Dat kan.
Mijn tabel:
database1.JPG

De tabel na het uitvoeren van het script:
database2.JPG

Ik snap er niet veel meer van.
Hij update de datum wel.
Dus ik denk dat het niet aan het id ligt.
Mvg. Pascallino
(ps. Een gelukkig kerstfeest iedereen.)
 
als ik je bedoeling goed begrijp, dan wil je een table maken met alles ip adressen die je site bezoeken en hoe vaak een ip je site bezoekt.
want wat je nu doet, dan krijg je niet neer dan 1 record in je table. welke steeds veranderd als er iemand op je site komt. je zult zo nooit meerdere record aan maken

je moet eerst testen of een ip in je table staat, is dat niet dan moet een record aangemaakt wordt en is hij er wel dan moet je het aantal bezoeken met 1 verhogen.
 
Laatst bewerkt:
Mijn bedoeling is dat als je de site bezoekt dat hij kijkt of hij die dag met hetzelfde ip de site al bekeken heeft zoniet dan "last_ip", "last_visit" en "total_visits" veranderen waar "last_ip" het ip is van de laatste bezoeker, "last_visit" de datum dat diegene de site bekijkt en "total_visits" met 1 vermeerdert. Dat is mijn bedoeling. en dat allemaal in een rij.
 
Dat wat jij wilt zal nooit in een regel kunnen. Want als ik met 62.230.1.43 voor het eerst op je site kom. Dan worden de gegevens op geslagen. en Na een page refresh zal het de 2de x zijn. Maar als ik vervolgens met 84.192.7.243.103 op je site kom dan worden de gegevens van de vorige overschreven en word het voor het vorige ip weer de eerste keer. je zult de gevens minimaal 1 dag in een table moeten opslaan.

Als ik jou was zou ik een table maken met ID, ip, first_visi, last_visite, total_visits

Als een ip niet in je table staat dan maak je een record waar de fisrt en last_visit gelijk zijn en total_visits op 1 word gezet.
Als een ip wel voor komt dan laat je last_visit veranderen in de datum van nu en total_visits verhoog je met 1

om de totaal aantal bezoekers zijn dan je totaal aantal records, en hoe vaak de site bezocht is is dan de som van alle total_visits

Uit deze table kun je halen wie de laatste bezoeker is .

en als je record bijvoegd today, daarin kun e dan bij houden hoevaak een ip op 1dag bij je site komt.

(als last_visit = date_nu dan today = +1 anders als last_visit != date_nu dan today = 1)
 
Laatst bewerkt:
Oke
Ik begin overnieuw (af en toe beste manier)
Ik wil nu als iemand op de site komt dat zijn ip aan de database word toegevoegd als die de laatste 2 uur nog niet de site bezogt heeft.
Als je het totaal wilt weten moet je het aantal rijen lezen.
Hoe krijg ik dit werkend???
Mvg. Pascal Drewes
 
Ik heb wat in elkaar geknutseld.
Het werk niet maar het ligt niet aan de php.
Mijn code:
PHP:
<?php
mysql_connect("www.freesqldatabase.com", "sql01_57901", "*******") or die(mysql_error());
mysql_select_db("sql01_5790pascal") or die(mysql_error());

$ip = $_SERVER['REMOTE_ADDR'];
$datum = date("Y-m-d");

$select = mysql_query("SELECT * FROM counter WHERE IP = '" . $ip . "' AND DATUM = '" . $datum . "'") or die(mysql_error());
$select_row = mysql_num_rows($select);

If ($select_row == 1){
$query = mysql_query("UPDATE counter SET VISITS=VISITS + 1 WHERE DATUM='" . $datum . "', IP='" . $ip . "'") or die(mysql_error());
} else {
$query = mysql_query("INSERT INTO counter (IP,DATUM,VISITS) VALUES(" . $ip . "," . $datum . ",1") or die(mysql_error());
}

$totaal = mysql_query("SELECT * FROM counter") or die(mysql_error());
$totaal_row = mysql_num_rows($totaal);

echo "Er zijn in totaal:";
echo $totaal_row;
echo "bezoekers geweest op deze site.";
?>
De foutmelding:
Code:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '::1,2010-12-26,1' at line 1
HELP!?!
mvg. Pascallino
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan