Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Machr na PHP – kvíz, dotazník

Aktivity
Avatar
Michal Žůrek - misaz:12.8.2014 10:22

Ahoj, vítám Vás u další minisoutěže Machr, tentokrát na PHP. Tento týden si zkusíte naprogramovat systém pro kvízy/dotazníky. Cílem je, abyste vytvořili nějaký script, který si naimportuju do PHP stránky a ten mi vytvoří formulář s dotazníkem/kvízem, třeba podobný tomu co je zde na ITnetwork. Součástí taky bude script, který přijme uživatelův výsledek, uloží jeho odpovědi do databáze a v případě kvízu zobrazí výsledek uživateli, v případě dotazníku někam přesměruje (ideální by bylo, abych mohl zadat kam). Bonusové body budou za administraci, kde mi nějak přehledně zobrazíte výsledek (dotazníku).

Myslím, že základ je jednoduchý, můžete třeba implementovat, že script přehází pořadí odpovědi, že mu třeba dám 30 otázek a on vybere jen 10 náhodných, že script započte výsledek, jen pokud kvíz/dotazník bude udělán v určitém čase, že script nebude nabízet jen možnost typu a,b,c,d, ale třeba otevřenou odpověď (to spíš dotazník) nebo jiné formy odpovědí. Můžete nějakým způsobem umožnit rozdělit otázky do skupin. Možností jak to rozšířit je kupa, proto dbejte, aby se to snadno rozšiřovalo.

Hodnotit se bude převážně zdrojový kód, jednoduchost implementace, rozšiřitelnost aplikace, [design výsledku pouze v případě, že vše ostatní bude geniální]. Řešení, která budou obsahovat SQL injekce, nebudu hodnotit vůbec. Nesnažte se toho napatlat co nejvíc, hezký, objektový a přehledný kód má daleko větší šance.

Ačkoliv je Machr na PHP, nevadí mi jakýkoliv jiný rozumný serverový jazyk.

Odkaz na zdrojový kód řešení posílejte zde nebo Michal Žůrek - misaz do PM v zazipované složce (soubor *.zip). Pokud to budete psát v něčem jiném, než PHP nahrajte to někam na web, ať to můžu i vyzkoušet a nemusím instalovat 30 milionů nástrojů, serverů, interpretů a kdo ví čeho ještě.

Kompletní pravidla soutěží jsou <a href="http://­www.itnetwork­.cz/pravidla-programatorskych-soutezi-machr">zde</a>
Deadline je v pondělí 18.8 v 10:00.

 
Odpovědět
12.8.2014 10:22
Avatar
Patrik Smělý
Tvůrce
Avatar
Patrik Smělý:12.8.2014 10:31

Hm konečně, něco pro mně :D Doufám že můžu použít PDO. A nikam na server to nemusím nahrávat. Když to dělám v php ?

 
Nahoru Odpovědět
12.8.2014 10:31
Avatar
Odpovídá na Patrik Smělý
Michal Žůrek - misaz:12.8.2014 10:35

PDO použít můžeš. Zprovozňovat na hostingu to nemusíš, ale je lepší když to zprovozníš, protože jinak to budu muset zprovoznit u sebe a ne vždy to funguje optimálně, kvůli rozdílným konfiguracím, verzím, atd...

 
Nahoru Odpovědět
12.8.2014 10:35
Avatar
Patrik Smělý
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
Patrik Smělý:12.8.2014 10:36

Dobře, radši to nahraji na server.

 
Nahoru Odpovědět
12.8.2014 10:36
Avatar
Michal Žůrek - misaz:12.8.2014 22:25

nakonec ještě malá změna, protože ráno v 10:00 obykle spím, tak si dejme deadline na (k datumu pěkně ladícíh) 18:00. Datum tedy je stejný.

Nový deadline je pondělí 18.8 18:00

 
Nahoru Odpovědět
12.8.2014 22:25
Avatar
Patrik Valkovič:12.8.2014 22:42

Je povolený framework? Konkrétně Nette, eventuelně vlastní?

Nahoru Odpovědět
12.8.2014 22:42
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na Patrik Valkovič
Michal Žůrek - misaz:12.8.2014 22:43

nette jsem sice nikdy neviděl, ale jo, povolím to.

 
Nahoru Odpovědět
12.8.2014 22:43
Avatar
Martin Konečný (pavelco1998):12.8.2014 23:46

Hmm, tak podle všeho to vyhraje ten, kdo použije Nette, tak jako to bylo vždy. :D

Nahoru Odpovědět
12.8.2014 23:46
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Odpovídá na Martin Konečný (pavelco1998)
Michal Žůrek - misaz:13.8.2014 9:50

ne to jsem neříkal, napsal jsem co se bude hodnotit. Hezký zdrojový kód, OOP a rozšiřitelnost lze dobře udělat i bez Nette.

 
Nahoru Odpovědět
13.8.2014 9:50
Avatar
Odpovídá na Michal Žůrek - misaz
Martin Konečný (pavelco1998):13.8.2014 11:21

