PHP如果使用isset:否则部分不起作用

时间:2012-08-09 11:01:07

标签: php if-statement isset

PHP部分在这里所以当我发布它时,其他部分根本不起作用(意思是:我设置的文本刚刚消失),而另一半工作(意思是:我可以分配变量) ,但不能留空)。我一整晚都在苦苦挣扎......请帮忙!     所以这是第二页,如果你需要看一下第一页的代码,请告诉我!

<?php
$lovers = $_POST['lovers'];
$quote = $_POST['quote'];
$color = $_POST['color'];
$font = $_POST['font'];
$imdblink = $_POST['imdblink'];
?>

<?php
if (isset($_POST['lovers']))  
    {
$lovers = $_POST['lovers'];
    }else{
        echo "P & M";
     }

if (isset($_POST['quote']))  
     {
        $quote = $_POST['quote'];
     }else{
        echo "I love you.";
     }

  if (isset($_POST['color']))  
     {
        $color = $_POST['color'];
     }else{
        echo "yellow";
     }

  if (isset($_POST['font']))  
     {
        $font = $_POST['font'];
     }else{
        echo "Futura";
     }

  if (isset($_POST['imdblink']))  
     {
        $imdblink = $_POST['imdblink'];
     }else{
        echo "http://www.imdb.com/";
     }
?>

以下是HTML部分:这里有什么问题吗?请帮忙!

<div class="artGroup slide">
  <div class="artwork"> <img src="../_images/M&P.png">
    <div class="detail">
      <div class="movie01c" style="font-family: <?php echo "{$font}"; ?>; font-size: 20px; color: <?php echo "{$color}";?>;">
     <?php echo "{$quote}";?>
      </div>
      <div class="movie01t"><a href="<?php echo "{$imdblink}";?>">
      <?php echo "{$lovers}";?>
      </a></div>
    </div>
  </div>
</div>

9 个答案:

答案 0 :(得分:5)

不使用echo,而是在else部分使用变量赋值。

if (isset($_POST['lovers'])) {
    $lovers = $_POST['lovers'];
}else{
    $lovers = "P & M";
}

答案 1 :(得分:4)

isset()告诉您变量是否存在。如果你有一个表单(你没有显示html),并且有人将该字段留空,则该字段存在但是为空。提交表单后,表单元素无法存在,因此isset()永远不会返回FALSE。所以你想使用!empty()而不是isset()。

答案 2 :(得分:1)

你的陈述应该像......

if (isset($_POST['lovers']) && ($_POST['lovers'] != ''))
{
    $lovers = $_POST['lovers'];
}
else
{
    $lovers = "P & M";
}

答案 3 :(得分:1)

三元运算符会让它变得更加清晰。

例如:

$imdblink = ((isset($_POST['imdblink'])) ? ($_POST['imdblink']) : ('http://www.imdb.com/'));

此外,您应该定义默认值,并使用变量变量。 (这里是一个不使用define的例子)

$vars = array('imdblink' => 'http://www.imdb.com/');
foreach ($vars as $varName => $defaultVal)
  $$varName = ((isset($_POST[$varName])) ? ($_POST[$varName]) : ($defaultVal));

答案 4 :(得分:0)

你不想回应,你想要分配它,然后你将在其他PHP脚本中打印它。

我认为你试图设置默认值,如果它没有出现在$ _POST数组中。试试

$color = isset($_POST['color']) ? $_POST['color'] : 'yellow';

如果您从不想要空白颜色,请使用

$color = !empty($_POST['color']) ? $_POST['color'] : 'yellow';

答案 5 :(得分:0)

这应该有效

<?php
$lovers = isset($_POST['lovers']) ? $_POST['lovers'] : "P & M" ;
$quote = isset($_POST['quote'])? $_POST['quote'] : "I Love You";
$color = isset($_POST['color'])? $_POST['color'] : "yellow";
$font = isset($_POST['font']) ? $_POST['font'] : "Futura";
$imdblink = isset($_POST['imdblink'])? $_POST['imdblink']: "http://www.imdb.com/";
?>

如果您想确保该字段不是空的话,您可以将isset替换为!empty

答案 6 :(得分:0)

你所有的$_post函数都可能有用,因为它不会成为其他部分。

答案 7 :(得分:0)

仅当未设置变量或将其设置为isset时,

false才会返回null。当变量为true(空字符串)时,它将返回'',这将是在第一页中该字段中未输入任何值时获得的值。

您需要使用empty才能正常工作,这将返回true未设置和清空的线索。对于非空值,它返回false。您需要在!(非运算符)前面加上它才能在此处使用它。

您正在使用if中的变量分配和echo中的else。我认为这就是问题的原因。将echo更改为分配。

if (!empty($_POST['lovers']))  
{
    $lovers = $_POST['lovers'];
}else{
    $lovers = "P & M";
}

不要忘记!

答案 8 :(得分:0)

这是一个想法。首先声明变量和值。如果$_POST['lovers']不是null,则更改变量值:

$lovers = "P & M";
if (isset($_POST['lovers']))
{
    $lovers = $_POST['lovers'];
}
echo $lovers;