Autor Zpráva
vazo
Profil
Ahoj,
mohl by jste mi prosím někdo objasnit, jakto že se v různých prohlížečích chová tato stránka různě? http://www.vhprint.cz/sdhnahorany/u6/upload_fotek.php
Když se podíváte na porovnání Firefoxu a Opery (viz. screeny níže), tak je patrné, že se zřejmě neodesílá pár záznamů z formuláře.

Kód, kde se kontrolují odesílaná data z formuláře a kde nastává chyba je zde:
if ($_POST['druh_akce'] == "soutez") {
            if ((isset($_POST['druh_souteze'])) and (isset($_POST['cas_muzi'])) and (isset($_POST['cas_zeny'])) and (isset($_POST['cas_deti']))) {
               $soutez = "ok";
               if (($_POST['druh_souteze'] == "") or ($_POST['druh_souteze'] != "Primator liga" and $_POST['druh_souteze'] != "Okrsek" and $_POST['druh_souteze'] != "Mimo okrsek" and $_POST['druh_souteze'] != "Vychodoceska" and $_POST['druh_souteze'] != "Podorlicka" )) {
                   $hlaska .= '<span class="success">Nebyl vybrán druh hasičské soutěže.</span></br>';   
                   $soutez = ""; 
               } else {
                  //upravit - veteráni
                  $soutez = "ok";
               }
            } else {
                $hlaska .= '<span class="success">Blíže nespecifikovaná chyba při určování bližších informací o hasičské soutěži.</span></br>';
            }
        }
Jelikož probíhá kontrola odesílaných dat z formuláře přes javascript (tudíž bez refreshe stránky a s tím, že zadané údaje ve formuláři zůstávají) a s tím, že podle druhu zvolené akce se také mění struktura formuláře a podle toho jestli se rozhodnete nahrávat fotografie, tak se se také mění logika následujících kroků, tak mi nejde do hlavy, kde je zakopaný pes.
Můžete mi tedy prosím někdo říci, proč ve Firefoxu vše funguje správně a v ostatních prohlížečích ne? Jsou zde nějaké známé rozdíly mezi Firefoxem a ostatními prohlížeči co se týče zpracování javascriptu (ajaxu) a PHP?
Předem děkuji.



juriad
Profil
V Chromu se odesílá toto:
nazev_akce=&druh_akce=soutez&prepinac_foto=-+Vyber+jednu+mo%C5%BEnost+-&prepinac_video=-+Vyber+jednu+mo%C5%BEnost+-&datum=&zasah_popis=&popis=&url_of_video1=&url_of_video2=&url_of_video3=&url_of_video4=&pokracovat=ne

Ve Firefoxu toto:
nazev_akce=&druh_akce=soutez&prepinac_foto=-+Vyber+jednu+mo%C5%BEnost+-&prepinac_video=-+Vyber+jednu+mo%C5%BEnost+-&datum=&druh_souteze=Primator+liga&cas_muzi=10%3A00+(%3Cb%3E1.%3C%2Fb%3E+z+20)&cas_zeny=+-+&cas_deti=+-+&zasah_popis=&popis=&url_of_video1=&url_of_video2=&url_of_video3=&url_of_video4=&pokracovat=ne



Ty totiž v JS odesíláš dva požadavky na server. První je OK - vrací kus formuláře a ten druhý toho vrací mnohem více včetně tohoto:
<input type="hidden" id="cas_muzi" name="cas_muzi" value="">
Takže po změně na soutěž ve formuláři (ehm, kdyby nějaký existoval) existují dvě pole s názvem cas_muzi. A každý prohlížeč si prostě vybere jiné - Chromu se více líbí to později přidané, které je typu hidden a má prázdnou hodnotu.


Proč vůbec potřebuješ volat serverový skript pro změnu typu akce?
Můžeš si přece vygenerovat úplný formulář, a pak jen zobrazovat a skrývat políčka. Ušetříš si tím spoustu nervů a celkově to bude spolehlivější. A také formulářová pole patří do <form>, který tam nikde nevidím.
vazo
Profil
Díky za reakci... jdu prozkoumat, proč se odesílají jen některá formulářová políčka respektive proč se odesílají dvakrát.
Co se týče toho skrývání, tak nad tím také zkusím zapřemýšlet, ale bojím se, že když se do toho pustím, tak že budu muset nakonec stejnak předělat vše. :-/ Problém je spíš v tom, že potřebuji min tři rozdílná tlačítka na odeslání formuláře, které vykonají rozdílné akce a přenášejí rozdílné informace a nejsem si zcela jist, jestli by to skrývání políček vyřešilo, zkusím popátrat. Btw je tady ještě také rozdíl, zdali vybereš, že chceš nahrávat fotky či nikoliv, pak totiž jsi přesměrován na jinou stránku, kde vybíráš fotky a samozřejmě všechny vyplnění údaje z formuláře musíš mít stále k dispozici...
Ale díky, rozhodně jsi mě posunul dále v bádání.
juriad
Profil
vazo:
Můžeš klidně mít jeden jediný formulář s jedním odesílacím tlačítkem. Nemusíš přece pokaždé data odesílat jinému skriptu. Můžeš vytvořit jeden skript, který přijme každý požadavek a následně zavolá příslušnou funkci podle jeho typu.
Je přece triviální podmínka na serveru:
if ($budeChtitPridatFotky) {
  header('Location: pridanifotek.php');
} else {
  header('Location: index.php');
}
vazo
Profil
Jo díky, taky nad tím přemýšlím, že by to možná šlo udělat tímhle způsobem... No hurá do úprav.

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: