2012-08-17 76 views
2

我試圖做一個基本的HTML表單,將信息傳遞給一個PHP對象,然後將所述對象添加到數組。它將信息從表單傳遞到對象,並將其添加到數組並顯示所述對象。但是,當我嘗試向數組中添加第二個對象時,它似乎只是用一個新的單元素數組替換而不是添加到它。這是我的代碼...有什麼想法?PHP:陣列似乎重新初始化

index.php文件:

<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Custom Forms</title> 
    </head> 
    <body> 
     <h2>Add Data</h2> 
     <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
      First Name:<input type="text" size="12" maxlength="12" name="Fname"><br /> 
      Last Name:<input type="text" size="12" maxlength="36" name="Lname"><br /> 
      <button type="submit" name="submit" value="client">Submit</button> 
     </form> 
     <?php 
     include_once 'clientInfo.php'; 
     include_once 'clientList.php'; 

     if ($_POST) { 
      $clientArray[] = new clientInfo($_POST["Fname"], $_POST["Lname"]); 
     } 

     if (!empty($clientArray)) { 
      $clientList = new clientList($clientArray); 
     } 
     ?> 
     <p><a href="clientList.php">go to client list</a></p> 
    </body> 
</html> 

clintInfo.php文件:

<?php 
class clientInfo { 

    private$Fname; 
    private$Lname; 

    public function clientInfo($F, $L) { 
     $this->Fname = $F; 
     $this->Lname = $L; 
    } 

    public function __toString() { 
     return $this->Fname . " " . $this->Lname; 
    } 
} 
?> 

clientList.php文件:

<?php 
class clientList { 
    public function clientList($array) { 
     foreach($array as $c) { 
      echo $c; 
     } 
    } 
} 
?> 

EDITED工作代碼使用答案

index.php文件:

<?php 
include('clientInfo.php'); 
session_start(); 
?> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Custom Forms</title> 
    </head> 
    <body> 
     <h2>Add Data</h2> 
     <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
      First Name:<input type="text" size="12" maxlength="12" name="Fname"><br /> 
      Last Name:<input type="text" size="12" maxlength="36" name="Lname"><br /> 
      <button type="submit" name="submit" value="client">Submit</button> 
     </form> 
     <?php 
     if ($_POST) { 
      $testClient = new clientInfo($_POST["Fname"], $_POST["Lname"]); 

      echo $testClient . " was successfully made. <br/>"; 

      $_SESSION['clients'][] = $testClient; 

      echo end($_SESSION['clients']) . " was added."; 
     } 
     ?> 
     <p><a href="clientList.php">go to client list</a></p> 
    </body> 
</html> 

clientList.php文件:

<?php 
include('clientInfo.php'); 
session_start(); 
?> 
<!DOCTYPE html> 
<html> 
    <head> 
     <title> 
      Accessing session variables 
     </title> 
    </head> 
    <body> 
     <h1> 
      Content Page 
     </h1> 
     <?php 
     for ($i = 0; $i < sizeof($_SESSION['clients']); $i++) { 
      echo $_SESSION['clients'][$i] . " was added. <br/>"; 
     } 
     ?> 
     <p><a href="index.php">return to add data</a></p> 
    </body> 
</html> 

目標文件clientInfo.php保持不變。這些對象需要存儲在一個多維的$ _SESSION數組中,並用一個for循環進行調用,foreach循環將不起作用,除非其他人知道如何使foreach循環工作,並堅持使用for。注意,$ testClient變量可以被跳過,並且只需創建並同時放置在$ _SESSION中,但是通過使用temp變量來實現,它可以更輕鬆地排除故障並瞭解如何使其工作。只是以爲我會用Josh提供的答案發布工作代碼!

回答

3

您需要將持久性添加到您的數組對象。

查看PHP的$_SESSION

如果您沒有將它存儲到內存或磁盤請求之間,它不可能存在於連續加載中。在該鏈接中有一個很好的教程,可以讓你啓動並運行。

或者,您可以將事情存儲在數據庫中,以滿足更大的需求。

+1

我開始這麼想,但是因爲我是新人,所以我試圖避免它。我會看到我可以將它作爲會話變量添加進來。謝謝! – defaultNINJA 2012-08-17 17:12:27

+0

@defaultNINJA:很高興幫助,祝你好運!由於您在這裏似乎是新手,因此請不要忘記通過點擊綠色複選標記將您的問題答案標記爲正確。這有助於以後找到你的問題的人。 – Josh 2012-08-17 17:12:46

+1

好的會做的!是的,我已經用JAVA和C++編寫了一段時間,剛剛得到了我的第一個編程演示,他們想讓我做PHP的東西,所以現在我試圖將我的OOP技能從JAVA和C++轉換爲PHP!娛樂時間 :-) – defaultNINJA 2012-08-17 17:16:26