在phtml文件中显示我的所有数据库,包括price
,id
等,然后在php文件Details
中,当用户尝试按租用时,它会获取ID项目的使用方法add
将其存储在商店中我一直收到此错误
Fatal error: Function name must be a string.
我从数据库中存储项目ID的原因是,当用户签出时,我将使用用户选择的项目ID检索所有信息。而且我使用数组列表来存储多个项目,另一件事是提到他们获取项目的ID的方法是通过添加购物车文件中的局部变量$tem = $_POST(['$dvdDetails->getDvdId()']);
,但我不确定它是否是存储正确的值,因为有一个foreach循环,变量的持续时间将在方法结束时失真,所以我怎样才能得到项目的id被选中。
<?php
require_once('Models/Product.php');
class Shop {
private $_products = array();
public function getProducts()
{ return $this->_products;}
public function addProduct(Product $product)
{ $this->_products[] = $product;
return $this;
}
}
?>
<?php
class Option {
private $_optionKey;
private $_optionValue;
public function getKey()
{ return $this->_optionKey; }
public function getVlue()
{
return $this->_optionValue;
}
public function setOption($key, $value)
{
$this->_optionKey = $key;
$this->_optionValue = $value;
return $this;
}
}
?>
<?php
require_once('Models/Option.php');
class Product {
private $_options = array();
public function getOptions()
{ return $this->_options; }
public function addOption(Option $option)
{ $this->_options[] = $option;
return $this;
}
}
?>
//SHow all
<?php require('template/header.phtml') ?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table class="datatable">
<tbody>
<?php foreach ($view->dd as $dvdDetails) {
echo '<tr> <td>'
.'<img src="images/'. $dvdDetails->getPhotoDetails() .'"alt="no picture" height="240" width="820" />' .'<br><br>'.'<font size="3" color="#2E2E2E"><center>'. $dvdDetails->getDvdPhoto(). '</center></font>'.
'<br><br><br>'. '<font size="2" color="blue"><strong>Genre: </strong></font>'. $dvdDetails->getDvdGenre() .
'<br><br>'. '<font size="2" color="blue"><strong>Director: </strong></font>'. $dvdDetails->getDvdDirector() . '<br><br>' .'<font size="2" color="blue"><strong>Ritels: </strong></font>'. $dvdDetails->getDvdRitels() .
'<br><br>' . '<font size="2" color="blue"><strong>Price for rent: </strong></font>'. $dvdDetails->getDvdId()) .
'<br><br>' .
'<div class="ghassar">' .
'<div id="op"> <label>Number of days </label> <select name="days" > <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option>
</select>
<br><br><br><br>
</div>
<div>
<input type="submit" value="Add to the basket" name="rent" id="buttom1" />
</div> ' . '<br><br>' .
'<br><br>' .'<div>'.
'</td> </td> </tr>';
} ?>
</tbody>
</table>
<?php require('template/footer.phtml') ?>
//添加到购物车
<?php
require_once('Models/Dvd_sql.php');
require_once('Models/Shop.php');
$view = new stdClass();
$view->dd = 'SQL';
$dvd_sql = new Dvd_sql();
$view->dd = $dvd_sql->fetchAllStudents(); //->fetchAllStudents();
if (isset($_POST['rent']))
{
$tem = $_POST(['$dvdDetails->getDvdId()']);
$shop = new Shop(); $shop->addProduct($tem);
}
require_once('Views/dvdDetails.phtml');
答案 0 :(得分:0)
我认为您尝试做的是从表单页面获取DVD的ID到表单处理页面。假设它是这样的,那么你的方式存在一些问题。
$_POST['$dvdDetails->getDvdId()']
在帖子数据中查找与字符串&#39; $ dvdDetails-&gt; getDvdId()&#39;字面匹配的字符串键。单引号中的字符串不是由PHP插值的,即使使用双引号,您也希望坚持使用简单变量和/或使用{$brackets}
。$dvdDetails
甚至不存在于表单处理脚本中。我只在表单显示代码中看到它,并且不会自动将其转移到处理脚本。您需要在表单中明确传递所需的数据。为此,你可以这样做:在表单中(遵循字符串连接样式)
'<input type="hidden" name="item_id" value="' . $dvdDetails->getDvdId() . '">' .
处理脚本中的
$item_id = $_POST['item_id'];
<强> 修改 强>
第一次,我错过了你在许多DVD项目上循环的事实。在这种情况下,我的建议将导致许多item_id
输入,处理脚本只能看到一个(我认为最后一个)。你的&#34;天&#34;选择器将遭受同样的问题。在这种情况下,我认为最简单的解决方案是为每张DVD创建一个单独的表单并使用上面的建议。这样只有一个&#34;天&#34;和&#34; item_id&#34;当您提交特定DVD的表格时会收到。