2013-09-25 44 views
0

我有一个小函数,它从我的html页面抓取输入值,并通过php函数将它们显示在列表中。我的目标是,如果一个字段留空,PHP脚本不会回显任何内容,以便完全跳过该实例。这可能是更好的向您展示的不仅仅是说说当然:如果输入为空,则隐藏段落

HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> 
<title>Untitled 1</title> 
</head> 

<body> 

<form method="POST" action="test3.php" name="form"> 

<p>Please enter your name:</p> 
<input type="text" name="1"></input> 
<br /> 

<input type="text" name="2"></input> 
<br /> 

<input type="text" name="3"></input> 
<br /> 

<input type="text" name="4"></input> 
<br /> 

<input type="text" name="5"></input> 
<br /> 
<input type="submit" value="Submit" name="subButton" tabindex="50"></input> 


</form> 

</body> 

</html> 

PHP

function callNames(){ 
    $body; 
    for($name = 1; $name <= 6; $name++){ 
     if($name <= 5){ 
     echo "Your name is " . $_POST[$name] . ".<br />"; 


} 

elseif($name =?){ 
    ?; 
    } 

else { 
    echo "Your out of names!"; 
    } 
}; 
} 

callNames(); 

我离开ELSEIF功能空白,我以为是我的解决方案会去。换句话说,如果你为第3场的所有内容命名,它只会回显“你的名字”4次,但不会在原来的地方留下额外的休息时间。我不会使用elseif来解决这个问题吗?

+1

字段名称变量不能以数字开头,只是你知道的。 –

+0

@MrD和/或'if(empty($ _ POST ['field_name'])){' –

+1

注意:“您的名字不存在!应该是“你没有名字!” –

回答

-1

您是否尝试过加入,以查找_POST $ [$名称] length> 0或寻找$_POST[$name] != '';

function callNames(){ 
    $body; 
    for($name = 1; $name <= 6; $name++){ 
     if($name <= 5){ 
     if ($_POST[$name] != '') { 
      echo "Your name is " . $_POST[$name] . ".<br />"; 
     } 
} 
elseif($name =?){ 
    ?; 
    } 
else { 
    echo "Your out of names!"; 
    } 
}; 
} 
callNames(); 

你甚至可以&&

合并在一两个条件的条件
+0

if($ _ POST [$ name]!=''对我很好,但是我不得不用你的名字来代替Else代码,我首先不需要它,谢谢! – Meehee

+0

不客气:)确保代码可能会得到改进,我只是将代码复制粘贴到变体中,以便更容易地发现变化:) – versvs

-1
function callNames(){ 

if ($_POST['name'] != ""){ 

echo "Your name is " . $_POST[$name] . ".<br />"; 

} 

elseif($_POST['name'] == "?"){ 

    echo "?"; 

    } 

else { 

    echo "Your out of names!"; 

    } 

} 
+0

如果没有的话请详细解释,我不明白你想要什么。 – Jad

0

首先,正如Fred -ii在评论中指出的那样,PHP中的字段名称不能以数字开头,但是如果他们能在这里如何做到这一点:

function callNames(){ 
    $body; 
    for($name = 1; $name < 6; $name++){ 
     if(isset($_POST[$name])){ 
      echo "Your name is " . $_POST[$name] . ".<br />"; 
     } 
    } 
    echo 'You are out of names!'; 
} 

但是,这里假定帖子变量顺序上升,直到没有更多的名字。

如果你解释这是为了什么,也许有人可以提供一个更好的方法来解决所有问题。

P.s身体变量似乎未使用?

+0

你是什么意思我不能使用以数字开头的字段名称?该代码运行得很好,从我的现场,所以我没有看到问题是什么。如果这会造成麻烦,我想立即解决这个问题! – Meehee

+0

@Meehee我建议你使用更具描述性的'name',它定义了$ _POST变量将存储的更好的信息类型:) – versvs