Autor Zpráva
gardener
Profil
Zdravím, chtěl bych se zeptat na jednu drobnost:
Pokud mám po odeslání formu kontrolu např:
if(empty($_POST["nadpis_clanku"]))
{exit("Nebyla vyplněna všechna pole korektně");}  


a jak dostat korektně zpět vyplněné hodnoty do formu, po stisknutí tlačítka zpět v prohlížeči?
Dříve jsem to řešil takto:
<input name="nadpis_clanku" value="<?php  echo $_POST["nadpis_clanku"];  ?>" id="nadpis" type="text" class="textinput" title=""/>

ale to není nejlepší způsob, jelikož pokud není hodnota definována vrací PHP Notice.
Jak by to tedy šlo vyřešit co nejlépe, aniž ych kvůli tomu musel zapisovat sáhodlouhoou podmínku?

Díky za každou radu.
Aesir
Profil
gardener:

Například nějakým helperem, kterému předáte jméno klíče, ten ověří existenci v _POST a buď vrátí hodnotu nebo false.

EDIT: ještě bych mohl dodat, že obvyklou praxí bývá to, že podobný hleper má ještě další, nepovinný parametr a to sice "default" hodnotu, kterou můžete říct, co má se vrátit, pokud není hodnota v _POST definovaná.
gardener
Profil
Bohužel jsem ale na google nenašl podrobné vysvětlení, co helper vlastně je.
tiso
Profil
gardener: preložím ti Aesir-ovo riešenie:
<?php

$default=array(
    'input1' => 'value1',
    'input2' => 'value2',
    'input3' => 'value3'
);
$error='';
if(isset($_POST['submit'])){//mame form, spracujeme ho
    foreach($default as $key => $val){
        $default[$key]=htmlspecialchars($_POST[$key]);//pripadne ine osetrenie pre vypis
    }
    //kontrola fieldov:
    if(empty($_POST['input1'])){
        $error='Nebyla vyplněna všechna pole korektně';
    }
    ...
}
//vypis form:
if(!empty($error)){
    echo '<p class="error">'.$error.'</p>';
    echo '
...
<input type="text" name="input1" value="'.$default['input1'].'">
...
    ';
}
else{
    echo '<p class="success">Formulár bol úspešne odoslaný.</p>';
}
Aesir
Profil
gardener:
Bohužel jsem ale na google nenašl podrobné vysvětlení, co helper vlastně je.
Omlouvám se, tím jsem myslel ve zkratce prostě pomocnou funkci :)

Takže jednoducá a pouze ukázková alternativa k tisovu řešení pomocí univerzální fce:
<?php
function getPost($keyName, $defaultValue=false) {
    if (isset($_POST[$keyName])) {
        return $_POST[$keyName];
    } else {
        return $defaultValue;
    }
}
?>
<form action="" method="post">
  <input type="text" name="test" value="<?php echo getPost('test'); ?>">
  <input type="submit">
</form>

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: