login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Unieke inhits p/d

Offline BigBug - 18/09/2005 10:28
Avatar van BigBugPHP expert Hey, ik ben een toplist systeem (met banners enzo) aan het maken. Ik ben net begonnen met de databasestructuur uit te schrijven. Maar nu zit ik te denken over het volgende:

Bij het voten moet het IP worden ingeschreven in de db. Zodat je maar 1x per dag kan stemmen. Hoe kan ik dat het beste aanpakken een aparte table nemen voor de IP adressen, en dan bij het voten eerst checken of er al gestemd is? En dan om 0.00 met een cronjob de table legen?

Greetz, bugje

8 antwoorden

Gesponsorde links
Offline nemesiskoen - 18/09/2005 10:31
Avatar van nemesiskoen Gouden medaille

PHP expert
Of misschien gewoon met dezelfde tabel werken. IP wegschrijven samen met de stem, plus de dag erbij schrijven (via de functie date(d-m-Y) oid.

  1. $res = MySQL_qeury("SELECT * FROM votes WHERE ip = '". $ip ."' AND dag = '". date(d-m-Y) ."'");
  2. if(MySQL_result($res,0)) {
  3. //al gestemd
  4. } else {
  5. //nog niet gestemd
  6. }
Offline Martijn1989 - 18/09/2005 10:32 (laatste wijziging 18/09/2005 10:33)
Avatar van Martijn1989 PHP ver gevorderde ik zou gewoon een tabel stemmen maken :

id - van - stem - ip - tijd
1 - sjon - c - 12.54.78.666 - time() functie

en dan kijken of tijd een groter verschil heeft dan 3600 , en dan nog eens stemmen.

edit : net te laat, maar deze kan ook...
Offline BigBug - 18/09/2005 10:34
Avatar van BigBug PHP expert @ Nemesiskoen, das een handig idtje ja 

@Martijn1515, Beetje omslachtig, je moet dmv een link gelijk kunnen stemmen dus niet eerst namen invullen 

Maar bedankt, het is opgelost tot zover ik weet 
Offline Martijn1989 - 18/09/2005 22:59
Avatar van Martijn1989 PHP ver gevorderde owk, is goed maar ik wil er tog nog ff wat aan toevoegem met die naam dacht ik dat alleen ingelogde mensen hun stem konden uitbrengen, dus kan er ook Gast staan.
Offline xSc - 19/09/2005 10:37
Avatar van xSc Onbekend Die date()-functie is niet nodig, omdat je ook gebruik kunt maken van het type DATE in MySQL.

  1. <?php
  2.  
  3. if (mysql_query("SELECT ip FROM votes WHERE ip = '" . $_SERVER['REMOTE_ADDR'] . "' AND datum = CURDATE()"))
  4. {
  5. // gestemd
  6. }
  7. else
  8. {
  9. // niet gestemd
  10. }
  11. ?>
Offline BigBug - 19/09/2005 16:13
Avatar van BigBug PHP expert @ Henri, zo iets moet ik idd hebben ja, alleen dat current date haal ik weg, met cronjobs laat ik het deleten Dan krijg je na een tijdje niet zo'n overbeladen db 
Offline xSc - 20/09/2005 08:33
Avatar van xSc Onbekend @ Bigbug, je moet nog veel leren.:|

Alles wat de database zelf kan, is sneller dan dat je het i.c.m. PHP doet. Het gebruik van cronjobs staat los van het gebruik van CURDATE(). Een zgn. overbeladen database kun je hooguit krijgen, wanneer je verkeerde queries gebruikt. Dat merk je dan wel aan de laadtijd van de pagina.

Maar neem dit van mij aan: MySQL heeft prachtige functies. Gebruik deze dan ook!
Offline marten - 20/09/2005 09:33
Avatar van marten Beheerder Misschien een tip voor de volgende met zo'n vraag. Ik doe het altijd zo ..... ik neem het uiteindelijke resultaat in gedachten en dan kom je door normaliseren op goede tabellen.... Maar wie ben ik he 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.195s