Op ik heb een weblog met een statistieken systeem.
Deze statistieken geven aan hoevaak index.php, log.php enz. zijn bezocht.
Ik ben echter op zoek naar een statistiekenscript dat aangeeft hoevaak een log is bezocht.
Bijvoorbeeld: www.weblog.com/log.php?id=115
Zo werkt het op mijn site ook.
Ik ben dus op zoek naar een statistieken script, liefst zo simpel mogelijk, waarin ik kan zien hoevaak www.weblog.com/log.php?id=115 is bezocht (en uiteraard ook id=116, id=117 enz.).
Ik ben een echte leek en heb nog weinig verstand van php dus als je een oplossing hebt hou het aub simpel zodat ik het snap
Op de pagina log.php selecteer je op een gegeven moment neem ik aan gegeven uit een database. Dit doe je aan de hand van de GET variabele 'id' die in de url staat.
Wat je zou kunnen doen is op het punt waar je de gegevens uit de database selecteert, ook een nieuw record in bijvoorbeeld een tabel statistieken aanmaken. Je tabel statistieken ziet er dan ongeveer als volgt uit:
statistieken
--------------
id
log_id
datum
In elk nieuw record plaats je dus het id, dat in de GET variabele 'id' staat, en de huidige datum. Later kun je dan op een andere pagina de gegevens weer uit deze tabel halen.
$sql = mysql_query("INSERT INTO reacties (auteur,ip,datum,bericht,mail,wid) VALUES ('".$naam."','".$ip."','".$datum."','".$bericht."','".$mail."','".$wid."')") or die(mysql_error());
header("Location: log.php?id=".$wid);
}else{
$fouten = "";
if(strlen($naam) < 3)
{
$fouten .= "- Je ingevulde naam is te kort! (moet langer dan 3 tekens)<br>";
}
if(strlen($mail) < 7)
{
$fouten .= "- Het ingevulde mailadres is te kort! (moet langer dan 7 tekens zijn)<br>";
}
if(strlen($bericht) < 5)
{
$fouten .= "- Het ingevulde bericht is te kort! (moet langer dan 5 tekens)<br>";
}
$template->content("De volgende fouten zijn opgetreden:<br>".$fouten."<br>Klik <a href=\"javascript: history.go(-1)\">hier</a> om terug te keren.",'Fout!');
Ik neem aan dat je op dit moment de statistieken update met de functie setstats()? Je zou kunnen kijken of je deze functie verder kunt uitbreiden zodat ook de views per log opgeslagen worden.
Als alternatief zou je zelf zo'n soort functie kunnen schrijven waarbij elk view per log in de database opgeslagen wordt.
Maar kun je misschien even laten zien hoe de functie setstats() eruit ziet, dan is dat punt ook weer wat duidelijker.
Please, ga niet met txt bestandjes werken als je ook een database tot je beschikking hebt. Zodra jij je verlaagt tot het niveau van de txt bestanden ontzeg je jezelf alle toegang tot de krachtige functies die een database in zich heeft.
$vandaag = mysql_fetch_assoc(mysql_query("SELECT * FROM stats WHERE type='2' AND datum='".$datum."'"));
array_push($terug, 'Vandaag');
array_push($terug, '<table border="0" width="100%"><tr><td>Uniek:</td><td width="100">'.$vandaag['value1'].'</td></tr><tr><td>Hits:</td><td width="100">'.$vandaag['value2'].'</td></tr></table>');
$totaal = mysql_fetch_assoc(mysql_query("SELECT * FROM stats WHERE type='1'"));
array_push($terug, 'Totaal <small>| Sinds: '.date('d-m-Y', $totaal['datum']));
array_push($terug, '<table border="0" width="100%"><tr><td>Uniek:</td><td width="100">'.$totaal['value1'].'</td></tr><tr><td>Hits:</td><td width="100">'.$totaal['value2'].'</td></tr></table>');
$highest_uniek = mysql_fetch_assoc(mysql_query("SELECT * FROM stats WHERE type='2' ORDER BY value1 DESC LIMIT 0,1"));
$highest_hits = mysql_fetch_assoc(mysql_query("SELECT * FROM stats WHERE type='2' ORDER BY value2 DESC LIMIT 0,1"));
array_push($terug, 'Records');
array_push($terug, '<table border="0" width="100%"><tr><td>Uniek:</td><td width="100">'.date("d-m-Y", $highest_uniek['datum']).'</td><td width="100">'.$highest_uniek['value1'].'</td></tr><tr><td>Hits:</td><td width="100">'.date("d-m-Y", $highest_hits['datum']).'</td><td width="100">'.$highest_hits['value2'].'</td></tr></table>');
Dit script is verreweg van netjes. Je gebruikt overal @-tje om fouten te onderdrukken, terwijl je juist wilt zien als er wat fout gaat. Deze functies bevatten totaal geen foutafhandeling en dat is toch wel de basis van een goed script.
Daarnaast klopt je datamodel ook niet. Je bent kolommen aan het nummeren en van overzichtelijkheid is ook weinig sprake. Over het algemeen is het voor jezelf een indicatie dat zodra je kolommen gaat nummeren, je te maken hebt met een incorrect datamodel. Ik zou serieus overwegen om dit aan te passen.
Kijk eens naar de tutorial over normaliseren hier op deze site. Dat is de basis van een goed datamodel.
Sorry dat ik het op die manier post. Zoals ik al aangaf ben ik echt een leek. Ik heb het weblog gekregen van iemand. Door de volledige code te plaatsen hoopte ik dat iemand mij kon vertellen wat ik precies moet doen om de statistieken per log te kunnen bekijken.
Weet iemand het? Misschien dat een los kant en klaar script ergens te krijgen is dat is simpel kan integreren door bijv. een stukje code toe te voegen.