Toon posts:

[php] statistics recorden..

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een scriptje dat mijn statistics inleest en opslaat in een mysql db..

Ik gebruik nu de volgende tables
PHP:
1
<?/*# --------------------------------------------------------## Tables for the statistic's page#CREATE TABLE stat (   id int(4) NOT NULL auto_increment,   username varchar(12) NOT NULL,   password varchar(12) NOT NULL,   title varchar(75) NOT NULL,   referer varchar(75) NOT NULL,   UNIQUE id (id));CREATE TABLE statbrowser (   id int(4) NOT NULL auto_increment,   sid int(4) DEFAULT '0' NOT NULL,   value varchar(75) NOT NULL,   count bigint(20) DEFAULT '0' NOT NULL,   UNIQUE id (id));CREATE TABLE statcolor (   id int(4) NOT NULL auto_increment,   sid int(4) DEFAULT '0' NOT NULL,   value varchar(75) NOT NULL,   count bigint(20) DEFAULT '0' NOT NULL,   UNIQUE id (id));CREATE TABLE statcountry (   id int(4) NOT NULL auto_increment,   sid int(4) DEFAULT '0' NOT NULL,   value varchar(75) NOT NULL,   count bigint(20) DEFAULT '0' NOT NULL,   UNIQUE id (id));CREATE TABLE statdate (   id int(4) NOT NULL auto_increment,   sid int(4) DEFAULT '0' NOT NULL,   value varchar(75) NOT NULL,   count bigint(20) DEFAULT '0' NOT NULL,   UNIQUE id (id));CREATE TABLE stathost (   id int(4) NOT NULL auto_increment,   sid int(4) DEFAULT '0' NOT NULL,   value varchar(75) NOT NULL,   count bigint(20) DEFAULT '0' NOT NULL,   UNIQUE id (id));CREATE TABLE stathour (   id int(4) NOT NULL auto_increment,   sid int(4) DEFAULT '0' NOT NULL,   value varchar(75) NOT NULL,   count bigint(20) DEFAULT '0' NOT NULL,   UNIQUE id (id));CREATE TABLE statip (   id int(4) NOT NULL auto_increment,   sid int(4) DEFAULT '0' NOT NULL,   ip varchar(75) NOT NULL,   lastdate timestamp(14),   count bigint(20) DEFAULT '0' NOT NULL,   UNIQUE id (id));CREATE TABLE statos (   id int(4) NOT NULL auto_increment,   sid int(4) DEFAULT '0' NOT NULL,   value varchar(75) NOT NULL,   count bigint(20) DEFAULT '0' NOT NULL,   UNIQUE id (id));CREATE TABLE statreferer (   id int(4) NOT NULL auto_increment,   sid int(4) DEFAULT '0' NOT NULL,   value varchar(75) NOT NULL,   count bigint(20) DEFAULT '0' NOT NULL,   UNIQUE id (id));CREATE TABLE statresolution (   id int(4) NOT NULL auto_increment,   sid int(4) DEFAULT '0' NOT NULL,   value varchar(75) NOT NULL,   count bigint(20) DEFAULT '0' NOT NULL,   UNIQUE id (id));*/?>

