未定义的索引问题和错误返回
Undefined Index Issue and Error return
标记为固定!!
我在MySQL商业数据库中丢失了vat_rate。这导致了这两个问题。感谢Nytrix和Grimbode的快速支持,非常感谢!:)
我得到一个未定义的索引问题在第16行…
<?php
class Business extends Application {
private $_table = 'business';
public function getBusiness() {
$sql = "SELECT * FROM `{$this->_table}`
WHERE `id` = 1";
return $this->db->fetchOne($sql);
}
public function getVatRate() {
$business = $this->getBusiness();
return $business['vat_rate'];
}
}
我该如何修复它?谢谢。
另外,当我单击添加到篮子并从篮子链接中删除时,我得到一个错误弹出,这是在第13行和第14行从basket.js调用的。我也不知道如何修复,但认为它可能与上述有关?
对
编辑;我认为我已经正确地执行了var_dump(?),当我写入
时,这是$business显示的结果。<?php var_dump($business); ?>
在我的_header.php文件中回显数组(我这么说,尽管我不知道!)。
注意:未定义的变量:业务在/Users/ashleysmith/Documents/Website Tests/Z -工作从这个/ecommerce/template/_header.php的第68行空
这是我所知道的所有相关代码…
Business.php
<?php
class Business extends Application {
private $_table = 'business';
public function getBusiness() {
$sql = "SELECT * FROM `{$this->_table}`
WHERE `id` = 1";
return $this->db->fetchOne($sql);
}
public function getVatRate() {
$business = $this->getBusiness();
return $business['vat_rate'];
}
}
basket_small_refresh.php
<?php
require_once("../inc/autoload.php");
$objBasket = new Basket();
$out = array();
$out['bl_ti'] = $objBasket->_number_of_items;
$out['bl_st'] = number_format($objBasket->_sub_total, 2);
$out['bl_vat'] = number_format($objBasket->_vat, 2);
$out['bl_total'] = number_format($objBasket->_total, 2);
echo json_encode($out);
basket_left.php
<div id="small_basket">
<?php $objBasket = new Basket(); ?>
<p class="your_bas">Your Basket</p>
<dl id="basket_left">
<dt>No. of items:</dt>
<dd class="bl_ti"><span><?php echo $objBasket->_number_of_items; ?></span></dd>
<dt>Sub-total:</dt>
<dd class="bl_st">£<span><?php echo number_format($objBasket->_sub_total, 2); ?></span></dd>
<dt>VAT (<span><?php echo $objBasket->_vat_rate; ?></span>%):</dt>
<dd class="bl_vat">£<span><?php echo number_format($objBasket->_vat, 2); ?></span></dd>
<dt>Total (inc):</dt>
<dd class="bl_total">£<span><?php echo number_format($objBasket->_total, 2); ?></span></dd>
</dl>
<p class="check_button">
<a href="/?page=basket">View Basket</a> |
<a href="/?page=checkout">Checkout</a>
</p>
</div>
basket.php
<?php
require_once('../inc/autoload.php');
if (isset($_POST['job']) && isset($_POST['id'])) {
$out = array();
$job = $_POST['job'];
$id = $_POST['id'];
$objCatalogue = new Catalogue();
$product = $objCatalogue->getProduct($id);
if (!empty($product)) {
switch($job) {
case 0:
Session::removeItem($id);
$out['job'] = 1;
break;
case 1:
Session::setItem($id);
$out['job'] = 0;
break;
}
echo json_encode($out);
}
}
Basket.php
<?php
class Basket {
public $_inst_catalogue;
public $_empty_basket;
public $_vat_rate;
public $_number_of_items;
public $_sub_total;
public $_vat;
public $_total;
public function __construct() {
$this->_inst_catalogue = new Catalogue();
$this->_empty_basket = empty($_SESSION['basket']) ? true : false;
$objBusiness = new Business();
$this->_vat_rate = $objBusiness->getVatRate();
$this->noItems();
$this->subtotal();
$this->vat();
$this->total();
}
public function noItems() {
$value = 0;
if (!$this->_empty_basket) {
foreach($_SESSION['basket'] as $key => $basket) {
$value += $basket['qty'];
}
}
$this->_number_of_items = $value;
}
public function subtotal() {
$value = 0;
if (!$this->_empty_basket) {
foreach($_SESSION['basket'] as $key => $basket) {
$product = $this->_inst_catalogue->getProduct($key);
$value += ($basket['qty'] * $product['price']);
}
}
$this->_sub_total = round($value, 2);
}
public function vat() {
$value = 0;
if (!$this->_empty_basket) {
$value = ($this->_vat_rate * ($this->_sub_total / 100));
}
$this->_vat = round($value, 2);
}
public function total() {
$this->_total = round(($this->_sub_total + $this->_vat), 2);
}
public static function activeButton($sess_id) {
if(isset($_SESSION['basket'][$sess_id])) {
$id = 0;
$label = "Remove From Basket";
} else {
$id = 1;
$label = "Add To Basket";
}
$out = "<a href='"#'" class='"add_to_basket";
$out .= $id == 0 ? " red" : null;
$out .= "'" rel='"";
$out .= $sess_id."_".$id;
$out .= "'">{$label}</a>";
return $out;
}
}
basket.js
$(document).ready(function() {
function refreshSmallBasket() {
$.ajax({
url: '/mod/basket_small_refresh.php',
dataType: 'json',
success: function(data) {
$.each(data, function(k, v) {
$("#basket_left ." + k + " span").text(v);
});
},
error: function(data) {
alert("Error occured");
}
});
}
if ($(".add_to_basket").length > 0) {
$(".add_to_basket").click(function() {
var trigger = $(this);
var param = trigger.attr("rel");
var item = param.split("_");
$.ajax({
type: 'POST',
url: '/mod/basket.php',
dataType: 'json',
data: ({ id : item[0], job : item[1] }),
success: function(data) {
var new_id = item[0] + '_' + data.job;
if (data.job != item[1]) {
if (data.job == 0) {
trigger.attr("rel", new_id);
trigger.text("Remove From Basket");
trigger.addClass("red");
} else {
trigger.attr("rel", new_id);
trigger.text("Add To Basket");
trigger.removeClass("red");
}
refreshSmallBasket();
}
},
error: function(data) {
alert("Error occured");
}
});
return false;
});
}
});
好的,所以你从表中选择所有的*
定义为$_table = "business"
。您希望选择'vat_rate'列,该列可能不存在于返回数组中。这里为您检查与var_dump
如何你的数组看起来。如果你想知道如何从数组中选择一个值,请查看文档:http://php.net/manual/en/language.types.array.php或http://www.w3schools.com/php/php_arrays.asp(可能更简单的解释)
标记为固定!!
我在MySQL商业数据库中丢失了vat_rate。这导致了这两个问题。感谢Nytrix和Grimbode的快速支持,非常感谢!:)
- CKFinder 3为所选文件返回错误的URL
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- AngularJS错误:提供程序必须从$get工厂方法返回值
- 用于查询错误转换的角度资源返回列表
- 如何解决“;错误所请求的URL返回500-内部服务器错误”;
- WebView返回错误的window.innerHeight
- Javascript表单验证:表单在错误返回时提交:
- 谷歌地图上的常量错误返回maxZoomService.getMaxZoomAtLatLng()
- Jquery .ajax POST 函数错误返回 asp.net MVC.
- happy 不会从 Boom 错误返回数据属性
- 操作结果在 ajax 调用中作为错误返回
- 我得到了错误“返回绑定”.PBKDF2(密码、盐、迭代、keylen、回调);^ TypeError: Not a bu
- 节点解析错误:返回时意外的令牌
- Bluebird承诺库的结果作为错误返回
- Jquery, php ajax post 500内部服务器错误返回
- 未定义的索引问题和错误返回
- 未从json文件中导入数据:Unhandled rejection错误返回
- Jquery错误返回bool值
- 表单提交后重新加载页面,尽管没有验证和错误返回
- 使用POST方法的AJAX函数会创建以下错误.错误:返回状态码414请求uri太大