Pokud si pamatuji správně, pak to někdo s Nette vždy vyhrál (alespoň jako jeden ze dvou). Já proti tomu nic nemám, jen mi to s tím přijde o mnohem snazší.

Nahoru Odpovědět
13.8.2014 11:21
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Ori I
Člen
Avatar
Ori I:13.8.2014 13:52

Môj názor na php frameworky v devbook súťažiach je taký, že by sa mali zakázať. Za prvé výherný kód sa zverejňuje, čo pre ľudí, ktorí s php začínajú môže byť dosť nepríjemne. Za druhé väčšina frameworkov už obsahuje hotové riešenia hlavných problémov, ktoré si má programátor v súťaži osvojiť. Za tretie použiť FW na niečo takéto(budme úprimní nič z toho nebude tak komplexné aby to bolo aj skutočne použiteľné) je ako použiť protitankovú päsť na komára. Viem, že FW sú tu preto aby sa zjednodušila práca ale do sútaže s php nepatria. Spravte nového machra na Nette, alebo neviem čo :D. Taktiež ak by niekto použil FW ako napríklad Codeigniter tak by ma zaujímalo koľko -bodov by dostal za inú úhľadnosť kódu na ktorú ste zvyknutý vy aj keď pri CI je to bežný postup.

 
Nahoru Odpovědět
13.8.2014 13:52
Avatar
Michal Žůrek - misaz:13.8.2014 14:03

Na základě názorů na frameworky, což je skutečně pravda, hodnocení rozdělím do skupiny s frameworky a bez frameworků.

 
Nahoru Odpovědět
13.8.2014 14:03
Avatar
Ondřej Štorc
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
Ondřej Štorc:13.8.2014 14:53

Nějak jsem nepochopil zda si mám vybrat jestli mám udělat kvíz a dotazník dohromady nebo si mám vybrat co mám udělat?

Nahoru Odpovědět
13.8.2014 14:53
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Odpovídá na Ondřej Štorc
Michal Žůrek - misaz:13.8.2014 15:01

tak ono když se nad tím zamyslíš, tak je to věsměs jedno a totéž. Kvíz má otázky.

Kdo vyhrál předchozího machra?
a) programátor ABC
b) webdesignér BCD
c) tester CDE
d) zadavatel úlohy

a dotazník

Jak se vám líbila prezentace?
a) byla skvělá
b) ušla
c) mohla být lepší
d) byla otřesná

jediný rozdíl je v tom jestli máš uživateli zobrazit výsledek nebo ne.

 
Nahoru Odpovědět
13.8.2014 15:01
Avatar
Ori I
Člen
Avatar
Odpovídá na Ondřej Štorc
Ori I:13.8.2014 15:16

taktiež u kvízu užívateľa informuj o dosiahnutých % alebo bodoch pri dotazníku len nejaká hláška že ďakujeme bla bla bla a ulož odpovede do DB

 
Nahoru Odpovědět
13.8.2014 15:16
Avatar
Odpovídá na Michal Žůrek - misaz
Patrik Valkovič:13.8.2014 19:50

Spíš bych řekl že kvíz má ověřit znalosti (tedy se bude například vybírat 5 otázek z 20 předem připravených), zatímco dotazník má každý stejný.

Nahoru Odpovědět
13.8.2014 19:50
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na Patrik Valkovič
Michal Žůrek - misaz:13.8.2014 20:11

Mě je jedno, jakým způsobem to pojmete.

 
Nahoru Odpovědět
13.8.2014 20:11
Avatar
Neaktivní uživatel:15.8.2014 11:42

Michal Žůrek - misaz, ty placky jsou ještě Devbook ? o_O

Nahoru Odpovědět
15.8.2014 11:42
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Michal Žůrek - misaz:15.8.2014 11:45

měli by už být ITnetwork. Jen jsem teda zkopíroval starý obrázek.

Editováno 15.8.2014 11:45
 
Nahoru Odpovědět
15.8.2014 11:45
Avatar
Odpovídá na Michal Žůrek - misaz
Matúš Petrofčík:16.8.2014 2:12

veľmi zaujímavá téma, plánoval som sa zúčasniť ale žiaľ mi čas nevydá... ale potom sem pridám svoje riešenie (sľubujem že nebudem pozerať vaše riešenia) pretože podobnú funkcionalitu isto budem(e) potrebovať.

Nahoru Odpovědět
16.8.2014 2:12
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Odpovídá na Neaktivní uživatel
Zdeněk Pavlátka:18.8.2014 14:35

Placky jsou ITnetwork, jen obrázky jsou staré.

Nahoru Odpovědět
18.8.2014 14:35
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Patrik Valkovič:18.8.2014 18:02

Teď jsem posílal ;-) Bohužel se mi to nepovedlo rozběhnout na serveru (problém s MySQL než s PHP :) takže máš zdrojáky ;-)

Nahoru Odpovědět
18.8.2014 18:02
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Michal Žůrek - misaz:18.8.2014 19:32

Tento týden dorazilo jedno jediné řešení, konkrétně řešení s frameworkem.

patrik.valkovic: Tvoje řešení používá Framework nette, který neumím, tudíž nerozumím tajům jako je

