2011-11-05 40 views
0

我目前正在努力提高自己的PHP技能,并且我正在尝试使用下面的示例。第一个网页(这里没有显示)是一个包含一个字段的表单,Name :,然后被提交到另一个页面(如下所示),在这里处理表单。PHP表单语法问题

由于某些原因,PHP代码似乎被验证,但是当我运行测试时,它不会输出任何内容。第一页上字段的输入名称是“名称”,然后将信息发送到下面显示的PHP文件。然后,该文件应该比较一天中的时间,然后根据收集的日期信息输出一条消息。虽然它不工作。

(另外,我知道bgcolor属性已被弃用,我发现的例子在线)

任何帮助,将不胜感激。谢谢,罗布

<!DOCTYPE html public "-//W3C//DTD HTML 4.0 //EN"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Databases and Webprogramming: Assignment 4.1</title> 
</head> 
<body bgcolor="#f9f9f9"> 
<?php 

//import form information 
$name = $_POST['name']; 

$current = date('H'); 

if ($current < 12) 
echo "Good morning, $name!<br />"; 

elseif ($current==12 && $current<=18) 
echo "Good afternoon, $name!<br />"; 

elseif ($current >= "19" && $current <= "24") 
echo "Good evening, $name!<br />"; 
?> 
</body> 
</html> 
+0

你是第四罗布我在3分钟内看到。 :p –

+0

我也只是注意到我在发布的代码中遗留了一个大括号,意外,对不起!我检查过,这不是我的代码不起作用的问题 –

+0

你确定php正在运行吗? (查看源可以显示该文件只是被逐字发送到浏览器。) – Neil

回答

1

正如你所说,你看不到任何输出,错误很可能位于$current附近。否则,你至少应该看到输出字符串的静态部分。在第二种情况下我只看到一个错误。 $current==12应该是$current>=12。根据你的时区,这可以解决这个问题,因为代码不能在13点和18点之间输出任何东西。

如果这样做不能解决问题,可以尝试使用弯曲的格兰杰来避免错误分号处的错误。也许你想在if条件之外打印$current的值并稍微调试代码。

编辑:哦,你不应该使用数字作为字符串(例如"19")。如果你想要保险起见,你可以编写$current = (int) date('H');

编辑#2:我刚刚识别了那几十条评论,并找到了链接。当我输入test并提交表单时,我得到Good evening, test!。请注意,该脚本正在使用服务器的时区。我实际上应该看到一个友好的“早上好”,因为早上凌晨2点在这里。

+0

所有这些帮助都是PHP中非常有用的一课。我仍在努力改变代码以显示正确的消息,但至少现在显示的代码。对不起,一些凌乱的代码和这一个混乱。 –

+0

弗兰克,我听说Javascript必须激活用户的时区,对于脚本插入这个脚本以使其正常工作,你有什么建议?我相信这对社区也是非常有帮助的 –

+0

@RobMyrick我对时区不是很有经验。但Javascript正在客户端运行。所以它将使用用户的PC而不是服务器的时钟。但是,当您将由PHP脚本生成的网站代码(html)发送给用户时,由于Javascript评估,您无法在PHP脚本中使用此值。这可能不是你想要的。 – Frank

1

这是一个link到一个工作的例子。我用文字字符串替换了$_POST['name']。我还测试了我的本地盒子上的index.html的输出,并且它工作正常。但是,您的示例并未使用您提供的链接。

如果它仍然不适合你,那么可能会出现一个php配置问题。

UPDATE

我又去了你的链接,它现在似乎工作。

UPDATE

我更新了我的链接指向取出与逻辑错误的解决方案,例如,$current>=12而不是$current==12

+0

'H'为24小时制,'h'为12.当OP检查12到18之间的值时,使用的正确格式是'H' –

+0

当我使用H时,我得到0:| – Ryan

+0

我认为这可能是您放置示例的网站的一个特点 - 当我在本地主机上运行它时,我得到23(这是正确的) –