现在我得到这个消息:在D:xampphtdocsdackhotell包括 forms . PHP第39行中为foreach()提供的无效参数,我真的不明白(我是PHP新手)如何解决它。
以下是文件的代码:
<?php
if (isset($_REQUEST["updateView"])){
$id = $_REQUEST["updateView"];
$obj = $register->getOrder($id);
?>
<p>
<!-- Formuläret för uppdateringen -->
Inlämningsid: <input type = "text" name = "deliverId" value = "<?php echo $id;?>" readonly /><br />
Namn: <input type="text" name="new_name" value="<?php echo $obj->getName()?>" />
Telefonnummer: <input type="tel" name="new_phone_number" value="<?php echo $obj->getPhone()?>" />
E-post: <input type="email" name="new_email_user" value="<?php echo $obj->getEmail()?>" />
Däckfabrikat och dimension: <input type="text" name="new_fabricDim" value="<?php echo $obj->getDim()?>" />
Status: <input type="text" name="new_status" value="<?php echo $obj->getStatus()?>">
<br />
<input type="submit" name="updateOrder" value="Uppdatera info" />
<input type="button" id="exit" value="Avbryt" onClick="history.back()" />
</p>
<!-- ********** -->
<?php
}
foreach($register->gethotelList() as $key => $obj){
echo "<br /><strong>Namn: </strong>" . $obj->getName() . " <strong>Telefonnummer: </strong>" . $obj->getPhone() .
" <strong>E-post: </strong>" . $obj->getEmail() . " <strong>Däckfabrikat och dimension: </strong>" . $obj->getDim() .
" <strong>Status: </strong>" . $obj->getStatus() . " <strong>Uppdaterat: </strong>" . $obj->getDatum() .
" <a href='index.php?delOrder=$key'>Ta bort</a>, <a href='index.php?updateView=$key'> Uppdatera</a>";
}
?>
和OOP文件或代码如下:
// Skapar klassen Register som används sedan i formen
class Register {
protected $name = '';
// Skapar en array där all information kommer att lagras i HotelList
public $hotelList = array();
function __construct($namn){
$this->name = $namn;
/* Kollar ifall filen existerar och unserializerar det
sedan till array HotelList som består av objekt */
if(file_exists("order/order.txt")>0)
$this->hotelList = unserialize(file_get_contents("order/order.txt"));
}
// Skapar en funktion som lägger till nya order till array
function addOrder($userName, $userPhone, $userEmail, $fabricDim, $userStatus, $dat){
$this->hotelList[] = new Order($userName, $userPhone, $userEmail, $fabricDim, $userStatus, $dat);
// Serializerar och lägger till innehållet av array till nämnda filen
file_put_contents("order/order.txt",serialize($this->hotelList));
}
//Skapar en funktion för att kunna ta bort en order
function removeOrder($ind){
unset($this->hotelList[$ind]);
// Serialiserar och lägger till innehållet av array till nämnda filen
file_put_contents("order/order.txt",serialize($this->hotelList));
}
// Skapar en funktion för att kunna uppdatera innehållet eller ordern
function updateOrder($ind, $userName, $userPhone, $userEmail, $fabricDim, $userStatus, $dat){
$this->hotelList[$ind] = new Order($userName, $userPhone, $userEmail, $fabricDim, $userStatus, $dat);
// Serialiserar innehållet och lägger till den uppdaterade informationen till listan
file_put_contents("order/order.txt",serialize($this->hotelList));
}
public function getHotelList(){
return $this->hotelList;
}
public function getOrder($ind){
return $this->HotelList[$ind];
}
}
?>
现在,我错过了什么地方声明的数组,或者我应该做什么?
没有检查它太多,我认为你有一个拼写错误的函数名。注册类中的函数名是getHotelList,而不是getHotelList。
试着改变
foreach($register->gethotelList() as $key => $obj){
foreach($register->getHotelList() as $key => $obj){
我猜问题是在构造函数中的这一行:
$this->hotelList = unserialize(file_get_contents("order/order.txt"));
如果发生错误,unserialize返回false。我会从这里开始