Avatar billede eskdecay Nybegynder
29. marts 2010 - 18:39 Der er 10 kommentarer

Favorit-knap til en liste

Jeg sidder og prøver at regne ud hvad jeg skal gøre her.
Min problemstilling er således:
Jeg er igang med at lave en side med lister med forskellige emner, og til disse vil jeg lave en funktion hvor den besøgende kan klikke på en knap; "Favorit", men da jeg ikke ønsker at de besøgende skal registrere sig på sitet, vil jeg have at deres IP bliver registreret i min database.
Men her er jeg lidt på herrens mark, for det første vil jeg helst ikke have at ethvert emne skal have sin egen tabel i mysql-databasen, men derimod alle være i en samlet, og så have en tabel med alle ip-adresserne.
For det andet skal ip-adresserne kun registreres hvis en besøgende klikker på et emnes favorit-knap.
når den besøgende så kommer tilbage til siden skal knappen så ikke være der mere for det favoriserede emne, men istedet en "Fjern favorit"-knap.
Inspirationen er hentet fra grooveshark hvor man, hvis man er logget ind kan klikke på et hjerte for at favorisere en sang, og klikke igen på hjertet for at "ikke-favorisere" sangen igen - dog ønsker jeg istedet for registrering bare at bruge den besøgendes IP-adresse som user.
Håber nogle kan hjælpe - har ingen ide om hvor svært det er, men jeg er bare get i stå :D
Avatar billede zynzz Praktikant
29. marts 2010 - 21:50 #1
MySQL Struktur:

Emner
-ID (Unikt ID)
-Navn (Navnet på emnet)


Brugere
-IP (IP-Adresse)
-Favorit (Henviser til Tabellen "Emner")


I feltet favorit putter du alle de ID`s som brugeren vælger som favorit...

f.eks: 1,3,5,6


N.B.: HUSK på at en IP-Adresse kan blive brugt af flere personer, derfor ville jeg nok lave et brugersystem...
Avatar billede wanze Nybegynder
29. marts 2010 - 23:48 #2
At gemme det baseret på IP-adressen lyder ikke særlig smart - der er mange, der har dynamiske IP'er, eller tit flytter deres computer. Jeg vil også anbefale, at du laver et brugersystem. Hvis du bare laver det super simpelt uden emailbekræftelse og den slags, så tror jeg ikke der vil være det store problem i det.
Avatar billede eskdecay Nybegynder
30. marts 2010 - 01:02 #3
det er selvfølgelig rigtig nok, overvejede også cookies, men de har jo et udløbstidspunkt.
Nu er det så jeg tænker på om jeg ikke bare skulle skrotter registrering men hellere bare skulle lave det sådan at man kan klikke på "favorit" 1 gang og så skal der bare komme antal gange der er klikket på knappen istedet for.
Dog stadig med ip logging så alle ikke kan klikke på hvert deres emne 7629 gange.
Og så lave en kategori der hedder "top 10" men jeg ved stadig ikke rigtig hvordan skriver den besøgendes ip adresse ind i tabellen og henter den igen :S
Avatar billede eskdecay Nybegynder
30. marts 2010 - 01:06 #4
altså ligesom med voting scripts.
Avatar billede wanze Nybegynder
30. marts 2010 - 02:14 #5
Nu er det jo en helt anden idé du har fat i. :-)

Hvis det er det du vil lave, kan din tabelstruktur fx se sådan her ud:

id - primære nøgle
emneid - det id, der refererer til emnes id i din emnetabel
ip - ip-adressen


Så kan du nemt undersøge, om ip'en allerede har stemt, og du kan du kan nemt tælle antal stemmer.
Avatar billede eskdecay Nybegynder
30. marts 2010 - 10:21 #6
Ja, lige præcis, men ved som sagt ikke hvordan jeg logger IP'en ind i min tabel og tjekker den igen :)
Avatar billede zynzz Praktikant
30. marts 2010 - 18:36 #7
Efter at se udfra dit spørgsmål, ser det ud til du er meget ny til PHP, derfor læs noget mere om det:

Indsæt til mysql database:
http://www.w3schools.com/php/php_mysql_insert.asp


Hent fra mysql database:
http://www.w3schools.com/php/php_mysql_select.asp
Avatar billede wanze Nybegynder
30. marts 2010 - 20:31 #8
Du fortæller ikke, hvad det er du ikke kan finde ud af. Jeg gider ikke skrive hele din kode for dig, så du bliver nødt til at specificere, hvad du har svært ved.
Avatar billede eskdecay Nybegynder
30. marts 2010 - 23:30 #9
jeg kan skam godt finde ud af at indsætte indhold og hente indhold til og fra mysql databaser, Det som jeg ikke rigtig kan er at fetche den besøgendes IP-adresse - og når den besøgende kommer igen, så tjekke hvilke emner IP adressen har favoriseret.
Altså:
1. få fat i brugerens ip adresse
2. "validere" ip'en på hvert emne
Avatar billede wanze Nybegynder
30. marts 2010 - 23:44 #10
En enkelt Google-søgning kunne have svaret dig på det første spørgsmål. $_SERVER['REMOTE_ADDR']-variablen indeholder brugerens IP-adresse.

Derefter laver du en simpel MySQL-forespørgsel, der går noget i retningen af "SELECT emneid FROM tabel WHERE ip = '{$_SERVER['REMOTE_ADDR']}'".

Det vil give en liste med alle de emner som brugeren har stemt på. Hver gang du udskriver et element fra listen, så kontrollerer du om emnet optræder i det array du har fået med ovenstående forespørgsel.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester