« 1 2
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
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
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
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
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
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
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
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
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.
bimbop
Profil
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
jen ranní a odpolední směny.
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" }
Nechápu princip jak to správně umístit. Prosím někoho kdo by mi to srozumitelně polopaticky vysvětlil.
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
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
Kajman:
Jestli tomu rozumím tak identifikátor X je svisle a identifikátor Y vodorovně?
Kajman
Profil
To si určete sám, jak se to bude lépe programovat. Bude fungovat oboje.
bimbop
Profil
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.'&nbsp;-&nbsp;'.$days.'. &nbsp;'.$moon.'</div>';
        echo $start.$end.$hour.$snack.$total.$notice.'</form>';
    }
Funguje to ale nemůžu se zbavit dojmu, že to není to pravé ořechové.
« 1 2

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0