NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Proměnné pro všechny

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
shatem
Člen
Avatar
shatem:10.11.2016 11:54

Ahoj dělám hlasovací stránku, ale nevím jak výsledek uložit, aby po znovunačtení zůstal výsledek. Zkoušel jsem něco se session, ale nepotřebuju to nastavovat pokaždé. Existuje v php nějaká společná proměnná, co zůstane a nezmění se?

 
Odpovědět
10.11.2016 11:54
Avatar
Lava
Člen
Avatar
Lava:10.11.2016 12:39

No... ideš na to celkom zle. Za predpokladu, že som správne pochopil, tak ti ide o niečo ako o anketu. A na to ti žiadne sessions nepomôžu, pretože sessions sú pre každého užívateľa špecifické. To znamená, že ak by to šlo cez sessions, každý uživateľ by vedel len to, ako hlasoval on. Čiže ja zahlasujem za možnosť A, ale ty, na svojom PC, to neuvidíš. Iba ja. A ja zas neuvidím, čo si zahlasoval ty.

Čiže za predpokladu, že ide o klasickú anketu, nepomôže ti nijaká premenná. Musíš údaje z hlasovania jednotlivých ľudí ukladať do databázy (alebo do súboru, čo je obtiažnejšie a blbovzornejšie). Následne pri zobrazení stránky vytiahneš aktuálne data z databázy, ktoré sa budú zobrazovať všetkým užívateľom rovnako. Čiže ide ti o niečo také:

  1. Vytvoríš anketu-> tabuľku, alebo formulár, alebo niečo. Vo formulári na hlasovanie použiješ input type="radio" s rovnakým id (alebo name?), teraz si nie som istý a nechec sa mi míňať čas a energiu na to, aby som to zistil :D
  2. Vytvoríš si príslušnú databázu, tabuľku a stlpce. Pre otázku so štyroma možnosťami to môže vyzerať napr. takto:

vote_id [INT] | user_id [INT] | vote_for [INT]
Vote_id sa ti bude automaticky vytvárať pri novom zázname (novom riadku), user_id môžeš použiť (ale nemusíš), aby si odfiltroval opakované hlasovanie -> tzn. že jeden človek nebude hlasovať sto razy, ale budemôcť iba raz. Vote_for bude číslo od 1 do 4 (a=1, b=2, ...). Ale nemusí byť user_id v DB, dá sa to aj inak (session, alebo lepšie cookies). V podstate ti bude stačiť vote_id ako primary key a vote_for.
3. Po odoslaní formulára spustíš mechanizmus zápisu hlasovania do databázy. Čiže INSERT INTO. Každé hlasovanie ti vloží nový riadok do tabuľky.
4. Vytvoríš mechanizmus na výpis aktuálneho stavu hlasovania. Urobíš 4 SELECT COUNT("*") FROM tvojatabulka WHERE vote_for=a/b/c/d. To ti vráti každý krát počet hlasovaní pre jednotlivé možnosti. Čiže výstup bude že a = 100 riadkov=hlasov, b = 101riadkov=hla­sov,...
5. Potom to už iba zobrazíš v HTML

Je to kus krivý postup, určite by sa to dalo aj lepšie a jednoduchšie (rôzne for cykly a pod.), ale nakoľko si na to chcel ísť celkom zle (nesmejem sa, len poukazujem na skutočnosť), myslím, že si relatívne začiatočník a že takéto nasmerovanie by ti mohlo vcelku pomôcť. Ako som povedal, nemám čas ani energiu písať zložité MVC mechanizmy a chujoviny, z ktorých by si jednak nič nemal a druhak by ma stáli dva dni roboty. :) Dúfam, že som pomohol. Ak nie, tak proste len daj mínus

Editováno 10.11.2016 12:41
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
10.11.2016 12:39
Aspartám, sacharín, to je môj vitamín
Avatar
shatem
Člen
Avatar
shatem:16.11.2016 15:18

díky, tak jsem se do toho pustil hloub a už chápu, že bez databáze se neobejdu :D díky za přibližný náhled (y)

 
Nahoru Odpovědět
16.11.2016 15:18
Avatar
Jan Bezdíček
Tvůrce
Avatar
Odpovídá na Lava
Jan Bezdíček:17.11.2016 2:40

Ono by mozna stacilo napsat, ze vsechny data, ktere chce mit na webu perzistentne nekam proste musi ulozit :D ale dam ti plus, aby ses necitil spatne :D

 
Nahoru Odpovědět
17.11.2016 2:40
Avatar
Lava
Člen
Avatar
Odpovídá na Jan Bezdíček
Lava:21.11.2016 8:38

Ďakujem, jú mejd maj dej :D

Nahoru Odpovědět
21.11.2016 8:38
Aspartám, sacharín, to je môj vitamín
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.