Diskuze: Jak pracovat s akcí
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Nedelam s temi jazyky. A uplne nechapu problem. Co ktery pojem z tech vet ma presne udelat z hlediska html kodu, uchovani dat nebo tak. Zkusim odpovedet na zaklade php, ktere je asp podobne.
Mas html formular s tabulkou studentu + checkboxy pro kazdy radek. Zaskrtas
lidi, kliknes odeslat a stane se co?
V checkbox value je id studenta? Melo by byt.
Www prohlizec posle tato id na server.
Program na serveru prevezme data. Co s nimi ma provest dal?
--
'pošlu si je do akce, která mi sestaví formulář na zadání známky '
Lze to chapat tak, ze chces hned uzivateli poslat jinou stranku, kde bude
seznam, tabulka jen tech 3 studentu a on vyplni 3 dalsi policka se znamkou?
To data nepotrebujes uchovavat vubec, jen proste pripravis novy html kod. Ale
pro pripad F5 si to muzes v php ulozit do session. V pripade, ze ta akce trva
dele, ze ten formular se ma zobrazit, kdyz ucitel klikne, ze chce akci
ohodnotit, tak si do databaze (mssql, mysql, oracle, ... (nebo do souboru, treba
format csv se da otevirat i v excelu)) ulozis do tabulky propojeni akce + id
studenta. Pak si muzes zobrazit seznam akci. A po rozkliknuti akce mu zobrazis
seznam studentu. A jestli ten student ma nebo nema znamku.
--
Pokud nepotrebujes nic ukladat, muzes uzivateli ten novy formular vygenerovat
pomoci javascriptu. Nepotrebujes nic odesilat na server.
--
Ta verze php + sql by vypada takto. V sql mas tabulky o studentech
tab studenti
id_student | jmeno | prijmeni | adresa | rc ...
1 | tomas | holecek | na parezu 5, praha 1
2 | marketa | novotna | pod parezem 13, liberec
tab studia (obory)
id_obor | nazev | popis | rocnik | rok | od | do
1 | Gastronomie | blabla | 1 | 2018
tab student_obor
id_obor, id_student
1 | 1
1 | 2
akce
id_akce | typ | nazev | popis | datum konani | vytvoril
1 | pisemka | Pisemka z matematiky 1 | blabla | 12.3.2018 | Mgr. Jaroslav
Janecek
akce_student
id_akce | id_student
1 | 1
1 | 2
Sql prikaz, ktery ti vytahne vsechny studenty na akci:
SELECT os.jmeno, os.prijmeni
FROM akce_student a
LEFT JOIN studenti os ON a.id_student=os.id_student
WHERE a.id_akce=1
php kod, ktery to zobrazi by vypadal asi takto
$conn = mysql_connect('server', 'user', 'psw'); // pripojeni ke sluzbe sql
$query = "SELECT ... ";
$result = mysql_query($query) // dotaz na sql
while ($row = mysql_fetch($result)) // parsovani dat ziskanych dotazem do pole, pripadne vypis pres echo
{
echo $row[jmeno]
echo $row[prijmeni]
}
mysql_disconnect() // odpojeni
U nas pouzivame na ruzne testy a studijni materialy php program
Moodle.
Evidence znamek resi java program b. Ale zvazujeme levnejsi variantu, brnenske
MU, system Muni.
Maminka, co ma jednu slednu na stredni pouzivala jakysi online system, ktery
kdosi provozuje a je tam vice skol. Nevim uz nazev, zkusim google. Tusim, ze by
to mohlo byt toto:
https://www.**skolaonline**.cz/
Netusim, co vsechno tam jde delat ci nedelat. Ona se jen potrebovala doklikat k
vysledkum sve dcerky, protoze mela podezreni, ze skolu flaka. Coz se nepotvrdilo
Temi odkazy dole chci rici, ze mozna zbytecne ztracis cas vlastni tvorbou. Moodle testy studentu resi sam. Stag ma zas evidenci studentu.
Ak to robíš v MVC tak predpokladám, že študentov si do tabuľky posielaš v nejakom ViewModeli. Ak VM pre študenta obsahuje aj nejakú premennú, ktorá označuje, či je daný študent označený checkboxom alebo nie, tak podľa mňa super - nestačilo by ti potom VM tej tabuľky v postbacku prejsť cyklom (alebo LINQ), vybrať označených študentov a nad nimi ďalej robiť čo už potrebuješ (napr. odoslať tú známku)?
Je to len také pseudo, narýchlo a môžu tam byť chyby, ale snáď z toho lepšie pochopíš, ako to myslím:
[HttpGet]
public ActionResult Prehled()
{
var studenti = // nacteni studentu z databaze
var model = new List<StudentViewModel>();
foreach (var student in studenti)
model.Add(new StudentViewModel(student));
return View(model);
}
[HttpPost]
public ActionResult Prehled(List<StudentViewModel> model, int znamka)
{
// klasicka validace odeslanych dat atd
foreach (var student in model)
if (student.JeZaskrtlej)
// pridej mu znamku
// ...
}
Zobrazeno 4 zpráv z 4.