Portál AbcLinuxu, 4. prosince 2025 10:20
(!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í
, zkuste si třeba:
<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 'On');
echo "Bez isset():
\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";
Promněná je false pokud má hodnotu: NULL, '', false, 0, 0.0, '0', array() (prázdné pole), takže si zkuste následující:
<?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.