2013-10-05 43 views
0

有人能解决我的问题吗? 我得到这个错误:表中未定义的偏移量PHP

Notice: Use of undefined constant qty - assumed 'qty' in C:\Program Files (x86)\xampp\htdocs\dede\transaksi.php on line 65
Notice: Undefined offset: 3 in C:\Program Files (x86)\xampp\htdocs\dede\transaksi.php on line 65

这个剧本,我想成本和数量之间的倍增,有谁知道?

$select=mysql_query("Select nota.id_item,nota.qty,item.nama_item,item.cost_item FROM nota,item WHERE nota.id_item = item.id_item"); 
     while($data=mysql_fetch_array($select)){ 
     $sub=$_POST[$data[qty]] * $_POST[$data[cost_item]]; 
     echo"<tr>"; 
      echo"<td height=20 >$data[id_item]</td>"; 
      echo"<td height=20 >$data[nama_item]</td>"; 
      echo"<td height=20 >$data[cost_item]</td>"; 
      echo"<td height=20 >$data[qty]</td>"; 
      echo"<td height=20 >$data[qty]*$data[cost_item]</td>"; 
      echo"<td><a href=deleten.php?id=$data[id_item]>X</a></td>"; 
     echo"</tr>";} 
+0

你可以做一个'的print_r($ _ POST)'所以我们可以看到你要发送给您的是什么? –

+0

你没有引用你的数组索引名称。 IE'$ _POST [$ data [qty]]'应该是'$ _POST [$ data ['qty']]'当没有引用时,它正在寻找一个名为'qty'的CONSTANT变量, 。 –

+0

这实际上并不重要,因为无论如何PHP都会假设一个字符串。例如:https://eval.in/52747 –

回答

1

让我们打破这...

$select = mysql_query("Select nota.id_item,nota.qty,item.nama_item,item.cost_item FROM nota,item WHERE nota.id_item = item.id_item"); 
while($data=mysql_fetch_array($select)) { 

在这一点上,你$data变量应该有8个元素给它。由于您使用了mysql_fetch_array(),因此您将拥有数字键和关联键。也就是说,你的密钥将是:0, 1, 2, 3, id_item, qty, nama_item, cost_item,你可以像这样引用它们:$data[1],或者像这样:$data['qty'](因为它们按原始查询的顺序编号,这两个例子的值应该是相同的)。

现在,我完全不知道为什么你使用$_POST ...如果你想获得乘以数量为从数据库中得到了价值的成本,你只是做:

$sub = $data['qty'] * $data['cost_item']; 

顺便说一句,你要面对一个更的问题是,PHP不会为数组成员做字符串替换......至少不是这样,你有在这里:

echo"<td height=20 >$data[qty]</td>"; 

鉴于你修复$data[qty]$data['qty'],你还在需要用花括号包围整个东西才能打印。否则,你会得到一个解析错误:

echo"<td height=20 >$data['qty']</td>"; // Bad 
echo"<td height=20 >{$data['qty']}</td>"; // Good