Autor Zpráva
alan
Profil *
ahoj,potřebuju poradit..
mám formulář,kterej udaje pošle do zpracuj.php,
všechno funguje,ale potřeboval bych tam dát,že když nezaškrtne políčko souhlasím s pravidly...tak ho to nepustí dál,a otevře se mu nové okno s tímto problémem,že to nezaškrtl...
a pak mám další problém...když chci např aby byl povinně vyplněn např pole jméno..a nevyplního,tak aby se mu to okno s tím problémem taky oběvilo..
nevíte jak by se to dalo?...
nějak přes proměnou?nevím toto budu dělat po 1:) tak prosím o radu
Tori
Profil
Rámcově asi takto, formulář i jeho zpracování jsou ve stejném skriptu. Formulář můžete třeba includovat jako samostatný soubor, ale vždy by mělo být nejdříve zpracování údajú a pak zobrazení formuláře.

<?php

// Pokud byl formulář vyplněn, zpracuj odeslané údaje.
if (isset($_POST['submit']))  {  
  // (buď si pojmenujte odesílací tlačítko, nebo použijte jméno jiného vstupu, který bude vždy zadaný)
  
  // validace povinných polí
  $chyba = ''; 
  if (!isset($_POST['souhlas']))
    $chyba .= "Bez souhlasu s pravidly vás dál nepustíme. <br>";
  if (empty($_POST['jmeno'])) 
    $chyba .= "Nevyplnil/a jste povinné pole (jméno).";
    
  // pokud všechno ok, pošli uživatele na další stránku
  if (!$chyba)  {
    // .... nějaké uložení údajů z formuláře apod. Prostě to co dřív dělal soubor zpracuj.php.
    
    header("Location: http://neco.cz/dalsi_stranka");
    exit;
  }
  
}

// Buď je to první zobrazení stránky, nebo uživatel udělal chybu
// V případě opravy se zobrazí dříve zadané údaje, ať kvůli jedné chybě nemusí psát všechno znova

if (!isset($_POST['submit']) || $chyba) {
  echo <<<EOT
  
<p>$chyba</p>

<form action="" method="post">
Jméno: <input type="text" name="jmeno" value="{$_POST['jmeno']}">
<p><input type="checkbox" name="souhlas"> Souhlasím s pravidly</p>
<input type="submit" value="odeslat" name="submit">
</form>

EOT;

}
?>
alan
Profil *
Tori:
díky:) a ještě něco,do form mám dát normálně action jako zpracuj.php?nebo to odešle už rovnou ten
alan
Profil *
Tori:
jo,a chci se zeptat,funguje to i do tabulek?já jen že mám tabulku,a v tom pole jméno,a souhlasím s pravidly,a nechce mě to fungovat...prostě mě ten text s tou chybou neukáže
Tori
Profil
Pokud tam je action="", odešle se to na aktuální stránku. Použila jsem to kvůli tomu, že zpracování i formulář jsem dala do jednoho skriptu.
Když budete mít zpracování odděleně, musíte v případě chyby / nezadaných údajů přesměrovávat zpět na formulář. A pak buď nechat uživatele vyplnit znovu celý form, nebo posílat [dříve zadané] údaje na předvyplnění formu v url. Oboje mi připadá jako zbytečná práce navíc.

header() přesměruje uživatele na nějakou další stránku v případě, že správně vyplnil formulář.

mám tabulku,a v tom pole jméno,a souhlasím s pravidly,a nechce mě to fungovat
Prosím o ukázku.
alan
Profil *
už mě to jde,zapoměl jsem tam na konci dát apostrov.. :D taka mala chyba
alan
Profil *
jinač děkuji za radu:))
alan
Profil *
jo a ještě se chci zeptat,jak udělám aby do pole šlo psát jen čísla?
alan
Profil *
jo,a když už píšu,jak jsi napsala ten skript,tak když dám odeslat na ten zpracuj.php,tak přes echo mě to např jmeno nenapíše,jako kdyby si to nepamatoval...nevíš proč?jestly to nebude tím že ve form to neposílám dál..
Tori
Profil
alan:
jak udělám aby do pole šlo psát jen čísla?
nějakým javascriptem. Přes php se dají jedině vytáhnout čísla ze zadané hodnoty (třeba regulárem), ale aby se tam vůbec nedaly napsat, to se musí řešit u klienta. Ale je potřeba počítat i s vypnutým JS. Osobně bych asi JS nepoužila, ale do formuláře napsala "Sem pište jen čísla!" a v php odstranila všechny nečíselné znaky.

když dám odeslat na ten zpracuj.php,tak přes echo mě to např jmeno nenapíše,jako kdyby si to nepamatoval...nevíš proč?
ukažte ten zpracuj.php a možná budu vědět.
alan
Profil *
je to klasický echo,
<?php
echo $_POST["jmeno"]
?>
Tori
Profil
to je divné.. chápu správně, že ve formuláři je
<form action="zpracuj.php" method="post">
? .. anebo na ten zpracuj.php přesměrováváte funkcí header() ?

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:

0