Diskuze: Aktualizace stránky po odeslání formuláře z nového okna
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Ono, bez kodu se spoustu veci resi dost tezko. Muze byt tisicovka reseni... A
malokdy se nekomu na forku chce vyptavat a zjistovat, ktere by se ti zrovna
nejlepe hodilo
A zkousel jsi jaka slova na google? Nic? Chyba, chyba, tisice lidi uz
programovali neco podobneho.
https://www.jakpsatweb.cz/…-window.html
//window[name]
//window = window.parent;
//window = window.opener;
//window[name].close()
--- a.htm ---
mywin = window.open('b.htm', 'windowname', 'width=100,height=100');
function yyy() {
mywin.close();
window.location.reload()
}
--- b.htm --- (pri reloadu stranky do ni pridas js nebo nejak spustis...)
window.top.yyy();
A nebo muzes jit cestou ajaxu.
google = javascript ajax example php
Ahoj,
nedělal bych to zbytečně takhle složitě, v tomto případě bys musel v
okně s přehledem odchytávat události, které ti dají info o tom, že se
tabulka změnila a je potřeba překreslit (nějakým intervalem na dotazování
na server, nebo přes websocket).
Jednoduché řešení je:
Samozřejmě možnost b je poněkud komplikovanější, pokud nepoužíváš některý framework, který tohle nabízí.
A proc by nemohl z otevreneho okna informovat o zmene? Vzdyt to js umi. Pokud
je vsechno stejna domena. Ledaze by to v posledni dobe blokly jako nezadouci
vlastnost typu CORS.
Pokud to dela, jak pise, ze v okne edituje, klikne na ulozit, cele okno se
prekresli, tak na konci muze spustit js, ktery zavola funkci z hlavniho okna.
Coz by podle mne nic nebezpecneho byt nemuselo.
Jo, co sem nekde videl, cetl, tak se snad zakazuje to zavirani a otevirani
oken. Ale pro stejnou domenu by to melo fungovat jako predchozich 30 let.
Ono se to zneuzivalo na otevirani reklam, pripadne spusteni parazitniho kodu z
uplne jine domeny a hned okno zavrit, aby si uzivatel nevsiml.
Otevrit okno muzes, ale jenom jedno v jeden cas a zavrit nemuzes. Minimalne takhle to je tedka na Chrome.
Riešenie je jednoduché: prerob to...
Ja viem, to sa mi povie, ale v realite sa to tak, ako to robíš ty, nepoužíva. Pokiaľ je to možné, neotvoríš nové okno, ale modálne okno. V tej istej stránke. A tam už je jednoduché po odoslaní formulára obnoviť stránku. Ikeď ... ani to sa nerobí. Neobnoví sa celá stránka, len sa ajaxom vypýtajú nové údaje do existujúcej stránky.
A mal by si to prerobiť nie len preto, aby si sa to naučil robiť tak ako sa má, ale hlavne kvôli užívateľom danej stránky. Rapídne tým zlepšíš UX, čo je aj hlavný dôvod prečo sa tak robí, a nie tak, ako to ty chceš.
"ako sa má" Ja bych
nevolil tak ostra slova. Pro takove hlasky jsem odesel z jakpsatwebu, kdy lidem
tlacili jina, "lepsi" reseni jako dogma. Parkrat jsem se tam vyjadril proti tomu
a nejake kritiky webu, nacez mi zacali mazat prispevky. (asi nejakeho zakaznika
nektereho z moderatoru ma kritika oslovila a dal mu to pekne sezrat
)
Ale ano, dneska bych sel taky do ajaxu a urcite bych se novym oknum vyhnul, pokud by neslo o odkaz na externi web. Ale vicemene mi nezalezi na tom, s cim se bude on trapit, pokud mu tohle reseni nejak funguje a vyhovuje.
Děkuji za všechny reakce, ale abych vše uvedl na pravou míru.
Vypisování sem nějakého kódu mi přišlo opravdu naprosto zbytečné,
neboť jak jsem hned na začátku psal, nejsem žádný profík a celý svůj
projekt mám stavěný na základních dotazech .php a .js, kterému vůbec
nerozumím (zatím), mám použito pouze právě pro otevření nového
zmenšeného a "osekaného" okna, kde pouze edituji nebo zakládám novou
událost. Nerad bych tady rozvířil diskuzi, co je správné a co ne, toho je
plný web a každý má na to jiný pohled a to i v případě použití
různých programovacích jazyků.
Ale abych byl konkrétnější. Můj projekt není vůbec veřejný, je to v
podstatě web, který je pro použití pouze pro potřeby své firmy. Mám i
zakázané indexování stránek, aby je vyhledávače nenašli (teda nevím,
jestli tohle 100% funguje). Zatím umím jen základy php, ale pro můj projekt
dostačující a vše funguje, jak má, tedy kromě toho problému, který jsem
popsal v úvodu. Proč to tak mám, vlastně ani nevím, ale nějak nám to tak
vyhovuje (zvyk z podobného profesionálního programu), tak jsem chtěl jen
radu, jak to mohu použít i já, neboť ještě absolutně neznám js.
Samozřejmě se k tomu chci postupně dostat, avšak ne až do profesionální
úrovně, ale jen proto, že mě to baví a rád se v takových věcech vrtám
Prostě jsem nyní chtěl jen
urychlit řešení pro funkčnost svých stránek, než se vše stihnu naučit,
protože ke studiím je toho opravdu příliš a vlastně ani pořádně nevím,
co vše mám studovat, protože jak už jsem psal, těch názorů jak a v čem
programovat je fakt hodně.
No, v tom pripade bys to mohl prepsat do formy web-services.
Zadas url, jeden z parametru format a php ti posle data.
ws/nazev?a=1&b=2&format=csv
to presmerujes pres htacces na php a to ti vrati data
ws.php?sluzba=nazev&a=1&b=2&format=csv -- vhodne pro excel, text oddeleny stredniky, citelne i v prohlizeci
//ws.php?sluzba=nazev&a=1&b=2&format=json -- vhodne pro js / request / ajax
//ws.php?sluzba=nazev&a=1&b=2&format=xml -- totez
//ws.php?sluzba=nazev&a=1&b=2&format=html -- treba vypis uzivatelu, vygenerujes html tabulku (ale to je lepcejsi generovat z ajax/csv primo pres js)
Vyhoda je, ze muzes do adresniho radku zadat odkaz na stranku a muzes is pak
prohlizet, co ti vrati to php.
Dalsi vyhoda je, ze muzes propojovat data z ruznych sql dotazu.
Tez muzes posilat data v ruznych formatech. Coz se treba hodi nam v praci, kdyz
muzeme data dostat ve formatu csv. csv umi otevirat excel. Treba jmena a adresy
zamestnancu a studentu. Ten excel pouzivaji sekretarky pro hromadnou
korespondeci, tisk obalek se stitky s adresami.
Ale, samozrejme je trochu pracnejsi udelat ten php kod, ktery ti bude vracet
takove moznosti A tez musi mit
overeni, zda a kdo je prihlaseny, zda mam k datum pristup.
Jen takovy napad. Zkus o tom popremyslet a treba si udelat slozku pro ws.
ws_uzivatele.php, ws_clanky, ws_komentare,...
Potom totiz misto volani funkci muzes url.
localhost/?service=uzivatele&a=1&b=2
localhost/index.php?service=uzivatele&a=1&b=2
file_get_content('?service=uzivatele&a=1&b=2')
zobraz_uzivatele($a=1, $b=2) {... return 123;}
To jsem z toho celkem jalovej ale povedlo se mi pohrát a lehce upravit první řešení od Peter
Mlich. Nové okno po odeslání změn se zavře a stránka s výpisem se
aktualizuje.
Funkce:
function Sail(adresa)
{
okno=window.open(adresa,"_okno","width=300,height=200");
okno.opener=this;
}
</script>
Odkaz na editaci:
<a href="'......'" onclick="Sail(this.href);return false;"><button>Upravit</button></a>
A v nově otevřeném okně po stisku tlačítka "Submit" se uloží do DB a připsal jsem klasické window.close.
Nevím, jestli je to úplně košér, ale mou představu to splňuje a funguje bez problémů.
Zobrazeno 11 zpráv z 11.