Why are my arrays duplicating

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
User avatar
micknc
Forum Contributor
Posts: 115
Joined: Thu Jan 24, 2008 11:13 pm

Why are my arrays duplicating

Post by micknc »

I am trying to return two separate pieces of data with arrays. The data is right but the first array returns the same number of rows as the second array. There are two rows in the first array but they are duplicated 3 time because there are 6 rows in the second array. I am new so I am sure I am just doing something wrong.

here is the code that I am dealing with:

Code: Select all

 
<?
while($rowtrack = mysql_fetch_array($resulttrack)){
?>      <tr align="center">
        <td<font color="ffffff" face="arial"><? echo $rowtrack['TRACK_DATE'];?></td>
        <td<font color="ffffff" face="arial"><? echo $rowtrack['TRACK_TIME'];?></td>
        <td<font color="ffffff" face="arial"><? echo $status_codes[$rowtrack['TRACK_STATUS']];?></td>
        <td<font color="ffffff" face="arial"><? echo $rowtrack['TRACK_NUMBER'];?></td>
        <td<font color="ffffff" face="arial"><? echo $rowtrack['TRACK_NOTES'];?></td>
 
<?
}
?>
 
And then later I have the following

Code: Select all

 
while($row = mysql_fetch_array($result)){
?>
<tr><td width="100"><font color='ffffff' face='arial'><? echo $row['QTY'];?></td><td width="500"><font color='ffffff' face='arial'><? echo $row['DESCRIP'];?></td>
<?
}
?>
Result and Result track are defined earlier with two different queries. Resulttrack has two rows of data and result has 6. Both are variable depending on the earlier search so i can't just say "return 2 rows" because the next search may have 5.

Am I making sense?
User avatar
JAM
DevNet Resident
Posts: 2101
Joined: Fri Aug 08, 2003 6:53 pm
Location: Sweden
Contact:

Re: Why are my arrays duplicating

Post by JAM »

Looks right. What does this give you;

Code: Select all

// query goes here, directly after put...
echo mysql_num_rows($resulttrack);
echo mysql_num_rows($result);
You didn't manage to stick these while-loops within another loop by mistake?
User avatar
micknc
Forum Contributor
Posts: 115
Joined: Thu Jan 24, 2008 11:13 pm

Re: Why are my arrays duplicating

Post by micknc »

I don't think so. Here is the code that I have. It is pretty rudimentary but I working my way through understanding php:

Code: Select all

 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 
<html>
 
<head>
<title>Sales Order View</title>
</head> 
<body bgcolor="#36393D" link="white" vlink="ffefab" alink="ffefab">
 
<?
$id=$_GET['id'];
 
mysql_connect("localhost", "user", "password") or die(mysql_error());
mysql_select_db("ncfarmsi_oakst") or die(mysql_error());
 
// Make a MySQL Connection
// Construct our join query
$query = "SELECT LINEITM.QTY,LINEITM.DESCRIP, CUSTSHP.CITY, CUSTSHP.STATE FROM LINEITM, CUSTSHP WHERE LINEITM.SHIP_ID = CUSTSHP.SHIP_ID AND LINEITM.SO_NO=$id";
$querys = "SELECT LINEITM.QTY,LINEITM.DESCRIP, CUSTSHP.CITY, CUSTSHP.STATE FROM LINEITM, CUSTSHP WHERE LINEITM.SHIP_ID = CUSTSHP.SHIP_ID AND LINEITM.SO_NO=$id";
$querysohead = "SELECT LINEITM.SO_NO, SOHEAD.REQRD_DATE, SOHEAD.PO_NO FROM LINEITM, SOHEAD WHERE LINEITM.SO_NO = SOHEAD.SO_NO AND LINEITM.SO_NO=$id";
$querytrack = "SELECT LINEITM.SO_NO, TRACK.SO_NO, TRACK.TRACK_STATUS, TRACK.TRACK_DATE, TRACK.TRACK_TIME, TRACK.TRACK_NOTES, TRACK.TRACK_NUMBER FROM LINEITM, TRACK WHERE LINEITM.SO_NO = TRACK.SO_NO AND LINEITM.SO_NO=$id";
 
 
$results=mysql_query($querys);
$rows = mysql_fetch_assoc($results);
 
$resultsohead=mysql_query($querysohead);
$rowsohead = mysql_fetch_assoc($resultsohead);
 
