-1

Hi I'm a novice PHP developer to say the least and I'm pretty stuck.

I'm trying to get the below code working I know I need a foreach loop or similar but I'm way out of my depth, I'm really not sure how to get this working, I know to most of you this is basic stuff but I'm lost.

Basically this is a receipt when a tab is settled. It searches the MySql Database for the relevant items and should print them on the receipt.

I know the MySql Query is not linked to the output at the bottom but I don't know how to do it.

<html lang="en">
 <head>
  <title>Receipt</title>
 </head>

 <body>
  <?php

   $invoicenum = $_POST['invoicenum'];
   $name = $_POST['name'];

   $netrev=$invoicenum - 1;

  ?>
  Items:
  <?
   $itemQuery = mysql_query("SELECT * FROM sales WHERE invoicenum = '$netrev' AND tabname = '$name'");
 $result = array();

 while($row = mysql_fetch_array($itemQuery))
 {
  $result[] = $row['itemname'];
 }

 echo json_encode($result);

   $amounts = json_decode($result['amounts']);
   $items = json_decode($result['items']);
   $prices = json_decode($result['prices']);
  ?>
   <br>
   <?
    for ($i = 0; $i < count($items); $i++)
    {
     echo $amounts[$i] . "x " . $items[$i] . " - " . $prices[$i] . "<br>";
    }
   ?>

 </body>
</html>

I've removed code that isn't relevant to this array, if you can help I'd be forever grateful.

DNorthfield
  • 3
  • 1
  • 3
  • 1
    I'm unsure what you question is... What is the current output? What is the desired output? What is working? What isn't working as intended? – ʰᵈˑ Jul 28 '16 at 13:27
  • 1
    if `$result[]=$row['itemname']` why should `json_decode($result['amounts'])` work at all? – JustOnUnderMillions Jul 28 '16 at 13:28
  • `mysql_query("SELECT * FROM sales WHERE invoicenum = '$netrev' AND tabname = '$name'");` **WARNING WARNING - Danger Will Robinson!** : http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php and http://bobby-tables.com/ – CD001 Jul 28 '16 at 13:30
  • This `$result[]=` creates number indexes , so no string key is present in the array – JustOnUnderMillions Jul 28 '16 at 13:30
  • JustOnUnderMillions I don't know, that's why I'm here – DNorthfield Jul 28 '16 at 13:30
  • Why you are decoding stuff, they are not encoded – Angelo Berçacola Jul 28 '16 at 13:30
  • This isn't related to your question, but you should definitely look into mysqli and prepared statements, your SQL query is very vulnerable to SQL injection attacks. – Brandon Horsley Jul 28 '16 at 13:31
  • Yes, mysql_ statements have been gone for 2 years. Please look into mysqli. As for your question, please elaborate. It is unclear what the desired output is and where your problem is. – TheValyreanGroup Jul 28 '16 at 13:34

2 Answers2

0

no need of encode and decode.

$itemQuery = mysql_query("SELECT * FROM sales WHERE invoicenum = '$netrev' AND tabname = '$name'");

while($row = mysql_fetch_array($itemQuery))
{
    echo $row['amounts'] . "x " . $row['items'] . " - " . $row['prices'] . "<br>";
}
 ?>
shilpi Singh
  • 402
  • 1
  • 5
  • 15
0

Forget all json_decode/encode after filling $result then:

First do:

$result[] = $row;

Then:

foreach ($result as $set){
   echo $set['amount'] . "x " . $set['itemname'] . " - " . $set['price'] . "<br>";
   #do var_dump($set); here for checking the keys
}
JustOnUnderMillions
  • 3,741
  • 9
  • 12