Diskuze: Výpis rozvrhu do HTML tabulky v PHP
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 10 zpráv z 10.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.


Nejsem si jisty, zda uplne chapu, v cem je problem. Mozna obrazek predtim, potom. Vubec, cely kod mas takovy divny, ze zvazuji, zda by nebylo lepsi pouzit google kalendar? Program pro cteni, editaci.
Spojeni ujizdeni casu nedava smysl. Kdyz delas skolni rozvrh, tak osa x ma 1,
2, 3, 4... osa y ma po, ut, st, ct, pa. Potrebujes docilit toho, aby mezi 1:00,
3:00, 4:00, 7:00 nebyly volne sloupce?
//$timetable[0][0+$i] = $date;
$timetable[0][] = $date; // uloz cas na posledni volnou polozku
$timetable[0][$date] = $date; // uloz to podle datumu
// oboje pocita to ale s tim, ze to z databaze mas uz serazene podle casu, ORDER
BY cas ASC
// mimochodem, pokud je to cas, tak bych to nazval $time a ne $date
Ja bych pro rozvrh volil tabulku
x, y, text
0, 0, text
0, 1, text - a pri vypise doplnoval hodinu a den
day, time_start, text
0, 1:00, text
0, 4:00, text
Hlavne, kdyz chces data ziskat, tak staci 1 SELECT.
SELECT x, y, text FROM rozvrh ORDER BY y ASC
Pro zjednoduseni mozna jeste druhy, seznam vsech rozdilnych casu z tabulky
DISTINCT SELECT x FROM rozvrh ORDER BY x ASC
Děkuji, z půlky je můj problém vyřešen. Teď je tu ještě ten
problém, že se v poli řadí aktivity automaticky za sebou a ne podle časů.
Tím pádem se tak vypisují i do rozvrhu. Je nějaká možnost, jak zařídit,
aby se aktivity vypisovaly přímo k jejich časům?
Například, aktivita neděleden2 je od 4:00 a druhá aktivita neděleden2 je od
6:00 (viz obrázek databáze), ale v rozvrhu jsou od 1:00 a od 2:00 (viz
rozvrh).
Toho seřazení docílíš pomocí ORDER BY, jak psal Peter výše.
//$timetable[0][0+$i] = $date;
$timetable[0][] = $date; // uloz cas na posledni volnou polozku
$timetable[0][$date] = $date; // uloz to podle datumu
Prvni radek, tos tam mel. Druhy radek je pridani na konec. dyz to seradis podle
casu, tak to bude, jak ted mas na obrazku. Treti radek je ukladani podle casu.
Jinymi slovy, pokud jsi to prepsal na db strukturu
id, x, y, texty, pak by tam melo byt
$query = "SELECT y, x, text FROM tabulka ORDER BY y ASC, x DESC"; // y je den v tydnu, x je hodina
...
while ($row = mysqli_fetch_assoc($result)!==false)
{
list ($y, $x, $text) = $row;
$timetable[$y][$x] = $text;
...
Ja osobne bych tam dal fakt x,y cislovane 0,1,2,3... Nebo kompletni datetime rok-mesic-den hodina:minuta a z nej to pak separoval. Nektere rozvrhy se delaji treba jen pro konkretni tyden.
A nebo bych to resil jeste dvema tabulkami
id, den
1, pondeli
...
id, hodina
1, 8:00
...
id, x, y, id_den, id_hodina, text
1, 0, 0, 1, 1, telocvik
SELECT x, y, den, hodina
FROM rozvrhy a
LEFT JOIN dny b ON b.id_den=a.id_den
LEFT JOIN hodiny c ON c.id_hodina=a.id_hodina
ORDER BY y ASC, x ASC
Jestli to spravne chapu, tak jeho problem je nyni, ze mu to nudlickuje za
sebou. Cili, nejspis tam ma kod
$tab[$radek][] = $text;
1 2 3
1 4 5 a potrebuje to mit ve spravnem sloupci
1 2 3 x x
1 x x 4 5
Jinymi slovy, je linej premyslet 
SELECT x, y, den, hodina
SELECT a.x, a.y, b.den, c.hodina, a.text
Mozna lepe pro pochopeni, si tam dej jmena tabulek; pri vice tabulkach by ten
povodni zapis mohl vypsat sql error, protoze by mohly byt 2 sloupce stejne
pojmenovane
Zobrazeno 10 zpráv z 10.