uitleg van sid = statistics db id (voor meerdere statistic db's voor meerdere sites :+)

maar zit nu met een paar vraagjes..

• Zijn deze tabellen goed te gebruiken of kan het beter?
• Hoe kan ik uitlezen op welke pagina ik ben (page recording)
• Hoe kan ik in 1x alle tabellen die in sid bv 1 hebben in 1x verwijderen? of kan dat niet?

Op en aanmerkingen zijn welkom en ik ga nu :z

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 13-09 09:52

Pelle

🚴‍♂️

Op zaterdag 02 maart 2002 01:16 schreef xtentic het volgende:<li> Zijn deze tabellen goed te gebruiken of kan het beter?
</li>

Ik weet niet of het slim is om je veldnamen 'count' te noemen, aangezien dat een gereserveerde functienaam binnen SQL is.
<li> Hoe kan ik uitlezen op welke pagina ik ben (page recording)
</li>

Door elke pagina een unique id te geven :z
<li> Hoe kan ik in 1x alle tabellen die in sid bv 1 hebben in 1x verwijderen? of kan dat niet?
</li>

Als je DBMS foreign key constraints heeft dan is het heel makkelijk. Dan kun je alle aan je pagina gelinkte statistieken cascaded deleten. PostreSQL ondersteunt het, en ik meen MySQL4 ook.

Verwijderd

Topicstarter
Op zaterdag 02 maart 2002 01:25 schreef Pelle het volgende:
Ik weet niet of het slim is om je veldnamen 'count' te noemen, aangezien dat een gereserveerde functienaam binnen SQL is.
:D 'k heb er nu nog geen probs mee ;)
Op zaterdag 02 maart 2002 01:25 schreef Pelle het volgende:
Door elke pagina een unique id te geven :z
Nee qua pagina url (jeweetwel http://jouhost/joupagina.html)
Op zaterdag 02 maart 2002 01:25 schreef Pelle het volgende:
Als je DBMS foreign key constraints heeft dan is het heel makkelijk. Dan kun je alle aan je pagina gelinkte statistieken cascaded deleten. PostreSQL ondersteunt het, en ik meen MySQL4 ook.
:D En dit begrijp ik dus echt niet... hehe... zou je het wat gemakkelijker kunnen omschrijven :)

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 13-09 09:52

Pelle

🚴‍♂️

Op zaterdag 02 maart 2002 01:28 schreef xtentic het volgende:
Nee qua pagina url (jeweetwel http://jouhost/joupagina.html)
Kun je niet gewoon met $PHP_SELF (of met getenv("HTTP_REFERER") als het een script in een teller image is) kijken wat de locatie & filename is, en die in een tabel gooien als 'ie nog niet bestaat? Gewoon een auto-increment id meegeven en je bent klaar.
:D En dit begrijp ik dus echt niet... hehe... zou je het wat gemakkelijker kunnen omschrijven :)
Voorbeeldje:
code:
1
2
3
4
5
6
7
8
9
10
11
12
create table teksten (
    id int not null auto_increment,
    tekst text,
    publicatiedatum date,
    rubriek int not null,
primary key(id),
foreign key(rubriek) references rubrieken on update cascade on delete cascade);

create table rubrieken {
    id int not null auto_increment,
    naam tinytext,
primary key(id));

Elke tekst heeft een foreign-key verwijzing naar een rubriek. Als ik nu een rubriek wijzig of delete, dan worden alle records met een foreign-key verwijzing naar dat record ook mee verwijderd.

Je hebt ook nog de opties 'set null' en 'no action'. Koop es een SQL-boek ofzo, dan worden de mogelijkheden je wel duidelijk :)

/edit
toevoeginkje

Verwijderd

Topicstarter
Hmmz ik denk dat ik maar ff een boek ga regelen want dit gaat echt me petje te boven, ook ga ik eerst ff op mysql.com zoeken wat het zou kunnen betekenen :D want 'k snap ut echt neit ;)

Tnx pelle! :)

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 13-09 09:52

Pelle

🚴‍♂️

Op zaterdag 02 maart 2002 09:12 schreef xtentic het volgende:
want 'k snap ut echt neit ;)
Een foreign key is een waarde in een tabel, die in een andere tabel de primary key is. In mijn voorbeeldje is 'rubriek' dus een foreign key, omdat hij verwijst naar de primary key van de tabel 'rubrieken'.

Nu kun je -als je de foreign keys opgeeft- zeggen wat er moet gebeuren met de records die een foreign key verwijzing naar een ander record hebben, als deze wordt geupdate of wordt verwijderd.
Dus als ik een rubriek verwijder, terwijl er nog teksten zijn die bij die rubriek horen, dan worden die teksten ook verwijderd (on delete cascade). Maar je kunt bijvoorbeeld ook zeggen 'on delete no action', waarna het DBMS het niet toestaat om de rubriek te verwijderen omdat er nog foreign-key verwijzingen naar zijn. Tenslotte heb je ook nog 'set null', dus wanneer je bijvoorbeeld de primary key van een rubriek zou willen verwijderen (stel :)), dan kun je met 'on update set null' zeggen dat de tekst als rubriek 'null' moet krijgen. Beetje onzinnig voorbeeld misschien, maar het laat wel zien wat de bedoeling is.

MySQL 3.x kan dit dus niet, maar vanaf MySQL 4 meen ik wel, maar dat zul je even na moeten kijken; heb geen ervaring met die versie.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op zaterdag 02 maart 2002 02:35 schreef Pelle het volgende:
Kun je niet gewoon met $PHP_SELF (of met getenv("HTTP_REFERER") als het een script in een teller image is) kijken wat de locatie & filename is, en die in een tabel gooien als 'ie nog niet bestaat? Gewoon een auto-increment id meegeven en je bent klaar.
Of er een md5 van bakken en _die_ gebruikte als primairy key

