Autor | Zpráva | ||
---|---|---|---|
Kajman Profil |
Javascript bez živé ukázky nejde ladit. Když ji nenachystáte, tak se pomoci nedočkáte.
A trochu se bojím, že máte hokej v tom, kdy se co spouští a generuje. Kód pro ajax totiž většinou nesouvisí s původním formulářem. Každé se dělá v jinou dobu, je divné, že oboje máte ve stranka.php. |
||
bimbop Profil |
Živá ukázka zde to vypíše alert i konzoli na lokálu nedělá nic
Kajman: „Každé se dělá v jinou dobu, je divné, že oboje máte ve stranka.php.“ Pravda mám v tom hokej. Chci stránkovat výsledky a pro vypsání potřebuju předat jen aktuální zobrazovaný týden. O vypsání se stará kód na stranka.php . No a protože v tom mám ten hokej tak netuším jak jinak. Ještě takhle javascript je includovaný do index.php a potom $('.fc-view').append('').load('/server/html/stranka.php');
|
||
Kajman Profil |
#3 · Zasláno: 21. 10. 2020, 11:28:21
Když je chyba jen tam, kam nevidíme, musíte si ji opravit sám. Ale zkuste se podívat, zda javascript nevoláte před tím, než se v html kódu objeví ta tlačítka, která má javascript ovládat. To bývá častá chyba. Když v JS sekci nastavíte, že má být před kódem, tak to také nefunguje. Ale možná máte jiné nefungování.
|
||
Serg Profil |
#4 · Zasláno: 21. 10. 2020, 14:44:57
bimbop:
POST je pro stránkování overkill, stačí GET. Bez ajaxu to stránkování funguje? Ale koukám že zatím je spíš snaha rozchodit AJAX než stránkování. Jak píše Kajman, nejdřív by to chtělo zjistit, jestli se vůbec zavolá ta event funkce, která má vytvořit ten AJAX požadavek. A potom se kouknout jak dopadl ten požadavek, jestli success nebo fail. Něco jako: $( "#prev_week" ).click(function(event) { console.log('Event funkce funguje'); var prevWeekDate = "2020-10-19"; var url = "./server/html/stranka.php?date=" + prevWeekDate; var jxqhr = $.get(url, function(data) { console.log("Ajax success"); console.log(data); }); jxqhr.fail(function() { console.log("Ajax failed"); }); event.preventDefault(); } Jinak, k čemu je tam výpis ABS_PATH konstanty z php? Ajax by měl fungovat bez problému s reltivním zápisem adresy, pokud teda neodkazuje na jiný protokol, nebo jinou doménu - potom by tam mohl být problém s CORS. Případně, vývojářské nástroje ve Firefoxu a Chromu mají záložku Síť (nebo Network), tam by se dalo sledovat jestli se ajax požadavek vůbec vytvořil, na jakou adresu, a co vrátil server, s jakým stavovým kódem. |
||
bimbop Profil |
#5 · Zasláno: 21. 10. 2020, 15:19:38
Serg:
Stránkování jako takové funguje. 93.153.92.91/firmness/pec/server/html/maintenance-html.php. Problém je s tím že ten požadavek posílá index.php který načítá stránku se zobrazením přes load() . V $_POST je co přebuju ale netuším kde to zpracovat.
|
||
Kajman Profil |
#6 · Zasláno: 21. 10. 2020, 17:55:18
Jaký je význam načítat ajaxem celou stránku? Proč jen nepřejdete na další týden odkazem, který datum z jiného týdne předá jako GET parametr v url?
|
||
bimbop Profil |
#7 · Zasláno: 21. 10. 2020, 20:24:25
Kajman:
Tak ono je celkem jedno jestli POST nebo GET. Obojí je funkční jen v samotném scriptu zobrazení viz odkaz. Ten parametr spuštěný v index.php do php scriptu zobrazení nedorazí. Nejspíš je to způsobeno znovu načtením celého index.php který teprve načte script se zobrazením. |
||
bimbop Profil |
#8 · Zasláno: 22. 10. 2020, 13:00:36
Tak jsem ještě jednou vše kontroloval sledoval a procházel a zjistil, že se někde ztratí (uřízne) ten javascript pro stránkování.
|
||
Serg Profil |
#9 · Zasláno: 22. 10. 2020, 14:44:42
Kde se nachází ten script a kde se vkládá do html? Příjde mi, že se prostě nikde nevkládá, proto tam není. Navíc by se musel vkládat až v tom maintenance-html.php, ne v indexu.
Jinak stavět funkčnost stránek primárně na javascriptu mi nepříjde jako dobrý nápad (.load() v js místo použití include v php a normálních odkazů s GET parametrem). Ajax se dá dodělat dodatečně, ale stránky by měly fungovat i bez něj. |
||
bimbop Profil |
#10 · Zasláno: 22. 10. 2020, 23:52:12
Serg:
Celé je to postavené na Fullcalendar jako plánovací kalendář. Záznamy o údržbě se snažím do toho zakomponovat. Jelikož by to plánování značně znepřehlednilo nejde to zadávat přímo do kalendáře. |
||
Časová prodleva: 14 dní
|
|||
bimbop Profil |
#11 · Zasláno: 5. 11. 2020, 22:56:53
Ahoj jsem tady ještě s jedním problémem. Vypsat data do tabulky po řádcích není problém. Vůbec ale nechápu co a jak požít pro vypsání dat z databáze do tabulky, která má daný formát. Mám danou tabulku:
den/datum | příchod | odchod | přestávka | odpracováno | poznámka 1 2 3 atd Z databáze například toto: array(7) { [0]=> string(1) "1" [1]=> string(10) "2020-11-01" [2]=> string(8) "06:00:00" [3]=> string(8) "14:00:00" [4]=> NULL [5]=> string(5) "pokus" [6]=> string(8) "08:00:00" } array(7) { [0]=> string(1) "3" [1]=> string(10) "2020-11-02" [2]=> string(8) "06:00:00" [3]=> string(8) "14:00:00" [4]=> NULL [5]=> string(5) "treti" [6]=> string(8) "08:00:00" } array(7) { [0]=> string(1) "4" [1]=> string(10) "2020-11-03" [2]=> string(8) "06:00:00" [3]=> string(8) "14:00:00" [4]=> NULL [5]=> string(6) "lalala" [6]=> string(8) "08:00:00" } array(7) { [0]=> string(1) "7" [1]=> string(10) "2020-11-06" [2]=> string(8) "14:00:00" [3]=> string(8) "22:00:00" [4]=> NULL [5]=> string(5) "druha" [6]=> string(8) "08:00:00" } |
||
Serg Profil |
Jako jak z toho zase setavit tabulku?
Jestli jsou sloupce v SQL dotazu správně seřazené, tak stačí funkce implode, nebo procházet pole pomocí foreach. Ale koukám že sloupce "poznámka" a "odpracováno" jsou asi prohozené. $nadpisy = array("den/datum", "prichod", "odchod", "prestavka", "odpracovano", "poznamka"); $tbody = "<tr><th>" . implode("</th><th>", $nadpisy) . "</th></tr>"; while ( $row = $res->fetch_array() ) { // $row[1] = $row[0] . " / " . $row[1]; // spojeni prvniho a druheho sloupce do jednoho // unset($row[0]); // na tohle by uz bylo lepsi pouzit fetch_assoc a nazvy sloupcu jako klice, aby bylo na prvni pohled jasne, s jakym sloupcem se pracuje $tbody .= "<tr><td>" . implode("</td><td>", $row) . "</td></tr>"; } $table .= "<table>$tbody</table>"; A nebo nechápu otázku, co a kam umístit? |
||
bimbop Profil |
#13 · Zasláno: 6. 11. 2020, 05:47:00
Ono jde o to, že dny v měsíci jsou už hotové a nadpisy taky. Časy potom budou různě doplněné. Třeba soboty a neděle prázdné. Případně volno, dovolená a jiné to zůstane nevyplněno. Sloupce dotazem upraví podle potřeby.
|
||
Kajman Profil |
Dle dat v databázi si můžete postupně vyplnit pracovní pole, něco jako
$data_tabulky[$row['identifikátor_X']][$row['identifikátor_Y']]= $row; Pak při generování tabulky se podíváte do dříve vytvořeného pole, zda tam je pro kombinaci řádku a sloupce (X, Y) nějaký záznam. Buď ho vypíše, nebo vypíšete prázdnou buňku. |
||
bimbop Profil |
#15 · Zasláno: 6. 11. 2020, 17:29:00
Kajman:
Jestli tomu rozumím tak identifikátor X je svisle a identifikátor Y vodorovně? |
||
Kajman Profil |
#16 · Zasláno: 6. 11. 2020, 17:48:29
To si určete sám, jak se to bude lépe programovat. Bude fungovat oboje.
|
||
bimbop Profil |
#17 · Zasláno: 7. 11. 2020, 22:11:51
Zbastlil jsem toto:
$res = $mysqli->query($sql); while ($row = $res->fetch_array()){ list($days, $id, $dates, $start, $end, $snack, $hour, $total, $notice) = $row; $tab[$days][0] = $dates; $tab[$days][1] = $start; $tab[$days][2] = $end; $tab[$days][3] = $snack; $tab[$days][4] = $hour; $tab[$days][5] = $notice; $tab[$days][6] = $total; } for($days = 1; $days <= $month_days; $days++){ $weekend = ''; if (get_day_name(date("w", strtotime("".$year."-".$moon."-".$days."")),0) == 'So' || get_day_name(date("w", strtotime("".$year."-".$moon."-".$days."")), 0) == 'Ne'){ $weekend = 'style="background-color:darkgray;"'; } $nameday = get_day_name(date("w", strtotime("".$year."-".$moon."-".$days."")),0); $dates = $tab[$days][0] ?? false; $start = $tab[$days][1] ?? false; $end = $tab[$days][2] ?? false; $snack = $tab[$days][3] ?? false; $hour = $tab[$days][4] ?? false; $notice = $tab[$days][5] ?? false; $total = $tab[$days][6] ?? false; $dates = $dates ? $dates : 'nezadáno'; $start = $start ? '<div class="td"><input type="text" value="'.$start.'" readonly="readonly" name="start_time_shift" class="time_shift" '.$weekend.'/></div>' : '<div class="td"><input type="text" value="" placeholder="--:--" name="start_time_shift" class="time_shift" '.$weekend.'/></div>'; $end = $end ? '<div class="td"><input type="text" value="'.$end.'" readonly="readonly" name="end_time_shift" class="time_shift" '.$weekend.'/></div>' : '<div class="td"><input type="text" value="" placeholder="--:--" name="end_time_shift" class="time_shift" '.$weekend.'/></div>'; $total = $total ? '<div class="td"><input type="text" value="'.$total.'" readonly="readonly" name="total_time_shift" class="time_shift" '.$weekend.'/></div>' : '<div class="td"><input type="text" value="" placeholder="--:--" name="total_time_shift" class="time_shift" '.$weekend.'/></div>'; $snack = $snack ? '<div class="td"><input type="text" value="'.$snack.'" readonly="readonly" name="snack_time_shift"class="time_shift" '.$weekend.'/></div>' : '<div class="td"><input type="text" value="" placeholder="--:--" name="snack_time_shift" class="time_shift" '.$weekend.'/></div>'; $hour = $hour ? '<div class="td"><input type="text" value="'.$hour.'" readonly="readonly" name="hour_time_shift" class="time_shift" '.$weekend.'/></div>' : '<div class="td"><input type="text" value="" placeholder="--:--" name="hour_time_shift" class="time_shift" '.$weekend.'/></div>'; $notice = $notice ? '<div class="td"><input type="text" value="'.$notice.'" readonly="readonly" name="snotice_shift" class="time_shift" '.$weekend.'/></div>' : '<div class="td"><input type="text" value="" name="notice_shift" class="time_shift" '.$weekend.'/></div>'; echo '<form class="tr" id="day_schift_'.$days.'" '.$weekend.'><div class="td">'.$nameday.' - '.$days.'. '.$moon.'</div>'; echo $start.$end.$hour.$snack.$total.$notice.'</form>'; } |
||
Časová prodleva: 4 roky
|
0