Ik ben dus een tellertje aan het maken. Ik heb het volgende datamodel bedacht:
[li]1 tabel die ips heet met 1 kolom: ip[/li]
[li]1 tabel die teller heet met 1 kolom: aantal[/li]

Nu moet dus eerst gecontroleerd worden op ip. Als die in de tabel zit, aantal niet updaten. Als die er niet inzit, aantal en ips updaten.

Maar ik heb nu een vraag over de sql:
$sql = "SELECT ip FROM teller WHERE ip = '".$ip."' LIMIT 1;";

Kun je zoiets in sql verwerken:
IF '".$ip."' IS IN tabel ip=true
ofzo?


Of is dit een onzinnig datamodel en gaat het sloom als elke keer de hele tabel moet worden doorzocht op je ip, en je hebt er bijvoorbel 9999 in staan?

Moet ik een ander datamodel gebruiken?

Gr.

Boris
Zie de handleiding en kijk dan eens naar de insert-on-duplicate.

Je maakt de kolom ip UNIQUE en je gaat met de query

INSERT INTO 
  tabel (
    ip,
    aantal
  ) 
VALUES (
  'ip-adres',
  1
)
ON DUPLICATE KEY 
UPDATE 
  aantal = aantal + 1

Het ip-adres wegschrijven met het aantal 1. Mocht het ip-adres al aanwezig zijn, dan wordt het stukje van de UPDATE uitgevoerd en dus het aantal met 1 opgehoogd.

tabel:
ip (unique)
aantal

Simpel en snel. Zet een index op ip om de snelheid er in te houden.
toevoegen wanneer een ip niet uniek is:
"UPDATE teller SET aantal = aantal + 1 WHERE ip <> '".$ip."' "

Maar dan gebruik je maar 1 tabel.
Tabel --> ip, aantal

ophalen uit de database
"SELECT aantal FROM teller"
Oke bedankt!

Ik heb nu deze tabel:
CREATE TABLE `teller` (
`ip` VARCHAR( 255 ) NOT NULL ,
`aantal` INT( 9 ) NOT NULL ,
UNIQUE (
`ip`
)
) TYPE = MYISAM ;


Daarna heb ik
ALTER TABLE `teller` ADD INDEX ( `ip` ) 
gedaan.

Maar nu is het nog niet per unieke bezoeker.

Nu heb ik dit v/d query gemaakt:
$sql ="INSERT INTO teller ( ip, aantal ) VALUES ( '".ip()."' , 1 ) ON DUPLICATE KEY UPDATE aantal = aantal;";
En nu werkt het :-)

Jeej, bedankt!

Groet,

Boris
aantal = aantal ? Dat zal toch moeten zijn aantal + 1. Anders wordt er natuurlijk niets opgehoogd.

Verder snap ik niet wat je bedoelt met 'per unieke bezoeker'. Dat zou de database zelf moeten regelen door het gebruik van UNIQUE op de kolom ip.

Reageren