In een database heb ik een logboek staan van alle geraadpleegde pagina's door elke bezoeker. De database zit als volgt in elkaar:
sid
ip
system
log

sid = session_id
ip = ip-adres bezoeker
system = $_SERVER['http_user_agent']
log = datum,tijd - $_SERVER['request_uri'] \r

In het laatste veld worden steeds regels toegevoegd, telkens als de gebruiker naar een andere pagina gaat.
Nu wil ik uit dat laatste veld het totaal aantal regels hebben. Ofwel hoe kan ik 'snel' alle regels tellen in alle log-velden...

Duidelijk :? of niet... :$
Of met COUNT in je query, als je de velden niet selecteert... Mysql_num_rows is enkel nuttig als je de velden ook nog gaat gebruiken..

<?php
$query = mysql_query("SELECT COUNT(veld) FROM tabel");
$aantal = mysql_result($query, 0);
echo $aantal;
?>
hmm, dit is niet helemaal de bedoeling, ik zal ff een voorbeeld laten zien:

sid=003d75806f047e3097734e6c830d39c5
ip=127.0.0.1
system=Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
log=
2006-04-16 23:09:16 - /edw3/ - 0.0741 sec
2006-04-16 23:09:20 - /edw3/index.php?pid=4&tid=1 - 0.0294 sec
2006-04-16 23:09:21 - /edw3/index.php - 0.0346 sec

log is dus in de tabel een tekstveld (text) waarin elke keer als een bezoeker een link aanklikt een toevoeging aan word gegeven. En het aantal regels dat in totaal in het log-veld staat wil ik optellen en echo-en.
met <?explode()?>

en dan exploderen op sec. die kun je tellen dat wordt een array en dan +2 (anders mis de eerste of de laatste regel en hij begint bij nul)
Als je wilt tellen hoeveel regels er zijn in die record moet je denk ik zoiets doen:
<?php
$array = explode("\n",$string);
$aantal= count($array);
echo('Deze persoon heeft '.$aantal.' pagina\'s bezocht');
?>
<?php
// Leest een bestand in een array. In dit voorbeeld gaan we via HTTP om
// de HTML code van een URL te krijgen.
$lines = file ('http://www.voorbeeld.com/';);

// Loop door onze array, en laat de HTML code zien als HTML code; ook de regel nummers.
foreach ($lines as $line_num => $line) {
echo "Regel #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br>\n";
}
// Een ander voorbeeld, een webpagina laden in een string. Zie ook file_get_contents().
$html = implode ('', file ('http://www.voorbeeld.com/';));
?>

Bron: file() @ PHP.net

Zo kan je aan de regel nummers geraken, dus er is vast wel een manier om het aantal ook gewoon in een var te krijgen :)

Edit: Je werkt via db, bleh.. Dan maar met explode zoals hierboven gezegd werd..
@ Gijs;
bedankt, het werkt perfect!

@ de rest;
bedankt voor de moeite ;)

Reageren