Zdravím,
snažím se formovat rozvrh z údajů z databáze do 2D pole, a to potom
vypisovat. Bohužel mi časy při výpisu přeskakují vedle (viz obrázek).
Také bych potřeboval vypisovat aktivity do sloupců k jejich časům. Aktivity
se totiž vypisují přímo za sebou a ne k příslušným časům.
Zkusil jsem: Takto vypadá struktura pole - print_r($timetable);
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).
//$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.
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
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.