2013-04-26 42 views
0

我有一个页面,其中有一个表单,用户可以在其上添加对象。逐个。当用户发送表单时,将向当前页面发布POST以使用新对象更新$objects。这是代码。在访问对象变量的属性时尝试获取非对象的属性

<?php 
    include ('header.php'); 
    include ('dbc.php'); 
    include ('object.php'); 

    $objects = array(); 

    if(isset($_POST['flag'])) 
    { 
     $objects = unserialize($_POST['objects']); 

     $name = mysql_fix_string($_POST['name']); 
     $quantity = mysql_fix_string($_POST['quantity']); 
     $observation = mysql_fix_string($_POST['observation']); 

     $object = new Object(); 

     $object->name = $name; 
     $object->quantity = $quantity; 
     $object->observation = $observation; 

     $objects[] = $object; 
    } 

    var_dump($objects); 
?> 
<body> 
     <div class="leftContainer"> 
      <div class="upperContainer"> 
       <div class="ContainerTitle"> 
        Imagem do produto: 
       </div> 
       <div style="height: 200px;" class="upperContainerImageDiv"></div> 
      </div> 
      <div class="bottomContainer"> 
       <div class="bottomContainerRequestsDiv"> 
        <un> 
         <li class="listItem"> 
          <?php 
           foreach ($object as $product) 
           { 
            $counter = 1; 
            ?> 
             <div class="listItemInnerDiv"> 
      //error here      <span class="listItemInnerDivText"><?php echo $counter ." ". $product->name ?></span> 
             </div> 
            <?php 
            $counter + 1; 
           } 
          ?> 
         </li> 
        </un> 
       </div> 
      </div> 
     </div> 
     <div class="rightContainer"> 
      <form action="" method="POST"> 
       <table style="margin-left: auto; margin-right: auto;"> 
        <thead> 
         <div class="ContainerTitle"> 
          Adicionar produto: 
         </div> 
        </thead> 
        <tbody> 
         <tr> 
          <td><span class="tdTitle">Produto:</span></td> 
          <td> 
           <select class="input" name="name" onchange="ImageUpdater(this.value);"> 
            <option>Selecione</option> 
            <?php 
             $query = "SELECT g_id, name FROM `group`"; 

             $result = mysql_query($query); 

             while($row = mysql_fetch_array($result)) 
             { 
              ?><optgroup label="<?php echo $row[1] ?>"><?php 

              $query = "SELECT name FROM `object` WHERE g_id='$row[0]'"; 

              $secondaryResult = mysql_query($query); 

              while($secondaryRow = mysql_fetch_array($secondaryResult)) 
              { 
               ?><option><?php echo $secondaryRow[0] ?></option><?php 
              } 
             } 
            ?> 
           </select> 
          </td> 
         </tr> 
         <tr> 
          <td><span class="tdTitle">Quantidade:</span></td> 
          <td> 
           <input class="input" type="number" name="quantity"> 
          </td> 
         </tr> 
         <tr> 
          <td><span class="tdTitle">Observações:</span></td> 
          <td> 
           <input class="input" type="text" name="observation"> 
          </td> 
         </tr> 
        </tbody> 
       </table> 
       <input type="hidden" name="flag" value="1"/> 
       <input type="hidden" name="objects" value="<?php echo htmlentities(serialize($objects)) ?>"/> 
       <center><input name="addbutton" type="submit" value="Adicionar"/></center> 
      </form> 
     </div> 
    </body> 
</html> 

的问题,当我试图通过我的对象重复,以获取他们的价值观,并把它们名单上时,我得到Trying to get property of non-object

这是我Object类的代码:

<?php 
    class Object 
    { 
     public $name; 
     public $quantity; 
     public $observation; 
    } 
?> 

什么我错在这里做什么,这是为什么错误出现?

+2

结束你的数组被称为的 'S''$ objects';你的foreach循环是从'$ object'生成的 - 我认为后者需要's'结尾 – andrewsi 2013-04-26 18:23:43

+0

确实。不能相信我没有看到。发布它作为答案,我会将其标记为已回答。 – 2013-04-26 18:25:48

+0

我想我们都做过这样的事情。很高兴有帮助。 – andrewsi 2013-04-26 18:28:16

回答

1

您正在创建的对象数组为$objects;但你的foreach循环是:

foreach ($object as $product) 

你已经错过了的$objects

相关问题