Autor Zpráva
Grogg
Profil *
Zdravim, potřebuji poradit s knihou hostů.
Odešlu zprávu, nová zpráva se zobrazí, ale jakmile dám aktualizovat, tak mě prohlížeč upozorňuje, že jsou na stránce zachována postdata (když to odkliknu OK, tak se zpráva odešle znovu). Nevíte jak po odeslání zprávy ty postdata smazat.
Díky
Dero
Profil
Vložíš příspěvek a před jakýmkoliv posláním dat prohlížeči (fce echo, začátek stránky atp.) použije fci header k přesměrování na sebe sama, ovšem bez jakýchkoliv doprovodných dat.

<?php

// zapises data
if ([zapsano]) header("Location: guestbook.php");

// zbytek skriptu/stranky
koudi
Profil
Tak po uložení dat pužij funkci header pro přesměrování.
Wan-To
Profil *
Docela dobře se to dá obejít tak, že se oddělí skripty pro vkládání příspěvků a jejich zobrazování. Formulář se odešle na skript, který zpracuje POST data a vloží příspěvek. Místo toho, aby tenhle skript vygeneroval výstup, pošle hlavičku Location: jméno_skriptu_zobrazení, která prohlížeč přesměruje zpět na knihu návštěv.
Grogg
Profil *
Zkusil jsem to, ale nová zpráva se nezobrazí hned, na stránce se objeví až po opětovné aktualizaci.
nevim jestli jsem to správně napsal, do php moc nevidim:

<?php if ($Zprava!="") header("Location: diskuse.php"); ?> -> tohle jsem vložil na první řádek diskuse.php, je to tak možné zapsat nebo jsem to nepochopil?
Dero
Profil
Grogg: Nejdřív musíš vložit zprávu do databáze/souboru a potom až přesměrovat.
Grogg
Profil *
Bohužel, já už mam na začátku stránky (nesouvisí to s knihou) použitý příkaz echo...
Dero
Profil
Grogg: K jakému účelu?
Grogg
Profil *
Dobrý, děkuji moc za pomoc, už mi došlo, že to můžu vložit až za ten skript, takže se za poslední příspěvek omlouvám a ještě jednou děkuji
Johny_r
Profil *
Můžu se zeptat, kam to teda mám vložit? Pořád mi to hlásí, že Cannot modify header information - headers already sent by...
Stránka vypadá asi takto

?
skript pro zapsání formulářových dat do databáze
?

html formulář

?
skript pro vypsáni obsahu databáze do stránky
?

takže kam s tím: header('Location: guestbook.php');

Díky moc.
Hugo
Profil
Johny_r

Musíš to vložit ns konec souboru, který uloží požadavek. Ale před odesláním hlavičky nesmí odejít ŽÁDNÝ výstup.

zpracuj-data.php
?
skript pro zapsání formulářových dat do databáze
Header ('Location: guestbook.php');
?

guestbook.php
?
skript pro vypsáni obsahu databáze do stránky
?
Johny_r
Profil *
2 Hugo:
Díky, pochopil jsem a chodí mi to. Stojím teď ale před jiným problémem. Chci zkontrolovat, jestli byla vyplněna všechna pole formuláře a když ne, tak aby skript napsal upozornění nad formulář. Nemůžu ale přijít na to, kam dát ten kontrolovací skript. Představuju si to nějako jako:
?
if (!empty ($promenna1) & !empty ($promenna2))
{
// zápis dat do databáze
header ('location: zpátky na stránku s fórem');
}
else {
echo ('Vyplň celej formulář');
}
?

Jde to nějak takhle nebo jsem vedle a musím na to jinak? A pokud je to ok, tak kam to umístit, aby to chodilo.
Díky za rady...
Niel
Profil *
skus takto
if (($promenna1!=="") and ($promenna2!==""))
{
}

takto nejako by to malo chodit
Martin Kuželka
Profil
gajdynator: dík, že nám přiděláváš práci. V tomhle threadu jsem kromě několika (asi 5) spamů musel mazat ještě příspěvky po tobě.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0