Verwijderd

Topicstarter
Op zaterdag 02 maart 2002 13:12 schreef Pelle het volgende:

[..]

Een foreign key is een waarde in een tabel, die in een andere tabel de primary key is. In mijn voorbeeldje is 'rubriek' dus een foreign key, omdat hij verwijst naar de primary key van de tabel 'rubrieken'.

Nu kun je -als je de foreign keys opgeeft- zeggen wat er moet gebeuren met de records die een foreign key verwijzing naar een ander record hebben, als deze wordt geupdate of wordt verwijderd.
Dus als ik een rubriek verwijder, terwijl er nog teksten zijn die bij die rubriek horen, dan worden die teksten ook verwijderd (on delete cascade). Maar je kunt bijvoorbeeld ook zeggen 'on delete no action', waarna het DBMS het niet toestaat om de rubriek te verwijderen omdat er nog foreign-key verwijzingen naar zijn. Tenslotte heb je ook nog 'set null', dus wanneer je bijvoorbeeld de primary key van een rubriek zou willen verwijderen (stel :)), dan kun je met 'on update set null' zeggen dat de tekst als rubriek 'null' moet krijgen. Beetje onzinnig voorbeeld misschien, maar het laat wel zien wat de bedoeling is.

MySQL 3.x kan dit dus niet, maar vanaf MySQL 4 meen ik wel, maar dat zul je even na moeten kijken; heb geen ervaring met die versie.
dus bv...
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|-[tabel ipid]------------|
| ID | IP            |
|-------------------------|
| 1  | xxx.xxx.xxx.xxx    |
| 2  | xxx.xxx.xxx.xxx    |
| 3  | xxx.xxx.xxx.xxx    |
| 4  | xxx.xxx.xxx.xxx    |
|--------------------------

|-[tabel ipref]-----------|
| ID | ipid | referer     |
|-------------------------|
| 1  | 1    | http://www  |
| 2  | 1    | http://www  |
| 3  | 1    | http://www  |
| 4  | 1    | http://www  |
| 5  | 1    | http://www  |
|--------------------------

Bedoel je zo iets pelle?... en dan alles in alle tabellen verwijderen met ipid 1 bv?

Ik heb het hele verhaaltje zekers 10x doorgelezen maar begrijp jammer genoeg vaak dingen qua text niet zo snel en moet het meestal leren door een 'example'... dus denk doe het maar ff zo :)

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op maandag 04 maart 2002 00:29 schreef xtentic het volgende:

[..]

dus bv...
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|-[tabel ipid]------------|
| ID | IP            |
|-------------------------|
| 1  | xxx.xxx.xxx.xxx    |
| 2  | xxx.xxx.xxx.xxx    |
| 3  | xxx.xxx.xxx.xxx    |
| 4  | xxx.xxx.xxx.xxx    |
|--------------------------

|-[tabel ipref]-----------|
| ID | ipid | referer     |
|-------------------------|
| 1  | 1    | http://www  |
| 2  | 1    | http://www  |
| 3  | 1    | http://www  |
| 4  | 1    | http://www  |
| 5  | 1    | http://www  |
|--------------------------

Bedoel je zo iets pelle?... en dan alles in alle tabellen verwijderen met ipid 1 bv?

Ik heb het hele verhaaltje zekers 10x doorgelezen maar begrijp jammer genoeg vaak dingen qua text niet zo snel en moet het meestal leren door een 'example'... dus denk doe het maar ff zo :)
Jah zo komt ie overeen. Maar dit kan natuurlijk ook in MySQL weet ik wat. Echter dit is nog geen foreign key!

Het voordeel dat een foreign key heeft is dat hij het VERPLICHT stelt dat er al een IPID moet zijn in de tabel ipid voordat je hem kan gebruiken in de kolom ipid in de tabel ipref.

Hiermee kun je garanderen dat er geen onzin waardes komen in de tabel ipref (iig voor ipid)

Verwijderd

Topicstarter
:X Begint steeds moeilijker te worden maar als ik het in theorie doe gaat alles goed, tnx anyway... Ik kijk wel ff hoe ik dit oplos want me stats werken al voor een gedeelte ;)

http://217.121.134.169/Php/stat/xstatview.php?name=gallery
Pagina: 1