Crays
Crays

Reputation: 2508

Mysql fetch array, table results

i'm pretty new to this and not sure how should i do it,

I've got a database with a column called "names"

how can i make it display in so?

  <tr>
  <td width="270px">Henry</td>
  <td width="270px">Jeffrey</td>
  <td width="270px">Hansel</td>
  </tr>

  <tr>
  <td width="270px">Michelle</td>
  <td width="270px">Jackson</td>
  <td width="270px">Ivan</td>
  </tr>

I only know how i should do it if the records goes one after another vertically.

  $result = mysql_query('SELECT * FROM member');

  while($row = mysql_fetch_array($result))
  {
  echo'
  <tr>
  <td width="270px">'.$row['names'].'</td>
  <td width="270px">Jeffrey</td>
  <td width="270px">Hansel</td>
  </tr>';

Kinda stucked here...

Sorry i forgot to put this.

what i want is that it should loop the tags along. So i can have a 3 column table with infinite rows.

what bout this one? What if i want this to loop instead?

<tr>
<td><img src="images/ava/A.png" /></td>
<td>A</td>
<td width="2px" rowspan="3"></td>
<td><img src="images/ava/B.png" /></td>
<td>B</td>
</tr>


<tr>
<td>A</td>
<td>B</td>
</tr>

Upvotes: 3

Views: 11177

Answers (6)

Starx
Starx

Reputation: 79069

You know accomplish this by assigning the row count before you start the variable and few flags to know initialized loop or started/ended loop.

$i = 1;
$initFlag = false;
$flag = "closed";
while($row = mysql_fetch_array($result)) {
    if($i%3 == 0) $initFlag = false;
    if($flag == "closed" && ($i == 1 || $i % 3 == 1)) { 
        echo "<tr>"; $flag = "started"; $initFlag = true; 
    }

    echo '<td width="270px">'.$row['names'].'</td>';

    if(!initFlag && $flag == "started" && $i % 3 ==0) { 
        echo "</tr>"; $flag = "closed"; 
    }


    $i++;
}

Upvotes: 1

KyleWpppd
KyleWpppd

Reputation: 2030

So most of these answers are going for the kludge. First, if all you want is the name in your resultset, then only ask for it. So rather than going with:

$result = mysql_query('SELECT * FROM member');

Instead go with:

$result = mysql_query('SELECT names FROM member');

Also, everyone seems to be ignoring the three column request, and that can be satisfied using a modulo to tell when to break the rows. We'll do a little magic to make sure you always close the row tag.

$row_count = 0;
while($row = mysql_fetch_array($result))
  {
  if( $row_count % 3 == 0 )
    {
       echo '<tr>';
    }
    echo '<td width="270px">'.$row['names'].'</td>';
  if( $row_count % 3 == 0 )
    {
       echo '</tr>';
    }
  $row_count++; 
  }

I don't want to get too picky about your schema, but if you have a choice, it's better to name the table a plural like members rather than member, since you have a collection of rows, each one representing one 'member'. And unless your members have multiple names that column could probably best be called 'name' instead.

Upvotes: 0

Nathan
Nathan

Reputation: 12314

Lets say you have an array of the names called $names, then you could do what you wanted with code that looks something like this:

<tr>
<?php

foreach($names as $name) {
    print "<td>$name</td>";
}
?>
</tr>

That would put all the names on the same row.

In order to start a new row say, every 3 names, you could put an if statement in the for loop like this:

// assume we have these variables available.
$row_number;
$max_cols = 3;

// this goes at the top of the foreach
if($row_number % $max_cols == 0) {
    print '</tr><tr>';
}

Upvotes: 1

Paul
Paul

Reputation: 141937

$row will update on each iteration of the loop:

$result = mysql_query('SELECT * FROM member');

echo '<tr>';

for($i = 0; $row = mysql_fetch_array($result); $i = ($i+1)%3){
    echo '<td width="270px">'.$row['names'].'</td>';
    if($i == 2)
        echo '</tr><tr>';
}

echo '</tr>';

Upvotes: 3

MD Sayem Ahmed
MD Sayem Ahmed

Reputation: 29186

$result = mysql_query('SELECT * FROM member');

echo '<tr>;

while($row = mysql_fetch_array($result))
{

    echo '<td width="270px">'.$row['names'].'</td>';
}

echo '</tr>';

Upvotes: 1

Tudor Constantin
Tudor Constantin

Reputation: 26871

$result = mysql_query('SELECT * FROM member');
  echo'<tr>'
  while($row = mysql_fetch_array($result))
  {

  echo '<td width="270px">'.$row['names'].'</td>';
  }

  echo '</tr>';

Upvotes: 2

Related Questions