Avatar
relycanx
Člen
Avatar
relycanx:

Chtěl bych se zeptat, jak docílím toho, aby když třeba ve formuláři nevyplním jméno, tak aby mi to do této stejné lišty (do value), napsalo chybnout zprávu. pomocí $_POST[] se dá z value odesílat, ale já bych chtěl právě do tohoto value přijmout a zapsat :)

 
Odpovědět 3.5.2013 9:51
Avatar
Odpovídá na relycanx
Luboš Běhounek (Satik):

Přes PHP třeba nějak takhle:

<form action="stranka.php" method="POST">
  Jmeno: <input type="text" name="jmeno" />
<?php if (!isset($_POST["jmeno"]) || $_POST["jmeno"]=="") echo "Wie heißt du?"; ?><br />
  <input type="submit" value="Submit" />
</form>

Časem by se to vyplatilo udělat i v JavaScriptu na klientovi, aby měl okamžitou reakci a abys ušetřil "zátěž" serveru.

Editováno 3.5.2013 10:04
Nahoru Odpovědět 3.5.2013 10:03
:)
Avatar
Odpovídá na Luboš Běhounek (Satik)
Luboš Běhounek (Satik):

Nevím, jestli to už jde nějak elegantněji, ale v časech, kdy jsem dělal v PHP se to řešilo většinou nějak takhle :D

Nahoru Odpovědět 3.5.2013 10:07
:)
Avatar
relycanx
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
relycanx:

děkuju, to by taky šlo, to napsat pod lištu, ale přímo do ní to nejde? Mám na mysli třeba tvorbu kalkulačky, tam se taky používá jedna společná, textová lišta a zajímalo by mě, jestli takto funguje i lišta u formuláře :) Nebo pokud ne, tak jaký typ textového pole, by se použil na tvorbu kalkulačky v php? Mám zatím zkušenost jen z formulářem.

 
Nahoru Odpovědět 3.5.2013 10:38
Avatar
Odpovídá na relycanx
Luboš Běhounek (Satik):

Prostě kamkoliv hodíš to echo, tam se to vypíše.

Přijde mi to, že nevíš, jak PHP funguje :)

Při prvním načtení stránky jsou (obvykle) proměnné prázdné, takže na to nějak reaguješ, zobrazíš form apod.
Po kliku na odeslat (submit) se ti ta stránka celá načte znova, s tím, že do POST (nebo GET, podle method) se ti při tom kliku uloží obsahy těch ovládacích prvků, takže zkontroluješ, jestli zadal všechno a form třeba vůbec nevykreslíš, jen nějakou hlášku že registrace proběhla úspěšně apod.

Nahoru Odpovědět 3.5.2013 10:43
:)
Avatar
Odpovídá na relycanx
Luboš Běhounek (Satik):

Můžeš třeba i vyplnit hodnotu těch položek, co uživatel zadal (pokud jich měl na formu víc a nezadal jen jednu věc, tak aby nemusel zadat všechno znova, tak mu tam ty hodnoty už předvyplníš, protože už je máš v $_POST

<input type="text" name="jmeno" value="<?php echo $_POST["jmeno"]; ?>"/>

(samozřejmě by to chtělo ještě ověření, jestli tam nějaká hodnota v $_POST["jmeno"] je)

Nahoru Odpovědět 3.5.2013 10:46
:)
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na relycanx
Petr Nymsa:

Validaci lze využít už i na straně klienta - v HTML a nebo v JS. Každopádně v HTML využij atribut required (http://www.itnetwork.cz/…cesky-manual). Funguje perfektně i ve starších prohlížečích.Va­lidace je jednoduchá. Na inputech typu text musí být njěkaý text, na inputu typu email by měl text odpovídat emailu. Samozřejmě na straně serveru je stejně potřeba ověřit

Nahoru Odpovědět 3.5.2013 10:59
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
relycanx
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
relycanx:

ajo vlastně, vždyť se vlastně celý formulář může hodit do podmínky,nebo třeba jen část z něj :D já mám furt zakódované, že je to prostě jazyk, co je částečně statický, neměnný a že s tím nemůžu nic dělat a ono se vždycky něco najde :D :)

Zirko: Dík za tip :)

Editováno 3.5.2013 12:16
 
Nahoru Odpovědět 3.5.2013 12:15
Avatar
relycanx
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
relycanx:

ok, vzdávám se, budu se muset zeptat ještě na jednu věc :( v tomto tvém kódu se pokaždé vypíše, že uživatel nezadal jméno, i když to okno viděl poprvé.

<form action="stranka.php" method="POST">
  Jmeno: <input type="text" name="jmeno" />
<?php if (!isset($_POST["jmeno"]) || $_POST["jmeno"]=="") echo "Wie heißt du?"; ?><br />
  <input type="submit" value="Submit" />
</form>

Proto jsem se tomu snažil předejít, ale bezúspěšně. I když kliknu na tlačítko, tak hodnota má stále null, takže se žádná hláška nezobrazí, takže se buďto zobrazuje furt, nebo vůbec :/ dalo by se nějak proměnnou deklarovat, třeba jako string, aby to dávalo smysl? Nebo se toto řeší úplně jinak?

<body>

        if(isset($_POST["btn_add_all"]))
        {
              $jmeno = $_POST["txt_add_name"];
              $rasa = $_POST["txt_add_race"];
        }

        //pokud tyto proměnné neexistují, nastav je na null
        if(!isset($jmeno,$rasa))
        {
            $jmeno=$rasa=null;

        }

        ?>


        <div id="vnitrni_ramecek">
          <form action="index.php" method="POST">
            <p>Jméno: <input type="text" name="txt_add_name" /></p>
           <?php
              if((!is_null($jmeno)) && ($jmeno == ""))
               echo "Toto pole nesmí být prázdné";
           ?>
            <p>Rasa:&nbsp&nbsp<input type="text" name="txt_add_race" /><br /> </p>
           <?php
             if((!is_null($rasa)) && ($rasa == ""))
               echo "Toto pole nemůže být prázdné";
           ?>
            <p><input type="submit" name="bt_add_all" value="Přidat mazlíčka" /></p>
          </form>
        </div>
Editováno 3.5.2013 13:43
 
Nahoru Odpovědět 3.5.2013 13:40
Avatar
Odpovídá na relycanx
Luboš Běhounek (Satik):

mas tam preklep - bt_add_all vs btn_add_all

Nahoru Odpovědět 3.5.2013 13:49
:)
Avatar
Odpovídá na relycanx
Luboš Běhounek (Satik):

To je jedna z tech veci, proc nerad pouzivam php, tyhle veci si musis hlidat a spatne se hledaji, asp.net / java (i kdyz mozna i nejake php? - s tim nemam zkusenosti) frameworky tohle resi za tebe a podobne chyby castecne eliminuji.

Editováno 3.5.2013 13:52
Nahoru Odpovědět 3.5.2013 13:51
:)
Avatar
relycanx
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
relycanx:

no doprčic a to mi netbeans všechno opravuje :O všechno až na... na texty v uvozovkách, ach jo :(

 
Nahoru Odpovědět  +1 3.5.2013 13:53
Avatar
relycanx
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
relycanx:

už to funguje perfektně. takže ve formuláři se všechno převádí na string, když už hodnota není null, ale "", že? :)

 
Nahoru Odpovědět 3.5.2013 13:58
Avatar
Odpovídá na relycanx
Luboš Běhounek (Satik):

Nevim, jestli to delaji uplne vsechny prvky, ale asi ano :) .

Nahoru Odpovědět 3.5.2013 14:09
:)
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 14 zpráv z 14.