致命错误:在非对象上调用成员函数format()

时间:2012-05-24 03:59:10

标签: php function object format member

我有一个html文件,其中包含下表:

<form action="wedding-ajax-support.php" method="get" id="wedding-table">
<table border="0"; align="center">
  <tr>
    <th scope="col">Key</th>
    <th scope="col">Value</th>
  </tr>
  <tr>
    <td><label for="date">Select the date on which your party will take place (mm/dd/yyyy): </label></td>

    <td>
      <input name="date" type="text" class="larger" id="date"  size="12" />
    </td>
  </tr>
  <tr>
    <td><label for="catering">Type the catering grade you would like (from 1 to 5) : </label></td>
    <td><input name="catering" type="text" class="larger" id="catering"  size="5" /></td>
  </tr>
  <tr>
    <td><label for="size">Type the number of people you are expecting to attend: </label></td>
    <td><input name="size" type="text" class="larger" id="size"  size="5" /></td>
  </tr>
  <tr>
    <td>Find me available venues, based on my preferences: </td>
    <td><input type="submit" name="submit" id="submit" value="GO!" class="larger" /></td>
  </tr>
</table>

  

其中一项输入是日期。这是我现在唯一关心的事情,为了简单起见。

     

在另一个文件中,wedding-ajax-support.php(我组织了我所有的PHP代码)我在其他代码中有这个:

$date = DateTime::createFromFormat('m/d/Y', $_GET['date']);

$ date = $ date-&gt;格式('Y-m-d'); //更改日期的格式,作为用户输入的日期,以及数据库中的日期格式不同。

  

然后是一个简单的回声$ date;   只是为了测试它。

然后,回到我的主文件,我放了一个

<script type="text/javascript">

$( “#婚礼表”)的负载( “婚礼Ajax的support.php”);

使用ajax通过jQuery将表格替换为更改格式的日期。

因此,当我加载我的网页时,表格应该显示在哪里,会显示一条消息 “致命错误:在第23行的/disks/diskh/zco/cotm2/public_html/wedding/wedding-ajax-support.php中的非对象上调用成员函数格式()调用堆栈:0.0002 333936 1. {main }()/disks/diskh/zco/cotm2/public_html/wedding/wedding-ajax-support.php:0“。

  

任何想法/建议都会受到赞赏,提前谢谢!

2 个答案:

答案 0 :(得分:0)

当Web服务器作为URL中的查询参数传递时,Web服务器会为PHP设置“GET”变量。在您的情况下,您将页面加载为"wedding-ajax-support.php",这意味着_GET变量实际上是空的。

答案 1 :(得分:0)

错误告诉你

的结果
$date = DateTime::createFromFormat('m/d/Y', $_GET['date']);

不是DateTime的实例,但很可能是false,因为提及the php doc for DateTime如果无法根据给定参数创建实例,则会返回false

所以用

$date = $date->format('Y-m-d');

您正试图在format()上调用方法false,这不是对象。

您应该找出createFromFormat失败的原因。可能是$_GET['date']采用的格式无法解析或只是空。请尝试var_dump($_GET)查找。

正如另一个答案所指出的,$_GET个变量会附加到网址上,因此要设置$_GET['date'],网址应该看起来像wedding-ajax-support.php?date=xyz

不幸的是,我没有得到你试图用javascript做的事情来帮助你。

编辑:哇这篇文章很老了。之前没有看到,抱歉。

相关问题