Autor | Zpráva | ||
---|---|---|---|
martin123 Profil * |
#1 · Zasláno: 25. 2. 2008, 21:37:07
Zdravím,
řeším takový problém: Dělám anketu a řeším problém s tabulkou, která má devět sloupců a každý sloupec představuje jednu možnost ankety. Pokud uživatel klikne na jednu možnost ankety, tak se do proměnné uloží název sloupce, který vložím do příkazu mysql_query a ten potom zapíše do správného sloupce IP adresu toho, kdo pro možnost hlasoval. Tohle řešení mi připadalo nejjednodušší až do té doby, než jsem se dostal k ošetření toho, aby se z jedné IP nedalo hlasovat vícekrát. Snažím se (ale zatím marně) přijít na to, jak zkonstruovat požadavek na databázi, aby porovnala $_SERVER[REMOTE_ADDR] se všemi hodnotami ve všech sloupcích (u všech možností ankety) a následně vyhodila něco zpracovatelného, jako je třeba v případě shody (IP už v tabulce je) právě tu IP adresu, která se rovná $_SERVER[REMOTE_ADDR] a já tak mohl udělat podmínku, že pokud se rovná vypiš "už jste hlasoval" či pokud se nerovná, aby zapsal do tabulky. Děkuji za rady |
||
Joker Profil |
#2 · Zasláno: 25. 2. 2008, 21:41:24
martin123
Dělám anketu a řeším problém s tabulkou, která má devět sloupců a každý sloupec představuje jednu možnost ankety. To není moc dobré řešení. Lepší bude, když jednotlivé možnosti budou mít svá ID a tabulka hlasování bude: IP - id možnosti. |
||
martin123 Profil * |
#3 · Zasláno: 25. 2. 2008, 21:47:42
Díky za tip, to je o mnoho lepší. Vypisovací požadavek na databázi by měl být na konci s WHERE id=1 , nepletu se, že? ;)
Ještě mě napadla jedna možnost a to, že bych pro IP udělal vlastní tabulku a zbytek by fungoval pořád na devíti sloupcích, nicméně do každého by se nedávala IP, ale pouze by se přičetla jednička. Ale stejně to co říkáš ty je lepší, díky! |
||
Joker Profil |
#4 · Zasláno: 25. 2. 2008, 21:53:12
Záleží jak to přesně má být udělané, teoreticky by mohla být třeba tabulka uživatelů a tabulka anket a potom hlasovací tabulka: id_uživatele - id_ankety
|
||
martin123 Profil * |
#5 · Zasláno: 25. 2. 2008, 21:57:19
Ne, na tom webu není žádná registrace, takže přesně tak jak si to napsal to stačí, ale díky za tip.
|
||
Joker Profil |
#6 · Zasláno: 25. 2. 2008, 22:03:40
martin123
Ještě by možná nebylo od věci umožnit hlasovat z jedné IP víc než jednou, hodně lidí má stejnou IP. Nejlepší by bylo ukládat jim cookie (a těm co mají cookie pro danou anketu už neumožnit hlasovat) a umožnit třeba pět hlasů z jedné IP (pro případ, že by si nějaký chytrák cookie smazal) Ale zas to nechci moc komplikovat :-) |
||
martin123 Profil * |
#7 · Zasláno: 25. 2. 2008, 23:14:33
No takovým lidem já říkám, že mají smůlu ;) Každý slušný ISP veřejnou dává, že si kupují různé pochybné bezdráty je jejich problém. ;)
Ne, vážně - myslím, že mám lepší řešení a to applet, který zjistí adresu nastavenou přímo na PC (za proxy/NAT) a potom to přidat do jednoho řetězce s IP, tak by měl mít každý zaručenou možnost hlasovat... |
||
K Profil * |
#8 · Zasláno: 25. 2. 2008, 23:17:38
Applet? a co multiplatformost?
Co lidi ve skolach? V praci? Idealni je kontrolovat vse mozne a to propocitat a porovnat a jestli ti nevyjde cislo 42 tak uz hlasoval;) |
||
martin123 Profil * |
#9 · Zasláno: 26. 2. 2008, 00:11:01
Myslel jsem applet v javě, takže ten by měl jít i pod GNU/Linuxem. A pokud ne, tak se vší úctou ke GNU/Linuxu by se nejednalo o žádnou katastrofu... Co se týče druhého řádku, tak to si stejně nepomůžeš - spousta expertů má stejně zakázané cookies, někteří dokonce i javascript.
Určitě ten skript chci do budoucna dohnat k dokonalosti (viz. tvůj poslední řádek :D), nicméně to není na pořadu dne. Co bych ještě chtěl udělat, tak interpretování výsledku do grafu... |
||
K Profil * |
#10 · Zasláno: 26. 2. 2008, 02:23:49
No ja uz jsem to s kolegy resil a myslim, ze k dokonalosti to dohnat nejde, nicmene ke 'skorodokonalosti' jsme to dohnali;)
Reseni rozhodne neni v appletu - nelze nutit uzivatele, aby si instaloval javu jen kvuli ankete.. |
||
Časová prodleva: 16 let
|
0