Avatar
Fikoun
Člen
Avatar
Fikoun:

Chtěl bych se zeptat jakou hodnotu má textarea když ji posílám přes POST. Nic do ní nezadám a odešlu- je NULL nebo Prázdný String. S tím se zeptam jestli mám textarea kontrolovat takto:

if ($_POST['textarea']) {...}
//       nebo takto
         if (isset($_POST['textarea'])) {...}

Zatím začínám s programováním takže možna je neco špatně tak prosím omluvte. Předem děkuji za odpovědi. :)

 
Odpovědět 3.3.2015 22:52
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na Fikoun
Marek Z.:

Textarea je element do formuláře jako například ipnut či select, který identifikuješ attributem name.

Edit: Po odeslání formuláře a nevyplnění textarei je hodnota null. Přečetl jsem si pozorně tvůj příspěvek.

Editováno 3.3.2015 23:03
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 3.3.2015 23:01
Chybami se člověk učí, běžte se učit jinam!
Avatar
Marek Z.
Redaktor
Avatar
Marek Z.:

Ještě doplním, že přítomnost pole můžeš kontrolovat až po odeslání formuláře.

Například máš formulář:

<form method="POST">
 <input type="text" name="nazev">
 <textarea name="popis"></textarea>
 <input type="submit" name="odeslat">
</form>

Takovou kontrolu:

<?php
  if(isset($_POST['nazev'])) AND $_POST['nazev'] != null){
      echo $_POST['nazev'];
  }
?>

Můžeš nahradit tímto:

<?php
  if(isset($_POST['odeslat'])){  //Odeslání formuláře, můžeš také použít if($_POST){}
    if($_POST['nazev'] != null){
        echo $_POST['nazev'];
    }
  }
?>

Po odeslání pole existuje i v případě kdyby bylo odesláno prázdné..

Editováno 3.3.2015 23:20
Nahoru Odpovědět 3.3.2015 23:19
Chybami se člověk učí, běžte se učit jinam!
Avatar
katrincsak
Člen
Avatar
Odpovídá na Marek Z.
katrincsak:

Pakliže nic nenapíšeš do inputu, tak hodnota je null/false .. Takže v tomto případě se ověřuje jestli hodnota je, nebo není. Pakliže nebude, tak podmínka se nesplní.

<?php
if ($_POST['nazev_name']){
        echo "Děkuji ti, že jsi něco napsal.";
}
else
        echo "Nenapsal jsi vůbec nic";
?>

Zde to bude pravdivé vždycky, pakliže dáš odeslat a je jedno, jestli je hodnota null.

<?php
if (isset($_POST['nazev_name'])){
        echo "Děkuji ti, že jsi něco napsal.";
}
else
        echo "Ještě nic jsi nenapsal.";
?>

Formulář:

<form action="#" method="post">
<input type="text" name="nazev_name">
<input type="submit" value="Odeslat">
</form>
Editováno 4.3.2015 23:13
 
Nahoru Odpovědět 4.3.2015 23:11
Avatar
Marek Z.
Redaktor
Avatar
Odpovídá na katrincsak
Marek Z.:

No jasně, ale já jsem poukazoval na to, že ji může kontrolovat logicky až po odeslání formuláře. Čili nemusí kontrolovat už zda pole existuje (isset), ale rovnou ví, že se může ptát zda je délka textu větší než 0, apod..

Když dáš pouze kontrolu na to zda pole něco obsahuje(null/fal­se) bez dotazu toho zda vůbec existuje (isset), tak ti to logicky vyhodí hlášku, že testuješ pole, které vůbec neexistuje, není definované chceš-li.

Neefektivní způsob:

<?php
 if ($_POST['nazev_name']){  //Při neodeslání formuláře ti hodí hlášku, že pole neexistuje
        echo "Děkuji ti, že jsi něco napsal.";
 }
 else
        echo "Nenapsal jsi vůbec nic";
 ?>

Správný způsob:

<?php
 if (isset($_POST['nazev_name']) AND $_POST['nazev_name']){  //Při neodeslání formuláře ti hlášku neukáže
        echo "Děkuji ti, že jsi něco napsal.";
 }
 else
        echo "Nenapsal jsi vůbec nic";
 ?>

Ještě lepší způsob:

<?php
if($_POST){
  if($_POST['nazev_name']){  //isset by ti pustil klidně i null, ale pole by existovalo
      echo 'Pole obsahuje aspoň 1 znak.';
  }
}
 ?>
Nahoru Odpovědět  +1 5.3.2015 0:52
Chybami se člověk učí, běžte se učit jinam!
Avatar
katrincsak
Člen
Avatar
katrincsak:

Já jsem jen uváděl jaký je rozdíl mezi $_POST a isset($_POST).

 
Nahoru Odpovědět 5.3.2015 21:36
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 6 zpráv z 6.