现在我收到这样的消息:在第39行的D:\ xampp \ htdocs \ dackhotell \ includes \ form.php中为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];
}
}
?>
现在我错过了某个地方宣布某些事情,或者我应该做什么?
答案 0 :(得分:1)
没有检查太多,我认为你有一个功能名称的拼写错误。寄存器类中的函数名是getHotelList而不是gethotelList。
所以尝试改变
foreach($register->gethotelList() as $key => $obj){
到
foreach($register->getHotelList() as $key => $obj){
答案 1 :(得分:0)
我猜测问题出现在构造函数中的这一行:
$this->hotelList = unserialize(file_get_contents("order/order.txt"));
如果发生错误,unserialize将返回false。我会从那里开始。