Diskuze: Submit

PHP PHP Submit American English version English version

Aktivity (1)
Avatar
John Ronald Reuel Tolkien:19. května 17:03

Zdravím,
chtěl bych se zeptat zdali je možné, aby se při odeslání dat ze stránky (při stisknutí submitu) nesmazala všechna vyplněná pole a zašrtnuté radiobuttony.
Děkuji za odpověď.

 
Odpovědět 19. května 17:03
Avatar
Lukáš
Redaktor
Avatar
 
Nahoru Odpovědět  ±0 19. května 17:15
Avatar
Matěj Strnad:19. května 17:16

Nevím jestli se tě dobře pochopil, tak máš nějaký formulář a kdyžzmáčknneš submit a chces to udělat znovu tak to musíš vyplnit zas... Šlo by to udělat tak že by si hodnoty uložil do DB s nějakým klíčem který by si náhodně vygneroval, ten klíč by si uložil do cookie a pak až by chtěl uživatel vyplnit formulář tak by si se podívaldo cookie a vyhledal hodnoty v DB a pomocí PHP by si je vyplnil. :)

Nahoru Odpovědět  -2 19. května 17:16
Ty vaše internety!
Avatar
Odpovídá na Matěj Strnad
Matěj Strnad:19. května 17:52

Co sem napsal špatně že mně tak hodnotíte? :)

Nahoru Odpovědět 19. května 17:52
Ty vaše internety!
Avatar

Člen
Avatar
:19. května 17:59
$priklad = $_POST['priklad'];
<input value="<?=$priklad?>"/>
 
Nahoru Odpovědět  +3 19. května 17:59
Avatar
Odpovídá na
Matěj Strnad:19. května 18:02
$priklad = $_POST['priklad'];<input value="<?=$priklad?>"/>

To by šlo udělat jen kdyby to byl stejný soubor :)

Nahoru Odpovědět  +1 19. května 18:02
Ty vaše internety!
Avatar
Matěj Strnad:19. května 18:12

A já se za tam to omlovám, pokud by to byl jiný soubor tak byt šlo takto:
Zpracovávací soubor:

$priklad = $_POST['priklad'];
header("Location: ./odeslani.php?priklad=$priklad");

Folmulář:

$priklad = $_Get['priklad'];
<input value="<php echo $priklad ?>">

Omlovám se za možné chyby psal sem to z hlavy :)

Nahoru Odpovědět  -2 19. května 18:12
Ty vaše internety!
Avatar
John Ronald Reuel Tolkien:19. května 18:55

Děkuji za rady, ale spíše bych to potřeboval na ty radiobuttony a select s optionama.

 
Nahoru Odpovědět 19. května 18:55
Avatar
Odpovídá na John Ronald Reuel Tolkien
Matěj Strnad:19. května 19:09

Tak to ani já nevim :-)

Nahoru Odpovědět  -1 19. května 19:09
Ty vaše internety!
Avatar
Odpovídá na Lukáš
Andy Scheuchzer:19. května 19:20

Lukáš se tváří, že ví. Tak proč to nenapíše? :-)

Nahoru Odpovědět 19. května 19:20
Od ASM úroveň jazyků pouze klesá…
Avatar
John Ronald Reuel Tolkien:19. května 19:24

Nevadí, ale mám ještě další dotaz. Mám stránku, na které se zobrazují data z databáze. Je tam i pár selectů a radiobuttonů, které určují jak data seřadit. Nakonec je tam <input type="submit">, který to všechno vyhodnotí a zobrazí data. To mi funguje, až na to že když spustím stránku poprvé (otevřu znovu prohlížeč) žádná data se nezobrazí. Vím, čeká to na zmáčnutí toho submitu. Šlo by to nějak udělat aby se data zobrazila hned po načtení stránky ?

 
Nahoru Odpovědět 19. května 19:24
Avatar

Člen
Avatar
Odpovídá na Andy Scheuchzer
:19. května 19:25

Ty se tváříš, že víš, tak proč to nenapíšeš? :)

 
Nahoru Odpovědět 19. května 19:25
Avatar
Odpovídá na
Andy Scheuchzer:19. května 19:45

Nemyslím tebe, myslím toho s diakritikou, však se podívej, na koho to byla odpověď. :-) Já nic nevím. :-)

Editováno 19. května 19:47
Nahoru Odpovědět 19. května 19:45
Od ASM úroveň jazyků pouze klesá…
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Matěj Strnad
Petr Čech:19. května 23:41

To samozřejmě není pravda, je úplně jedno, kde uživatel přistane, jen je třeba, aby se někde v procesu zavolal ten skript - aby se zachovalo

John Ronald Reuel Tolkien Něco podobného se dá pochopitelně udělat i pro radio buttony, selecty a vlastně cokoliv. Možná by se ti líbila knihovna Nette Forms - normálně se používá jako součást Nette frameworku, ale dá se použít i samostatně.
Další věc je, že zjevně nevíš, jak funguje odesílání formulářů a komunikace se serverem obecně - Víš vůbec, proč funguje to zachování hodnot?

Tohle:

<input value="<?= $_POST['priklad'] ?>">

funguje tak, že v superglobálním poli $_POST jsou hodnoty odeslané formulářem metodou POST, takže ty vezmeš hodnotu odeslanou tím formulářem a zobrazíš ji zpět. Když načteš stránku poprvé, formulář pochopitelně odeslaný není, proto je to prázdné - mimochodem bys to měl mít celé zaplněné chybami. To znamená, že musíš definovat alternativní zdroj dat - v tvém případě z databáze. Takže by to mohlo vypadat nějak takto:

if(isset($_POST['input_a'],$_POST['input_b'])){
        $formValues = $_POST; // všechny hodnoty jsou odeslané, zobrazíme je znovu
} else {
        // hodnoty nebyly odeslány, proto zobrazíme výchozí data z databáze
        $defaults = getDefaultData(); // vrátí pole z databáze [key => value]
        $formValues = $defaults;
}

...

<input name="input_a" value="<?= $formValues['input_a'] ?>">
<input name="input_b" value="<?= $formValues['input_b'] ?>">
Akceptované řešení
+20 Zkušeností
Řešení problému
Nahoru Odpovědět  +1 19. května 23:41
the cake is a lie
Avatar
Odpovídá na Petr Čech
John Ronald Reuel Tolkien:20. května 10:08

Trošku jsem předělal tu Vaši podmínku s tím ISSET a funguje to. Děkuji :D

Editováno 20. května 10:09
 
Nahoru Odpovědět 20. května 10:08
Avatar
Šimon Rataj
Člen
Avatar
 
Nahoru Odpovědět  -1 20. května 10:42
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 16 zpráv z 16.