1

in php forloop showing only one row from mysql database?In The forloop retrieve only one row from mysql database and for loop repeat that size row again and again when ever new product is entered?

Page Function

    <?php
if(is_array($_SESSION['cart'])){
echo '<tr bgcolor="#FFFFFF" style="font-weight:bold"><td align="center"><font style="font-family:Arial,Helvetica,sans-serif;  font-size:14px; color:#000;">Item Code</font></td><td align="center"><font style="font-family:Arial,Helvetica,sans-serif;  font-size:14px; color:#000;">Product Name</font></td>
<td align="center"><font style="font-family:Arial,Helvetica,sans-serif;  font-size:14px; color:#000;">Product Image</font></td>
<td><font style="font-family:Arial,Helvetica,sans-serif;  font-size:14px; color:#000;">Price</font></td>
<td><div><font style="font-family:Arial,Helvetica,sans-serif;  font-size:14px; color:#000;">Size</font></div></td>
<td><font style="font-family:Arial,Helvetica,sans-serif;  font-size:14px; color:#000;">Options</font></td></tr>';

 $max=count($_SESSION['cart'] );
 for($i=0;$i<=$max;$i++){
 $id=$_SESSION['cart'][$i]['id'];
 $q=$_SESSION['cart'][$i]['qty'];
 $product=get_product_name($id);
 $image=get_product_image($id);
 $ids=get_id($id);
 $itemcode=get_itemcode($id);
 $size=get_size($id);
 if($q==0) continue;

 ?>
 </table>


 <diiv style="float:left; margin-left:42px;"><font style="font-family:Arial,Helvetica,sans-serif;  font-size:15px; color:#000;">
 <?php echo $itemcode; ?>
 <input type="hidden" name="itemcode[]" value="<?php echo $itemcode?>" /></font></div><br />

 <div style="float: left;margin-left: 122px; margin-top: -14px;"><font style="font-family:Arial,Helvetica,sans-serif;  font-size:15px; color:#000;">
 <?php echo $product?>
 <input type="hidden" name="product[]" value="<?php echo $product?>" /></font></div><br />


<div style="float: left;margin-left: 387px;margin-top: -24px;"><font style="font-family:Arial,Helvetica,sans-serif;  font-size:15px; color:#000;">
<img name="image" id="image" src="admin/uploads/small0_<?php echo $image?>" width="150" height="150">
<input type="hidden" name="image[]" id="image"  value="<?php echo $image?>"  /> </font></div><br />

<div style="float: left;margin-left: 548px;margin-top: -147px;"><font style="font-family:Arial,Helvetica,sans-serif;  font-size:15px; color:#000;">
<?php echo get_price($id) ?>
<input type="hidden" name="price[]" id="price" value="<?php echo get_price($id)?>" /></font></div><br />

<?php //foreach ($size as $sizes) { ?>
<div style="float: left;margin-left: 625px;margin-top: -149px;"><font style="font-family:Arial,Helvetica,sans-serif;font-size:15px; color:#000;">
<?php echo $size; ?> 
</font><input type="hidden" name="size" value="<?php echo $size; ?>" /></font></div><?php //}?><br />

<div style="float: left;margin-left:686px;margin-top: -150px;"><a href="javascript:del(<?php echo $id?>)">
<input type="button" class="button5" value="Remove" /></a></div><br /> 
<hr style="width:800px" />  

<?php                   
}
?>

 <?php
 }
 else{
 echo "There are no items in your shopping cart!";
 }
 ?>

Size Query

function get_size($id){
$result=mysql_query("SELECT size FROM mywishlist order by id") or die("My Wish Size Problem"."<br/><br/>".mysql_error());
while($row=mysql_fetch_array($result)){
return $row['size'];
}}

 function get_size($id){
 $result=mysql_query("SELECT size FROM mywishlist Where pid='$id'") or die("My Wish   Size Problem"."<br/><br/>".mysql_error());
 while($row=mysql_fetch_array($result)){
 return $row['size'];
}}

Mywishlist Table Screenshot now see there are two sizes in the size column

Page Screenshot page screenshot

When I Used This Function

function get_size($id){

$result=mysql_query("SELECT size FROM mywishlist order by id") or die("My Wish Size Problem"."<br/><br/>".mysql_error());

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

return $size;

}

 <?php foreach ($size as $sizes) { ?>
<div style="float: left;margin-left: 625px;margin-top: -131px;">
<font style="font-family:Arial,Helvetica,sans-serif;font-size:15px; color:#000;">
<?php echo $sizes; ?> 
<font><input type="hidden" name="size" value="<?php echo $size; ?>" />
</font></div><?php }?><br />

Result After Using Array & Foreach Loop

enter image description here

  • 1
    am i blind or you dont use $id in getSize function? and you dont have WHERE in SELECT statement. – Bojan Kovacevic Mar 12 '13 at 09:29
  • [Please, don't use mysql_* functions](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php) in new code. They are no longer maintained [and are officially deprecated](https://wiki.php.net/rfc/mysql_deprecation). See the [red box](http://uk.php.net/manual/en/function.mysql-connect.php)? Learn about [_prepared statements_](http://en.wikipedia.org/wiki/Prepared_statement) instead, and use [PDO](http://php.net/pdo) or [MySQLi](http://php.net/mysqli) - [this article](http://php.net/manual/en/mysqlinfo.api.choosing.php) will help you decide which. – TNK Mar 12 '13 at 10:15

1 Answers1

0

change your function to:

function get_size($id){

$result=mysql_query("SELECT size FROM mywishlist order by id") or die("My Wish Size Problem"."<br/><br/>".mysql_error());

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

return $size;

}

Because in your function you only returned first row and return terminates the while loop.