2011-07-20 4 views
3

結果、私は「名前」私が作ることができる方法MySQLはテーブルが

と呼ばれる列を持つデータベースを持って、

私はそれを行う必要があるかどうかはわかりかなりこれに新しい、ないんだけど、配列を取得そうですね?

<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> 

レコードが1つずつ次々に移動する場合は、どのようにすればいいのか分かります。

$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>'; 

ちょっとここでstucked ...

私はこれを置くことを忘れて申し訳ありません。

私が望むのは、タグをループする必要があるということです。だから私は無限の行を持つ3列のテーブルを持つことができます。

これは何ですか?代わりにこれをループしたいのですが?

<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> 

答えて

3

$rowは、ループの各反復で更新されます:

$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>'; 
+0

おかげで、しかし、私はeditted私が何を意味するのか、にそれを置くのを忘れてました。 – Crays

+0

何を置くことを忘れましたか? – Paulpro

+0

私が望むのは、タグをループする必要があるということです。だから私は無限の行を持つ3列のテーブルを持つことができます。 – Crays

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

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

    echo '</tr>'; 
1
$result = mysql_query('SELECT * FROM member'); 

echo '<tr>; 

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

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

echo '</tr>'; 
1

は、あなたはあなたが望んで行うことができ、あなたが$namesと呼ばれる名前の配列を考えてみましょう次のようなコード:

<tr> 
<?php 

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

これは、すべての名前を同じ行に配置します。

// 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>'; 
} 
0

だから、これらの答えのほとんどはその場しのぎのために行くされています

新しい行を開始するためには、すべての3名は、あなたがこのようなforループでif文を置くことができる、と言います。まず、必要なのが結果セットの名前であれば、それを求めてください。だから、むしろ一緒に行くより:代わりに行く

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

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

また、誰もが3列の要求を無視しているように見える、それは破るためにとき教えて剰余を使用して満足することができます行。行タグを必ず閉じてください。それぞれ、私はあなたのスキーマについてあまりにもうるさい取得する必要はありませんが、あなたは選択肢を持っている場合は、行のコレクションを持っているので、それは、テーブルにmembersではなく、メンバーのように、複数の名前を付ける方が良いでしょう

$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++; 
    } 

1つは「メンバー」を表します。あなたのメンバーが複数ある場合を除き、namesその列は「名前」と呼ばれることをお勧めします。

1

これを実現するには、変数を開始する前に行数を割り当て、初期化ループまたは開始/終了ループを知るフラグをほとんど持たないことがわかります。

$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++; 
} 
+0

ドライランをテストしましたが、うまくいくはずです。 – Starx