Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [PHP] array() (https://forum.scholieren.com/showthread.php?t=353983)

Martin 25-01-2003 15:38

[PHP] array()
 
Ik ben momenteel bezig met een eigen statistiekenscript, nu loop ik tegen een "probleempje" op.

Ik wil een overzicht hebben van het aantal bezoeken per uur en wil dit weergeven door middel van balkjes:

PHP-code:

echo "1:00 "
$query "SELECT uur FROM website_stats_hits where uur = '1'";
$sql mysql_query($query) or die(mysql_error()); 
$totaal mysql_num_rows($sql);
$size = (($balksize $total_pageviews) * $totaal);
echo 
"<img src=images/balk.gif width=$size height=10><BR>"

Zoals ik het nu heb zou ik dit stukje voor elk uur opnieuw moeten typen. Ik weet dat het anders mogelijk moet zijn (namelijk met arrays) maar ik weet totaal niet hoe arrays werken en hoe ik het moet gebruiken.

Ik heb al op http://nl.php.net gekeken maar ik snap/volg die uitleg niet helemaal. Wie kan het mij uitleggen door middel van een voorbeeldje?

eddie 25-01-2003 15:49

wat wil je precies weten dan?

je kan ook met een tellertje werken (1 tot 24, of 0 tot 23)...

Martin 25-01-2003 15:53

Citaat:

eddie schreef:
wat wil je precies weten dan?
Ik wil dus voor elk uur een query uitvoeren, het aantal bezoeken op dat uur van de dag uit de database plukken en een balkje weergeven.

Maar om 24 dezelde query`s in mijn script stoppen lijkt me onnodig, bovendien kost dit ook veel tijd in onderhoud.

Ik wil dus zeg maar ongeveer dit:

PHP-code:

echo "$hour:00 "
$query "SELECT uur FROM website_stats_hits where uur = '$hour'";
$sql mysql_query($query) or die(mysql_error()); 
$totaal mysql_num_rows($sql);
$size = (($balksize $total_pageviews) * $totaal);
echo 
"<img src=images/balk.gif width=10 height=$size><BR>"

Waarbij het script automatisch $hour invult van 1 uur tot 24 uur. Dit moet toch kunnen met een array?

eddie 25-01-2003 15:56

Citaat:

chatfreak schreef:
Dit moet toch kunnen met een array?
Tuurlijk.

Maar een loopje is makkelijker :)

PHP-code:

for( $hour 1$hour <= 24$hour++)
{
 echo 
$hour ":00";
 
// selecteren... etc



eddie 25-01-2003 15:59

je kunt ook een selectstatement gebruiken natuurlijk...

Code:

select count(*) as aantal_hits from stats group by uur
Als het goed is krijg je nu 24 rijen (voor elk uur een) :)

Martin 25-01-2003 16:00

Citaat:

eddie schreef:
Tuurlijk.

Maar een loopje is makkelijker :)

PHP-code:

for( $hour 1$hour <= 24$hour++)
{
 echo 
$hour ":00";
 
// selecteren... etc



Bedankt (y)

Dit was precies wat ik zocht, eigenlijk stom dat ik daar niet zelf op ben gekomen. :p

Maarja, als je al een paar uur aan het staren bent op PHP wordt je geest ook niet echt helderder. ;)

Voorbeeldje: http://chatfreak.endoria.net/stats/

Kinky 25-01-2003 16:02

Zo misschien???

PHP-code:

$UurResult mysql_query("SELECT * FROM website_stats_hits ORDER BY 'uur' ");

$totaal mysql_num_rows($UurResult);

while (
$row mysql_fetch_array($UurResult)) {

// zolang er iets in de array staat voert hij onderstaand script uit.
//Je zult dus ook hier, om de verschillende uren te krijgen, variabelen laten maken. Zoals:

$Uur  $row["uur"]; //De variabele uur.

$size = (($balksize $total_pageviews) * $totaal);
echo 
"<img src=images/balk.gif width=$size height=10><BR>";





volgens mij vergeet ik de helft, maar ik heb nu geen zin om t script te testen....

succes, ik hoop dat je er iets aan hebt...

eddie 25-01-2003 16:02

Citaat:

chatfreak schreef:
Bedankt (y)

Dit was precies wat ik zocht, eigenlijk stom dat ik daar niet zelf op ben gekomen. :p

Maarja, als je al een paar uur aan het staren bent op PHP wordt je geest ook niet echt helderder. ;)

Je krijgt nu wel 24 querys naar je database. Misschien dat je beter mijn selectstatement kunt gebruiken.

Martin 25-01-2003 16:51

Volgende "probleem"!

Bij ieder bezoek wordt er een record aan mijn table toegevoegd. Als ik nu de boel wil uitlezen krijg ik dus iemand die mijn site 10 keer bezoekt ook 10 keer in beeld, hoe kan ik ervoor zorgen dat hij als er MEERDERE records met hetzelfde IP in de database zit er maar 1 retourneert?

eddie 25-01-2003 16:59

Citaat:

chatfreak schreef:
Volgende "probleem"!

Bij ieder bezoek wordt er een record aan mijn table toegevoegd. Als ik nu de boel wil uitlezen krijg ik dus iemand die mijn site 10 keer bezoekt ook 10 keer in beeld, hoe kan ik ervoor zorgen dat hij als er MEERDERE records met hetzelfde IP in de database zit er maar 1 retourneert?

Het lijkt erop dat je even iets beter moet nadenken over je database ontwerp.

Neem in je stats tabel bijvoorbeel het volgende op:
ip, uur, aantal

Verhoog 'aantal' als de bezoeker opnieuw de pagina bezoekt.

Martin 25-01-2003 17:01

Nog een "probleem":

Hoe kan ik een resultaat inkorten?

Ik krijg bijvoorbeeld bij $referer een resultaat wat bijvoorbeeld 200 tekens lang is maar ik wil die dan graag inkorten tot maar 50 tekens. hoe kan ik dat doen als de volledige $referer wel in de database moet staan?

En nog iets:
Kan je ook een argument in je SELECT statement opnemen zoals:
PHP-code:

WHERE referer is NOT '' 


Koen 25-01-2003 17:07

PHP-code:

$referer substr($referer050); 

Edit: En wat je voor SQL zoek is:

PHP-code:

WHERE referer <> '' 



Alle tijden zijn GMT +1. Het is nu 23:59.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.