我是PHP初学者,iv一直在尝试创建一个小程序,该小程序从论坛获取输入,然后在提交后我希望将其打印在屏幕上。我以为简单又容易,我一直在尝试并且可疑地似乎对1个文本字段工作正常,当我添加了剩下的2个称为[fam] [user]的文本字段时,我的代码停止将内容返回到屏幕。我也开始收到unindex数组的错误,因此我不得不使用isset来解决此问题,而且,尽管我从未隐式设置析构函数,但是为什么我的代码调用了析构函数。我不知道该怎么问这些问题,因为错误始终没有发生。
-代码不会清除html先前的输入(例如,使用一个文本字段时,假设我输入了[name] john,然后单击提交 显示提交,然后刷新页面,名称仍然是john 显示,为什么析构函数不会从我的名字中清除名字的记忆 提交。
<form class="nameform" action="book.php" method="post">
<input type="text" name="Name" value="1">
<input type="text" name="Fam" value="2">
<input type="text" name="User" value="3">
<input type="button" name="submit" value="Submit">
</form>
private $name; private $familyName; private $userName;
function __construct($names,$familyNames,$userNames)
{
$this->name = $names;
$this->familyName = $familyNames;
$this->userName = $userNames;
}
function getName()
{
return $this->name;
}
function getFamilyName()
{
return $this->familyName;
}
function getUserName()
{
return $this->userName;
}
public function __destruct()
{
echo "destroyed again";
$this->name;
$this->familyName;
$this->userName;
}
}
if(!isset( $_POST["Name"])||!isset($_POST["Fam"])||!isset($_POST["User"]))
{
echo "Please fill in the data";
} else {
$p1 = new Person($_POST["Name"],$_POST["Fam"],$_POST["User"]);
print $p1->getName();
print $p1->getFamilyName();
print $p1->getUserName();
print_r($_POST);
}
// $n = $_POST["Name"];
// $f = $_POST["Fam"];
// $u = $_POST["User"];
// $p1 = new Person($_POST["Name"],$_POST["Fam"],$_POST["User"]);
?>
答案 0 :(得分:0)
代码不显示我的[姓名] [家族] [用户]
您永远不会将它们从消解器中回荡
public function __destruct()
{
echo "destroyed again";
$this->name; //<---- does nothing
$this->familyName;
$this->userName;
}
所以我不确定这应该做什么。您将它们放在底部
print $p1->getName();
print $p1->getFamilyName();
print $p1->getUserName();
但是从destruct方法中得到的唯一一件事是
"destroyed again"
并且您只会看到表单中的所有内容都已设置。提交表单时总是这样,因为类型text
总是与表单一起提交。
这带给我的是,您应该检查empty
而不是那里的isset
if ('POST' === $_SERVER['REQUEST_METHOD']) { //check if POST
if(empty($_POST["Name"])||empty($_POST["Fam"])||empty($_POST["User"])){
echo "Please fill in the data";
} else {
$p1 = new Person($_POST["Name"],$_POST["Fam"],$_POST["User"]);
print $p1->getName();
print $p1->getFamilyName();
print $p1->getUserName();
print_r($_POST);
}
}
请注意,任何虚假都是空白,false
,[]
,''
,0
,'0'
,{{ 1}}等。
我不知道这是否可以解决您所有的问题,但是这些事情可能会产生您所遇到的某些行为。
检查这些内容的另一种更高级的方法是这样的:
null
输出
if ('POST' === $_SERVER['REQUEST_METHOD']) { //check if POST
$post = array_filter( $_POST, function($item){
return strlen($item); //any thing of a length of 0 is removed
});
if(count($post) != count($_POST)){
foreach(array_diff_key( $_POST, $post) as $missing=>$empty) {
echo "Please fill in $missing\n";
}
}else{
$p1 = new Person($_POST["Name"],$_POST["Fam"],$_POST["User"]);
print $p1->getName();
print $p1->getFamilyName();
print $p1->getUserName();
print_r($_POST);
}
}
您可以在线https://plot.ly/pandas/multiple-axes/#simple-secondary-y-axis-with-secondaryy进行测试
干杯!