$resulttrack=mysql_query($querytrack);
$rowtrack = mysql_fetch_assoc($resulttrack);
 
$status_codes = array(
'19' => 'Test Field',
'20' => 'Order Shipped',
);
 
?>
<table width="600" align="center" border="4" bgcolor="#D01F3C"><tr><td align="center"><font color="ffffff" face="arial"><h2>Order Verification</h2>
<table><tr><td><font color="ffffff" face="arial">Our Information indicates the following for SO #<? echo $rowsohead['SO_NO'];?>:</td></tr></table>
<table width="450" align="center">
<tr><td><font color="ffffff" face="arial">Ship Date: <? echo $rowsohead['REQRD_DATE'];?></td>
<td> &nbsp&nbsp&nbsp </td><td><font color="ffffff" face="arial">Your PO Number: <? echo $rowsohead['PO_NO'];?></td></tr>
<tr><td><font color="ffffff" face="arial">Customer City: <? echo $rows['CITY'];?></td>
<td><font color="ffffff" face="arial"> &nbsp&nbsp&nbsp </td><td><font color="ffffff" face="arial">Customer State: <? echo $rows['STATE'];?></td></tr></table></td></tr></table>
<table width="600" align="center" border="0">
<tr align="center">
        <td bgcolor="#D01F3C"><font color="ffffff" face="arial">Date</td>
        <td bgcolor="#D01F3C"><font color="ffffff" face="arial">Time</td>
        <td bgcolor="#D01F3C"><font color="ffffff" face="arial">Status</td>
        <td bgcolor="#D01F3C"><font color="ffffff" face="arial">Tracking #</td>
        <td bgcolor="#D01F3C"><font color="ffffff" face="arial">Notes</td>
        </tr>
<?
while($rowtrack = mysql_fetch_array($resulttrack)){
?>      <tr align="center">
        <td<font color="ffffff" face="arial"><? echo $rowtrack['TRACK_DATE'];?></td>
        <td<font color="ffffff" face="arial"><? echo $rowtrack['TRACK_TIME'];?></td>
        <td<font color="ffffff" face="arial"><? echo $status_codes[$rowtrack['TRACK_STATUS']];?></td>
        <td<font color="ffffff" face="arial"><? echo $rowtrack['TRACK_NUMBER'];?></td>
        <td<font color="ffffff" face="arial"><? echo $rowtrack['TRACK_NOTES'];?></td>
 
<?
}
?>
        </tr>
        </table>
<?
echo "<br>";
$result = mysql_query($query) or die(mysql_error());
echo "<table width='600' align='center'><tr><td width='100'><font color='ffffff' face='arial'>Quanity</td><td width='500'><font color='ffffff' face='arial'>Items on Order</td></tr>"; 
 
// Print out the contents of each row into a table 
while($row = mysql_fetch_array($result)){
?>
<tr><td width="100"><font color='ffffff' face='arial'><? echo $row['QTY'];?></td><td width="500"><font color='ffffff' face='arial'><? echo $row['DESCRIP'];?></td>
<?
}
?>
</tr></table><br>
<table width ="450" align="center"><tr><td align="center">
<?php
$myurl = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
echo "<p><a href=sendpage.php?myurl=" .$myurl. ">Click here if you would like to duplicate this order in the future.</a></p>";
?>
</tr></td></table>
User avatar
micknc
Forum Contributor
Posts: 115
Joined: Thu Jan 24, 2008 11:13 pm

Re: Why are my arrays duplicating

Post by micknc »

I got it worked out. It was this line.

Code: Select all

$querytrack = "SELECT LINEITM.SO_NO, TRACK.SO_NO, TRACK.TRACK_STATUS, TRACK.TRACK_DATE, TRACK.TRACK_TIME, TRACK.TRACK_NOTES, TRACK.TRACK_NUMBER FROM LINEITM, TRACK WHERE LINEITM.SO_NO = TRACK.SO_NO AND LINEITM.SO_NO=$id";
 
Every time it called a new so from lineitm it put in a return from track. It didn't need to be near as complicated as the SO_NO was in track as well.

All i needed:

Code: Select all

 
$querytrack = "SELECT * FROM TRACK WHERE TRACK_SO_NO=$id";
 
Learning little by little.
Post Reply