use App\Entities\Questioner;
use \Exception;
use Nette\InvalidArgumentException;

Nicméně používáš starší databázový ovladač, existuje novější PDO. Výhodu pro tebe bude mít u prepared statements. Nebudeš muset řešit nějakou metodu esc a podobné, navíc lepený SQL dotaz není vůbec bezpečný ani přehledný. Vůbec netuším jak si v metodě getUrl ošetřuješ $id, protože

$result=$this->database->query("SELECT `Id`,`AdminUrl` FROM questioner.questioner WHERE id=" . $id . ";");

Nevypadá vůbec bezpečně. V některých souborech jsem sice PDO objevil, ale nevím do jaké míry to byl tvůj kód a kód nette.

GUI není taky žádná sláva. Docela mi trvalo, než jsem pochopil toho vytvářecího formuláře, nakonec jsem i něco rozumné splácal. Když vytváříš rozevírací seznam, tak vyznat se v tom je docela utrpení. Neumím si dovést představit, že bych v tom připravoval složitější dotazník.

Objektové se to tváří tak na půl slova, Framework tě vede za ručičky k cíly, ale občas se utrhneš a utečeš.

$value=array();
$value['Id']=$row['Id'];
$value['Text']=$row['Text'];
$value['Points']=$row['Points'];
if($question['Type']=="CHECKBOX" || $question['Type']=="RADIUSBOX" || $question['Type']=="COMBOBOX")
    $questions[$key]['Values'][$row['Id']]=$value['Text'];
else
    $questions[$key]['Values'][]=$value;

Tak výše zmíněný kód je hrůza. OOP staví na třech pilířích, jedním z nich je polymorfius, proč každý typ otázky neměl svoji třídu a neimplementoval si to po svém? Takhle zjišťuješ, jestli kontroluješ jablka nebo hrušky a pak nějakou zajímavou metodou z nich dostáváš výsledek. Detailně se mi to nechtělo zkoumat. Mohl jsi udělat třeba rozhraní IQuestion a to mohli implementovat třídy TextField, SelectField, ….

Protože Patrik Valkovič byl jediný kdo řešení odevzdal, tak i přes nějaké chybičky získává placku. Požádej o redaktorská práva, publikuj článek a za získané body se můžeš podívat na (k prvnímu dílu body nepotřebuješ) <a href="http://­www.itnetwork­.cz/php/ostat­ni/php-generator-testovacich-dat-v-php-navrh-entity-jadro">Generátor testovacích dat v PHP</a>. Je tam ukázáno jak lze vyřešit onen nedostatek s polymorfiem (viz. entity).

 
Nahoru Odpovědět
18.8.2014 19:32
Avatar
Patrik Smělý
Tvůrce
Avatar
Patrik Smělý:19.8.2014 6:57

Bohužel jsem se nemohl zůčastnit snad to výjde příště :D

 
Nahoru Odpovědět
19.8.2014 6:57
Avatar
PiskotPiskotovic:19.8.2014 11:12

PHP bohužel neumím protože mě nějak neláká a ve svých "projektech" na něj zatím nenacházím využití. Avšak gratuluji patrik.valkovic, opět jediný kdo se tím prokousal. :D

Nahoru Odpovědět
19.8.2014 11:12
Error 404 - stránka motto.php nenalezena.
Avatar
kivdul
Člen
Avatar
kivdul:19.12.2015 11:25

ahoj lidi

chtěl jsem pro mladého udělat vánoční kvíz i s patřičnou "odměnou" na způsob televizní soutěže Riskuj s Janem Rosákem ale ..... jak mi to přišlo jednoduché jsem teď doslova v .... koncích. Vím co to má dělat, ale nevím jak to naprogramovat :-( Hraji si s tím skoro měsíc a nemám v podstatě ani .... nic. Acho jo

našel by se někdo, kdo by takový podobný kvíz zpracoval jako tutoriál?

díky Ludvík

 
Nahoru Odpovědět
19.12.2015 11:25
Avatar
Odpovídá na Michal Žůrek - misaz
Dominik Gavrecký:19.12.2015 15:04

Nepríde mi to fér. Využíva Framework ktorý využívať očividne nevie a ešte za to dostane placku !?

Nahoru Odpovědět
19.12.2015 15:04
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Odpovídá na Dominik Gavrecký
Michal Žůrek - misaz:19.12.2015 15:05

ale odevzdal to a fungovalo mu to. Machr není o tom jestli umíš používat framework nebo ne.

 
Nahoru Odpovědět
19.12.2015 15:05
Avatar
Michal Žůrek - misaz:19.12.2015 15:05

mimo jiné se jedná o rok a něco starého machra....

 
Nahoru Odpovědět
19.12.2015 15:05
Avatar
kivdul
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
kivdul:19.12.2015 17:10

ano, machr je sice staršího data, ale to přeci nebrání tomu, aby někdo šikovný a znalý php nebo js (nevím co je vhodnější) zpracoval jednoduchý tutorial

Ludvík

 
Nahoru Odpovědět
19.12.2015 17:10
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 30 zpráv z 30.