Jump to content

IF THEN Question


countrygyrl

Recommended Posts

How would I add to the code below.  This code works great for me but on occasion there will be times when there are matching values in invoice_id. What I want to do is say if the invoice_id matches a previous invoice_id, add the new amount in total to the total in the matching row, don't make another table row. If it does not match any of the previous invoice_id values then make a new table row. Can anyone please help me?

 

$result = mysql_query("SELECT * FROM si_invoices 
  LEFT JOIN si_invoice_items ON si_invoices.id = si_invoice_items.invoice_id 
  WHERE si_invoices.customer_id='$_SESSION[user_id]' ORDER BY invoice_id");
$num=mysql_num_rows($result);

$i=0;
while ($i < $num) {

$inv_id=mysql_result($result,$i,"id");
$inv_invoice_id=mysql_result($result,$i,"invoice_id");
$inv_customer_id=mysql_result($result,$i,"customer_id");
$inv_gross_total=mysql_result($result,$i,"gross_total");
$inv_description=mysql_result($result,$i,"description");
$inv_total=mysql_result($result,$i,"total");
$inv_total=number_format($inv_total, 2);
$inv_date=mysql_result($result,$i,"date");
$inv_date=substr($inv_date, 0, -9);
$pay= mysql_query("select * from si_payment where ac_inv_id='$inv_invoice_id'");


echo "<tr class=\"d".($i & 1)."\"><td valign='top'>$inv_date</td><td valign='top'>$inv_invoice_id</td><td valign='top'>$$inv_total</td><td><a href='invoices/Invoice$inv_invoice_id.pdf' target='_blank'><img src='../images/pdf_icon.gif' width='17' height='17' alt='PDF File' border='0' /></a></td></tr>";

$i++;
}

Link to comment
Share on other sites

You can't add a value to HTML content after you have written that content to the page. You just need to add a GROUP BY clause to your query as well as specifically set the values to obtain - don't rely on *. Also, there is no need to get the number of rows and performa a while loop on that. And you should never, never do queries within loops. I don't even see what you are using the $pay result for.

 

$query = "SELECT invoice_id, date, SUM(total) as invoiceTotal
          FROM si_invoices
          LEFT JOIN si_invoice_items ON si_invoices.id = si_invoice_items.invoice_id
          WHERE si_invoices.customer_id='$_SESSION[user_id]'
          GROUP BY invoice_id
          ORDER BY invoice_id"
$result = mysql_query($query);

$row=0;
while ($record = mysql_fetch_assoc($result))
{
    $class = 'd' . ($row % 2);
    $inv_date=substr($record['date'], 0, -9);

    echo "<tr class=\"{$class}\">";
    echo "<td valign='top'>{$inv_date}</td>";
    echo "<td valign='top'>{$record['invoice_id']}</td>";
    echo "<td valign='top'>${$record['invoiceTotal']}</td>";
    echo "<td><a href='invoices/Invoice{$record['invoice_id']}.pdf' target='_blank'>";
    echo "<img src='../images/pdf_icon.gif' width='17' height='17' alt='PDF File' border='0' /></a></td>";
    echo "</tr>";
    $row++;
}

Link to comment
Share on other sites

Thank you very much for your awesome help, I found the problem, there was a $ sign where there shouldn't have been but you probably put it there to test me  ;) Here is the final working code, in case it will help anyone else:

$query = "SELECT invoice_id, date, SUM(total) as invoiceTotal
          FROM si_invoices
          LEFT JOIN si_invoice_items ON si_invoices.id = si_invoice_items.invoice_id
          WHERE si_invoices.customer_id='$_SESSION[user_id]'
          GROUP BY invoice_id
          ORDER BY invoice_id";
$result = mysql_query($query);

$row=0;
while ($record = mysql_fetch_assoc($result))
{
    $class = 'd' . ($row % 2);
    $inv_date=substr($record['date'], 0, -9);
$inv_total=$record['invoiceTotal'];
$invoice_total=number_format($inv_total, 2);

    echo "<tr class=\"{$class}\">";
    echo "<td valign='top'>{$inv_date}</td>";
    echo "<td valign='top'>{$record['invoice_id']}</td>";
    echo "<td valign='top'>$invoice_total</td>";
    echo "<td><a href='invoices/Invoice{$record['invoice_id']}.pdf' target='_blank'>";
    echo "<img src='../images/pdf_icon.gif' width='17' height='17' alt='PDF File' border='0' /></a></td>";
    echo "</tr>";
    $row++;
}

 

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.