login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Klikmissie ?

Offline Nman - 16/10/2008 23:00 (laatste wijziging 28/02/2009 00:36)
Avatar van NmanPHP interesse gelukt

8 antwoorden

Gesponsorde links
Offline Diko - 16/10/2008 23:21
Avatar van Diko PHP interesse Gewoon record aanmaken in een tabel als iemand heeft geklikt...en een cronjob die elke nacht om 0:00 de tabel weer leegt?
Offline jc2 - 16/10/2008 23:29
Avatar van jc2 PHP interesse Of middels ip-adres controleren of het 24 uur geleden is dat iemand op een link geklikt heeft en indien de uitkomst daarvan waar is, de tabel updaten met de huidige kliktijd en eventueel het aantal kliks verhogen met 1.
Offline Diko - 16/10/2008 23:56
Avatar van Diko PHP interesse Als het over 'leden' gaat neem ik aan dat hier een lid nummer van is. Waarom dan zoiets onveiligs als een cookie gebruiken?

Hele simpele tabel met 1 kolom waarin lidnr staat moet al genoeg zijn. En als het niet per dag maar per 24 uur gaat zet je er een 2e kolom bij met datetime. Als je dan elke x aantal minuten een cronjob laat uitvoeren die alle records verwijderd waar het langer dan 24 uur geleden is dat er werd geklikt heb je het ook opgelost.

Je zou eventueel nog een derde kolom kunnen toevoegen met het aantal kliks, maar dan moet geen records meer verwijderen. Enkel bij het updaten van de tabel controleren of het idd langer dan 24 uur geleden is dat het record voor het laatst werd geupdate.
Dit zou je eventueel in een CONSTRAINT kunnen afvangen zodat manipulatie vanuit je script onmogelijk worden gemaakt.

Maar laten we eerst maar eens afwachten tot TS weer reageerd 
Offline Kr4nKz1n - 17/10/2008 09:09
Avatar van Kr4nKz1n Onbekend
Diko schreef:
Gewoon record aanmaken in een tabel als iemand heeft geklikt...en een cronjob die elke nacht om 0:00 de tabel weer leegt?
Dus als ik om 5 voor 12 `s avonds klik, mag ik 5 minuten later weer klikken?

Sowieso zal ik niet gaan zoeken op klikmissie, dat is zo nouja never mind.

De naam was ook erg onduidelijk.

Voordat ik een oplossing kan geven moet je mij eerst even uitleggen waarvoor het dient, voor meerdere soorten kliks of voor 1 klik?

1 klik
Citaat:
Maak een extra veld aan in de tabel met de leden. Noem deze bv. click. Indien er is geklikt update je de datum en tijd in het veld.

Als er al een datum en tijd in het veld staat, controleer of het al 24 uur geleden is. Hoe je dit controleert hangt af hoe jij het in de database zet. Met een unix timestamp of met datetime


Meerdere kliks
Citaat:
Maak een extra tabel aan met de velden voor het gebruikers id, de datum en tijd en welke klik het is. Bv: id_user, date, click.

Als er wordt geklikt wordt er een nieuw record aangemaakt in je tabel, met het gebruikers id, de datum en tijd van de klik en welke klik het is.

Controleer of er al geklikt is, dit doe je door een SELECT-query uit te voeren waarin alle velden worden gecontroleerd. Indien er is geklikt maar het nog niet 24 uur geleden is, wordt er een melding weergegeven, anders wordt het veld geupdate.
Offline Nman - 18/10/2008 22:08 (laatste wijziging 28/02/2009 00:36)
Avatar van Nman PHP interesse gelukt
Offline Diko - 18/10/2008 22:34
Avatar van Diko PHP interesse ik zou date en time in 1 DATETIME veld zetten. Dat is wat makkelijker rekenen
  1. CREATE TABLE geklikt1 (
  2. userid int(11) NOT NULL DEFAULT '0',
  3. tijd datetime NOT NULL,
  4. kliknr int(11) NOT NULL DEFAULT,
  5. PRIMARY KEY (userid),
  6. FOREIGN KEY (userid) REFERENCES gebruikerstabel(userid)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
Hier heb ik time veranderd in tijd (geen reserved keyname als kolomnaam gebruiken) En ik heb userid laten verwijzen naar gebruikerstabel.userid, hier moet je mogelijk even wat namen aanpassen Kolom id heb ik verwijderd omdat userid in feite al uniek moet zijn.

Het hele php bestand ga ik niet voor je uitdenken maar een paar stukjes SQL kunnen geen kwaad:
Eerst de volgende query uitvoeren:
  1. SELECT userid FROM geklikt WHERE userid = $userid;

Controleer hier met mysql_num_rows op, wanneer er 0 uit komt:
  1. INSERT INTO geklikt1 (userid, tijd, kliknr) VALUES ($userid, NOW(), 0);

Komt er 1 uit voer je de volgende query uit:
  1. UPDATE geklikt1 SET kliknr + 1 WHERE userid = $userid AND TIME_TO_SEC(TIMEDIFF(geklikt1.tijd, NOW())) => (3600*24);
Offline Nman - 19/10/2008 03:36 (laatste wijziging 28/02/2009 00:36)
Avatar van Nman PHP interesse gelukt
Offline vinTage - 28/02/2009 00:42
Avatar van vinTage Nieuw lid Waar slaat dit op ???
Zo heeft niemand nog iets aan deze topic  
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.39s