triphis Posted May 5, 2007 Share Posted May 5, 2007 Hello everyone I am trying to figure out how to access the array returned from this function using the incremental approach ($i)... however $array[column][$i] doesn't seem to work... it just returns the first letter of that column's entry. I can't use the standard while($row = mysql_fetch_array($result)) for what I am doing: say that loop runs 6 times. I am filling a table with 10 cells always - pulling the remaining cells from a completely different query. Right now, my table is being constructed with only 6 cells SO I want to have a FOR loop, and then use that $i to get what I need from both queries. Anyway, all I am looking for is a description of the array returned, and how to access each column, and each row using increments. Thanks! Quote Link to comment Share on other sites More sharing options...
MadTechie Posted May 5, 2007 Share Posted May 5, 2007 can you do a <?php print_r($array); ?> and also show some code as we don't have much to work with Quote Link to comment Share on other sites More sharing options...
triphis Posted May 5, 2007 Author Share Posted May 5, 2007 Of course, I apologize for giving barely any info lol. Array ( [0] => 1 [id] => 1 [1] => jeantest [productcode] => jeantest [2] => True Religion [brand] => True Religion [3] => Micky Big T [style] => Micky Big T [4] => Denim [category] => Denim [5] => Wild Bill [colour] => Wild Bill [6] => 200 [cost] => 200 [7] => 300 [retail] => 300 [8] => 250 [sale] => 250 [9] => 0 [green] => 0 ) Quote Link to comment Share on other sites More sharing options...
MadTechie Posted May 5, 2007 Share Posted May 5, 2007 i don't seam to see the problem, why not use echo $array[$i] or a foreach (loop) Quote Link to comment Share on other sites More sharing options...
triphis Posted May 5, 2007 Author Share Posted May 5, 2007 I guess I am having an understanding-block. I thought I could just ask one question and magically I would figure it all out haha. However, I now see that I need more help, so I will share my entire problem. Okay, so I am having a loop build the following table: The cyan cells are filled with content from the main loop, while the red cell is the "Feature Item" and pulled from a different query. The code for the table loop is: function showGrid($feature) { $featureresult = @mysql_query("SELECT * FROM matrix WHERE productcode = '$feature' LIMIT 1"); $featureItem = mysql_fetch_array($featureresult); $otherresult = @mysql_query("SELECT * FROM matrix WHERE productcode != '$feature' ORDER BY rand()"); $otherItems = mysql_fetch_array($otherresult); ?> <center> <table border="1"> <tr> <?php $upper=1; $int = 0; while($otherItems = mysql_fetch_array($otherresult)) /////// this is where the problem is!!! { if($upper==1) { if($int==2) { echo "<td rowspan='2' colspan='2' width='250' height='304' align='center'>" . $featureItem[brand] ."</td></tr><tr>"; $int++; } elseif($int==4) { echo "<td width='125' height='152' align='center'>" . $otherItems[brand] ."</td></tr>"; $upper=0; $int++; } else { echo "<td width='125' height='152' align='center'>" . $otherItems[brand] ."</td>"; $int++; } } else { if($int%4 == 1) { echo "<tr>"; } echo "<td width='125' height='152' align='center'>" . $otherItems[brand] ."</td>"; if($int%4 == 0) { echo "</tr>"; } } }?> </tr> </table> </center> <?php } //end function SHOWGRID Okay, so as you can see above, the table loop is BASED off the results from the OTHER (non-feature) items. However, if there are only 3 items on this page, 2 non-feature, 1 feature... the table will only create 2 cells (because it will never reach the third iteration of the loop). I would LIKE to convert that while statement to for($i=0; $i < $num; $i++) where $num = mysql_num_rows($otherresult) + 1; (to include the feature). So that is why I wanted to use the incremental approach for my array... Any better ideas? Thanks! Quote Link to comment Share on other sites More sharing options...
MadTechie Posted May 5, 2007 Share Posted May 5, 2007 i still think i am missing something!! <?php //<---Added********************* //**************** function showGrid($feature) { $featureresult = @mysql_query("SELECT * FROM matrix WHERE productcode = '$feature' LIMIT 1"); $featureItem = mysql_fetch_array($featureresult); $otherresult = @mysql_query("SELECT * FROM matrix WHERE productcode != '$feature' ORDER BY rand()"); $otherItems = mysql_fetch_array($otherresult); ?> <center> <table border="1"> <tr> <?php $upper=1; $int = 0; //CHANGED BELOW********************* $num = mysql_num_rows($otherresult) + 1; //(to include the feature). for($i=0; $i < $num; $i++) //while($otherItems = mysql_fetch_array($otherresult)) /////// this is where the problem is!!! //CHANGED ABOVE********************* { $otherItems = mysql_fetch_array($otherresult); if($upper==1) { if($int==2) { echo "<td rowspan='2' colspan='2' width='250' height='304' align='center'>" . $featureItem[brand] ."</td></tr><tr>"; $int++; } elseif($int==4) { echo "<td width='125' height='152' align='center'>" . $otherItems[brand] ."</td></tr>"; $upper=0; $int++; } else { echo "<td width='125' height='152' align='center'>" . $otherItems[brand] ."</td>"; $int++; } } else { if($int%4 == 1) { echo "<tr>"; } echo "<td width='125' height='152' align='center'>" . $otherItems[brand] ."</td>"; if($int%4 == 0) { echo "</tr>"; } } }?> </tr> </table> </center> <?php } //end function SHOWGRID Quote Link to comment Share on other sites More sharing options...
triphis Posted May 5, 2007 Author Share Posted May 5, 2007 That works just perfectly thank you! I guess what I learned here today is that everytime $otherItems = mysql_fetch_array($otherresult); is called, it advances to the next row, is that correct? I was thinking that no matter how many times you call that, it would fetch the exact same array that the original result came up with Quote Link to comment Share on other sites More sharing options...
MadTechie Posted May 5, 2007 Share Posted May 5, 2007 your right, yeah when i started that logic caugth me, but you sql statement was used and your using a pointer to it but yep you got it now good luck and remember to click solved Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.