reload stránky při odesílání dat z formuláře ?

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
Banana
Začátečník
Začátečník
Registrován: 17. led 2004

reload stránky při odesílání dat z formuláře ?

Příspěvek od Banana »

mam tady formular:
<form method="post" action="edit.php"> ... > </form>

do něj se načítají data, já je změním a příkazem Edit odešlu, data se updatují ale v tom formuláři zůstanou ta původní takže musím použít refresh abych tam viděl ty nové.Potřebuju aby se ty nové data načetly automaticky po odesláni dat (po kliknutí na Edit)

tohle nefunguje :(
<script>
function rel_1()
{self.location.reload();}
</script>
<input type="submit" value="Edit" onClick="rel_1()">
Tom KQT
Začátečník
Začátečník
Registrován: 13. zář 2004
Kontaktovat uživatele:

Příspěvek od Tom KQT »

Není mi jasné, jestli ten formulář je obsažen přímo v souboru edit.php nebo edit.php je skript pouze na obsluhu dat. Pokud je edit.php samostatný soubor, pak se stejně po odeslání formuláře zobrazí výstup souboru edit.php a ne původní formulář. Takže nevím kde ti zůstávají původní hodnoty.
Banana
Začátečník
Začátečník
Registrován: 17. led 2004

Příspěvek od Banana »

jeto samostatny soubor edit.php a pokud nepouziju refresh tak tam zustanou ty hodnoty ktere tam byly uz pred editaci
Tom KQT
Začátečník
Začátečník
Registrován: 13. zář 2004
Kontaktovat uživatele:

Příspěvek od Tom KQT »

Kde zůstanou původní hodnoty? Vždyť když klikneš na tlačítko Edit, tak se spustí skritp edit.php který provede změny a jeho výstup se zobrazí v aktuálním okně, čímž nahraní původní obsah okna, takže tam žádné hodnoty nezůstanou (ani původní ani žádné jiné).
To co potřebuješ udělat skoro určitě půjde a já ti s tím možná poradím, ale zatím pořád nechápu tvůj problém.....
Banana
Začátečník
Začátečník
Registrován: 17. led 2004

Příspěvek od Banana »

už chápu jak to chápeš :wink:

jenže je to jinak než myslíš:
v souboru index.php mám data XXX.rozhodnu se že chci tyto data změnit na XXL.tak kliknu v souboru index.php na tlačítko E které je odkazem na soubor edit.php.V souboru edit.php je input ve kterém se mi načte XXX.Já to v něm změním na XXL a (ted to hlavni) prikazem Edit se spusti prikaz pro update MySQL tak že se změní data XXX na XXL.Tato změna se !provede!, jenže v souboru edit.php zůstanou data XXX dokud nedám refresh, teprve pak semi zobrazí již změněná data XXL.

není to jen v tomto případě jeto i ve funkci Delete (tu mám řešenou jednodušeji):
<a href=\"3seznam.php?action=delete&id= ... lose(); ?>

a vůbec celkově mi nefunguje reload mezi stránkami.. :(
Tom KQT
Začátečník
Začátečník
Registrován: 13. zář 2004
Kontaktovat uživatele:

Příspěvek od Tom KQT »

Chápu to tak, že soubor edit.php zobrazí data v textovém poli formuláře, takže umožní jejich změnu a poté se stiskem tlačítka pro odeslání formuláře tyto změny provedou, o což se zase postará soubor edit.php. Je to správně? Pokud ano, tak je potřeba podívat se na toto:

V souboru edit.php je část sloužící k načtení dat z databáze a jejich zobrazení ve formuláři a dále je tam část, která provádní požadovanou změnu v databázi (tato část se spustí pouze pokud již je požadavek na editaci, což se asi zajišťuje pomocí dotazu v url - např. něco jako edit.php?id=10).
Je potřeba mít v souboru všechny části ve správném pořadí:
1. část která provádí změnu v databázi (editace)
2. část která načítá data pro jejich zobrazení
3. část která data zobrazuje ve formuláři.

Tak je zajištěno, že data se nejdříve modifikují a až pak se znovu načítají a zobrazují ve formuláři. Pokud je soubor edit.php vyvolán přímo z index.php, tak se první část neprovede a pouze se načtou a zobrazí data.

Jinak ještě rada - u všech souborů php které zobrazují nějaká data z databáze, která se mohou měnit, je potřeba zajistit, aby se stránka neukládala u uživatele do vyrovnávací paměti, ale aby se vždy načítala ze serveru.
Stačí do souboru vložit na začátek následující třířádkový php kód (zkopíroval jsem to i s hlavičkou html, aby bylo zřejmé, kam řádky umístit):

Kód: Vybrat vše

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<? 
  Header("Pragma: no-cache"); 
  Header("Cache-Control: no-cache"); 
  Header("Expires: ".GMDate("D, d M Y H:i:s")." GMT");  
?>
<html>
<head>
 ...... tady je vlastní stránka ........
Jo a pokud to co jsem napsal nepomůže, tak ještě napiš, pořád ještě mám v rukávu jeden trumf 8-)
Banana
Začátečník
Začátečník
Registrován: 17. led 2004

Příspěvek od Banana »

ano je to tak...
ale žádná z rad nefunguje mám to takhle (teda složitěj to je jen příklad):

<?
//edit fce
while{
?>
<input>
<?
}
?>

<?
//update fce
blabla
?>
zkusil jsem to i prehodit ale nic nepomohlo

když tam přidám header tak semi ty editovaná data mažou!a ukládají se prázdné kolonky. :(
Odpovědět

Zpět na „Programování a web“