2

50 を超える結果が返される MySQL クエリがあります。次に、結果を 3 行 3 列のテーブルに表示する必要があります。

このようなもの:

<table>
    <tr>
        <td>Content</td>                    
        <td>Content</td>                    
        <td>Content</td>                                        
    </tr>   
    <tr>
        <td>Content</td>                    
        <td>Content</td>                    
        <td>Content</td>                                        
    </tr>   
    <tr>
        <td>Content</td>                    
        <td>Content</td>                    
        <td>Content</td>                                        
    </tr>
</table>

私はこのようにPHPでそれを試しました:

$q = "SELECT name, address, content FROM mytable"; 
$r = mysqli_query($dbc, $q); 

while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
    $name   = $row['name'];
    $address = $row['address'];
    $content = $row['content'];

    //Create new output
    $output  = "<p>$name</p>";
    $output .= "<p>$address</p>";
    $output .= "<p>$content</p>";

    //Add output to array
    $mycontent[] = $output;     
}

次に、次のようにコンテンツ配列をテーブルに出力しています。

<tr>
    <td><?php echo $mycontent[0]; ?></td>                   
    <td><?php echo $mycontent[1]; ?></td>                   
    <td><?php echo $mycontent[2]; ?></td>                   
</tr>   
<tr>
    <td><?php echo $mycontent[3]; ?></td>                   
    <td><?php echo $mycontent[4]; ?></td>                   
    <td><?php echo $mycontent[5]; ?></td>                                       
</tr>   
<tr>
    <td><?php echo $mycontent[6]; ?></td>                   
    <td><?php echo $mycontent[7]; ?></td>                   
    <td><?php echo $mycontent[8]; ?></td>                                           
</tr>

このコードを使用すると、9 つのコンテンツしか表示できません。私の問題は、より多くのコンテンツを表示したいということです。ページネーションを使用してコンテンツを表示します。0-9、10-18、19-27 など。

注: ページネーションの部分を行うことができます。

誰かがこれについて正しい方向性を教えてくれることを願っています。

ありがとうございました。

4

5 に答える 5

3

次のようなものを試してください:

 echo "<table>";
 while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
 $name   = $row['name'];
 $address = $row['address'];
 $content = $row['content'];
 echo "<tr><td>".$name."</td><td>".$address."</td><td>".$content."</td></tr>";
 }
 echo "</table>";

この例では、クエリのすべての結果を表に出力します。一部の結果のみに制限したい場合は、SQL クエリを制限します。例えば:

 $q = "SELECT name, address, content FROM mytable limit 50"; 

TD の各コンテンツ、名前、アドレス、および TR の 3 つの mycontent(コンテンツ、名前、アドレス) を取得するには、次のようにします。

$c= mysql_query("select COUNT(name) from mytable");
$n=mysql_fetch_array($c);
$maxname= $n[0];
$i=0;
$tr=0;
echo "<table>";
while ($tr < $maxname)
{ 
echo "<tr>";
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC) and $i<$tr) {
$name   = $row['name'];
$address = $row['address'];
$content = $row['content'];
echo "<td>".$name." | ".$address." | ".$content."</td>";
$i++;
}
echo "</tr>";
$tr= $tr+3;
}
echo "</table>";
于 2013-03-16T14:21:43.450 に答える
1

このようなことを試してください。値を使いやすい連想配列に配置します。次に、ループします。

<?php
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
    $values[] = array(
        'name' => $row['name'],
        'address' => $row['address'],
        'content' => $row['content']
    );
}
?>
<table>
<?php
foreach($values as $v){
    echo '
    <tr>
        <td>'.$v['name'].'</td>
        <td>'.$v['address'].'</td>
        <td>'.$v['content'].'</td>
    </tr>
    ';
}
?>
</table>
于 2013-03-16T16:18:35.663 に答える
0

関数で使用する予定がある場合は、変数に格納するか、単に出力することができます。どちらにしても...

$q = "SELECT name, address, content FROM mytable"; 
$r = mysqli_query($dbc, $q); 

$str = "<table>";

while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
    $str .= "<tr>";
    $str .= "<td>" . $row['name'] . "</td>";
    $str .= "<td>" . $row['address'] . "</td>";
    $str .= "<td>" . $row['content'] . "</td>";
    $str .= "</tr>";
}

$str .= "</table>"

echo $str;

ほら!

于 2013-03-16T14:40:43.037 に答える
0

-loop を使用してfor-array を繰り返します$mycontent

$mycontent編集:最初に想定したものとは異なる方法で構築されていることに気付きました:

$h = "<table>"; // we are going to build the table in $h

$maxcount = count($mycontent); // get the number of values within the array 

for ($i = 0;$i < $maxcount;$i++) { // counting $i up from 0 to $maxcount -1 ...

   $h.= "<tr><td>{$mycontent[$i]}</td></tr>"; // build row

}

$h.= "</table>"; // close the table
echo $h; // echo it 

---> ライブ デモ: http://3v4l.org/g1E1T

于 2013-03-16T14:22:26.813 に答える