Portál AbcLinuxu, 2. srpna 2025 07:48
(!isset($_POST['aaa']) OR ($_POST['aaa']==3) ? 'checked' : '')tohle funguje
(!isset($_POST['aaa']) ? 'checked' : '')tohle taky
($_POST['aaa']==3 ? 'checked' : '')ale spolu to vrátí 1 Díky za pomoc
Řešení dotazu:
(!isset($_POST['aaa']) OR ($_POST['aaa']==3)) ? 'checked' : ''
$i=1; $value = ($i==1) ? 'je to true' : 'je to false'; echo "$value\n"; $i=2; $value = ($i==1) ? 'je to true' : 'je to false'; echo "$value\n";ale klidně(ne že by to bych to doporučoval):
$value=$i==1?'je to true':'je to false';
$value = ($i==1) ? 'je to true' : 'je to false';A pokud tedy výsledek není stejny coz není, tak pak musí být něco jinak, ne? A ja se ptam, co to je? dik
$i
? Ta je podle tebe též v obou případech stejná? A je tedy 1, nebo 2?
$value = ($i==1) ? 'je to true' : 'je to false';je s tímto totožný:
if($i==1) $value = 'je to true'; else $value = 'je to false';Na rozdílné výsledky to dávalo proto, že je tam
$i=1;
a pak $i=2;
$i = 1; $j = 2; $value = ($i==1) ? ( ($j==1) ? 'je to true' : 'je to true, ale J ne' ) : 'je to false';Závorky tam nemusí být, ale rada zní „nevíš-li závorkuj“ a druhá „závorky napomáhají čitelností kódu, ale s rozumem“ - nevím koho to cituji, ale s mojí hlavy to není :)
<input name="aaa" type="radio" value="1" <?php echo (isset($_POST['aaa'])&&((int)$_POST['aaa'])==1) ? 'checked="checked"' : '';?> /> <input name="aaa" type="radio" value="2" <?php echo (isset($_POST['aaa'])&&((int)$_POST['aaa'])==2) ? 'checked="checked"' : '';?> /> <input name="aaa" type="radio" value="3" <?php echo (isset($_POST['aaa'])&&((int)$_POST['aaa'])==3) ? 'checked="checked"' : '';?> />Pokud to budete mít ve formuláři, tak nebude vybrán žádný radio prvek. Když jej odešlete (třeba) sám na sebe, tak si to udrží vybranou volbu.
... left && logical left || logical left ? : ternary right = += -= *= /= .= %= &= |= ^= <<= >>= => assignment left and logical left xor logical left or logical ...Tedy nejprve se provede "? :" az potom "OR"!
isset()
je často na zastřelení <?php error_reporting(E_ALL | E_STRICT); ini_set('display_errors', 'On'); echo "Bez isset():Promněná je false pokud má hodnotu: NULL, '', false, 0, 0.0, '0', array() (prázdné pole), takže si zkuste následující:
\n"; if($_POST['aaa'] == "x") echo '($_POST["aaa"] == "x")'; else echo '($_POST["aaa"] != "x") nebo neexistuje'; echo "\n"; echo "S isset():
\n"; if((isset($_POST['aaa']))&&($_POST['aaa'] == "x")) echo '($_POST["aaa"] == "x")'; else echo '($_POST["aaa"] != "x") nebo neexistuje'; echo "\n";
<?php error_reporting(E_ALL | E_STRICT); ini_set('display_errors', 'On'); //pokud je treba date_default_timezone_set('Europe/Prague'); echo "<pre>Bez isset():\n"; if($_POST['aaa'] == 1) echo '($_POST["aaa"] == 1)'; else echo '($_POST["aaa"] != 1) nebo neexistuje'; echo "\n"; echo "S isset():\n"; if(isset($_POST['aaa'])) if($_POST['aaa'] == 1) echo '($_POST["aaa"] == 1)'; else echo '($_POST["aaa"] != 1)'; else echo '$_POST["aaa"] neexistuje'; echo "</pre><br />\n"; ?> <form method="post"> <input name="aaa" type="radio" value="0" <?php echo ($_POST['aaa']==0)?'checked="checked"':'';?>/> <input name="aaa" type="radio" value="1" <?php echo ($_POST['aaa']==1)?'checked="checked"':'';?>/> <input name="aaa" type="radio" value="2" <?php echo ($_POST['aaa']==2)?'checked="checked"':'';?>/> <input name="aaa" type="radio" value="3" <?php echo (!$_POST['aaa'] || $_POST['aaa']==3)?'checked="checked"':'';?>/> <input name="aaa" type="radio" value="4" <?php echo ($_POST['aaa']==4)?'checked="checked"':'';?>/> <input name="hbtn[1]" type="submit" /> </form>A podívejte se na zdrojový kód stránky když stránku poprvé zobrazíte bez submitu.
Jinak mi z toho plyne, že se mají zaškrtnout všechny radio boxy (když aaa nebude nic, což snad v praxi nejdezaškrknou všechny checkboxy lze a $_POST['aaa'] nebude existovat při prvním „přímém“ přístupu na stránku.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.