Hi - was just wondering if anyone could help a php newbie

I'm trying to read in a list of items and display them in a table
What I would like to do is have a box of text to the left and one item from db alongside it followed by rows of three items

My micky mouse code is below - any help much appreciated

<?
include("conf/config.inc.php");

$p=$_GET['p'];

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query="SELECT * FROM `products` where `cat_id` = $p";
$result=mysql_query($query);

$num=mysql_numrows($result);

mysql_close();
?>

<table border='0'>
    <tr>
    <TD colspan="2" class="border" valign="top" width="390">
<div class="sectitle">Large Shades</div>

<div class="txt">
The Large Shade looks great as a pendant or you can <BR>
team it with a large base to create a stunning table lamp.<BR><BR> 
<b>Shade</b>: £00.00<BR>
<b>Shade with ceramic base</b>: £00.00<BR><BR>

Dimensions<BR>
<b>Shade</b>: height 20cm, diam 31cm<BR>

<b>Base</b>: height 50cm<BR>
(Shade and base combined: height 70cm)<BR><BR>

<b>Bulb</b>: 60W Max<BR><BR>
All products are great


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

  
  $name=mysql_result($result,$i,"name");
$description=mysql_result($result,$i,"description");
$price=mysql_result($result,$i,"price");
$sm_image=mysql_result($result,$i,"sm_image_url");
$lg_image=mysql_result($result,$i,"lg_image_url");


?>


      <td><?php echo $name; ?> <br /> <img src=<?php echo $sm_image;  ?>
    </td>
    
       </tr>  


<?php
$i++;

}

?>

</table>

Ok, what's your question? What's not working as expected?

Tables are a HTML element, not a PHP thing so you're not going to find help for them looking around PHP.net.

I'm trying to build a 3 column table and populate with data from db but at present I just get a single column using the code above

Member Avatar for Rhyan

Hi - was just wondering if anyone could help a php newbie

I'm trying to read in a list of items and display them in a table
What I would like to do is have a box of text to the left and one item from db alongside it followed by rows of three items

My micky mouse code is below - any help much appreciated

<?
include("conf/config.inc.php");

$p=$_GET['p'];

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query="SELECT * FROM `products` where `cat_id` = $p";
$result=mysql_query($query);

$num=mysql_numrows($result);

mysql_close();
?>

<table border='0'>
    <tr>
    <TD colspan="2" class="border" valign="top" width="390">
<div class="sectitle">Large Shades</div>

<div class="txt">
The Large Shade looks great as a pendant or you can <BR>
team it with a large base to create a stunning table lamp.<BR><BR> 
<b>Shade</b>: £00.00<BR>
<b>Shade with ceramic base</b>: £00.00<BR><BR>

Dimensions<BR>
<b>Shade</b>: height 20cm, diam 31cm<BR>

<b>Base</b>: height 50cm<BR>
(Shade and base combined: height 70cm)<BR><BR>

<b>Bulb</b>: 60W Max<BR><BR>
All products are great


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

  
  $name=mysql_result($result,$i,"name");
$description=mysql_result($result,$i,"description");
$price=mysql_result($result,$i,"price");
$sm_image=mysql_result($result,$i,"sm_image_url");
$lg_image=mysql_result($result,$i,"lg_image_url");


?>


      <td><?php echo $name; ?> <br /> <img src=<?php echo $sm_image;  ?>
    </td>
    
       </tr>  


<?php
$i++;

}

?>

</table>

my friend,

You are trying to do it the hard way. Let's say you have the following columns in your sql table: price, big_img, small_img, description

all you need to do is run it like this

$connect=mysql_connect('localhost', $user, $pass);
$selectdb=mysql_select_db('yourdb');
if (!$selectdb)
{echo mysql_error()}
$query= "SELECT price, big_img, small_img, description FROM mytable;";
$runquery = myslq_query($query);
$rows = mysql_num_rows($runquery);

// here starts the table. As you have the row number, you can use the for cycle. Still while is good enough. 

echo '<table id="mytable">';
for ($i=0; $i<$rows; $i++)
    {
     $result=mysql_fetch_array($runquery);
     echo '<tr>
      <td>'.$result['price'].'</td>
      <td>'.$result['big_img'].'</td>
      <td>'.$result['small_img'].'</td>
      <td>'.$result['description'].'</td>
    </tr>';
     }
echo '</table>';

That's all.

Let me clarify it for you so you can understand:

1. mysql_fetch_array loads into your variable an array, which can be accessed both using numeric keys, or using names as they appear into your mysql table. So - if you know the names of the mysql table coloumns, you can access the value using both $result or $result. Both are valid.

2. There is no need to create new variables to load the values from the result array into separate values, however if you feel comfortable to use it like this $price=$result - it is ok, however to me seems a bit of unnecessary effort.

3. The for cycle - that is the fun part - the cycle creates a <tr></tr> element with all table cells you need. Basicly - the more <td></td> elements you have the more coloumns you create. Thats all.

If you have some trouble, you can always ask again.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.