okay. your solution is not going to scale well, is it. if you have more than
nine items, you have to rewrite your code.
here is what I did:
I created this table in mysql from the command line as follows:
mysql> create table tabletest (
-> id int unsigned primary key not null auto_increment);
Query OK, 0 rows affected (0.47 sec)
mysql> desc tabletest;
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | | PRI | 0 | auto_increment |
+-------+------------------+------+-----+---------+----------------+
1 row in set (0.73 sec)
mysql> insert into tabletest values (NULL),(NULL), (NULL), (NULL), (NULL),
(NULL), (NULL),(NULL);
Query OK, 8 rows affected (0.48 sec)
Records: 8 Duplicates: 0 Warnings: 0
mysql> select * from tabletest;
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
+----+
8 rows in set (0.29 sec)
Then, I copy and pasted the script I wrote earlier to the list, made some
changes to match the database and got this:
<?
$link=mysql_connect();
mysql_select_db('tester',$link);
$query = 'SELECT* FROM tabletest';
$result = mysql_query($query,$link);
print <<<EOF
<html>
<head>
</head>
<body>
<table width="400" border=1>
EOF;
while(list($id)=mysql_fetch_row($result)) {
$items[]=$id;
}
reset($items);
For($i = 0; $i< (count($items)/3); $i +=1){
printf("<tr><td>%s</td><td>%s</td><td>%s</td></tr>",$items[$i],$items[$i+3],
$items[$i+6]);
}
?>
</table></body></html>
I put that into tabletest.php
view results at www.dingos.net/test/tabletest.php
this script will scale to ANY size listing. Here, the 3 stands for number of
columns. it can easily be cleaned up so that the number of columns is
dynamic, and I am sure there is a cleaner way of doing multiple columns,
without putting all the database stuff into an array, BUT, this shows you
how the code works, and what it looks like
On 4/9/01 3:06 PM, "DRN" <[EMAIL PROTECTED]> wrote:
>
> Lindsay Adams <[EMAIL PROTECTED]> wrote in message
> [EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
> | This is exactly what I sent you.
> | You have to realize that you can't print down one column, and then
> start a
> | new one.
> | You have to print across, left to right before you go down.
> | You have to modify the print statement to put it into a table, but
> that is
> | easy:
> |
>
> I have been playing about with this problem and I have come up with
> the following code. I know it is not right, because it isn't working
> :) but I think it is nearly what I want to do. I only want to have 3
> cells in the table, with a third of the data in each.
>
> Cheers for your help, Donald
>
> <? $db = mysql_connect("localhost", "user","pass");
> mysql_select_db("database",$db);
>
> $query = "SELECT * FROM TYPES";
> $result = mysql_query($query);
> $num_rows = mysql_num_rows($result);
>
> if ($result){
> $i=0;
> echo "<table border=1>\n<tr>\n<td width='30%'>";
> $r = mysql_fetch_array($result);
> $type_name = $r["type_name"];
>
> while ( $i < ($num_rows/3) ){
> echo "$type_name[$i] <br>\n"; $i++;
> }
> echo "</td><td width='30%'>\n";
> while ($i <= (2*$num_rows/3) ){
> echo "$type_name[$i] <br>\n"; $i++;
> }
> echo "</td><td width='30%'>\n";
> while ($i <= $num_rows ){
> echo "$type_name[$i] <br>\n"; $i++;
> }
> echo "</tr></table>\n";
>
> } else {
> echo " sorry no data found ";
> }
> ?>
>
>
> --
> Cheers, Donald :)
> __________________________________________
> As well as learning more,
> I learn that there is even more I don't know
>
> http://www.donaldrnoble.f2s.com
> ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
>
>