如何使用数据库中的值创建PHP两列表?

时间:2011-09-04 14:40:20

标签: php mysql html-table

我想创建一个包含两列的名称表,其中的名称来自数据库,但我不知道如何......我需要帮助。

姓名:詹姆斯,约翰,保罗,彼得

这是我的代码:

<?php
$con = mysql_connect("localhost","root","");
if(!$con){
echo "Unable to connect DB";
}else{
    $db = mysql_select_db("persons",$con);
    echo "Connected";
}
echo "<table border='1'>";
$count = 0;
$sql = "SELECT * FROM tbl_names";
$q = mysql_query($sql);
while($res = mysql_fetch_array($q)){
$count++;
    echo "<tr>";
        for($i=1;$i<=2;$i++){
                echo "<td>{$res['id']}{$res['title']}</td>";
        }
    echo "</tr>";   
}
echo "</table>";
?>

我希望输出如下:

+-------+-------+
| James | John  |
+-------+-------+
| Paul  | Peter |
+-------+-------+

但我的代码返回:

+-------+-------+
| James | Jame  |
+-------+-------+
| John  | John  |
+-------+-------+
| Paul  | Paul  |
+-------+-------+
| Peter | Peter |
+-------+-------+

我需要你的帮助。

5 个答案:

答案 0 :(得分:2)

echo "<tr>";
while($res = mysql_fetch_array($q)){
    $count++;
    if (!($count % 2)){ echo "</tr><tr>"; }
    echo "<td>{$res['id']}{$res['title']}</td>";
}
echo "</tr>";

答案 1 :(得分:1)

一个功能

function sqlArr($sql){
  $ret = array();
  $res = mysql_query($sql) or trigger_error(mysql_error()." ".$sql);
  if ($res) {
    while($row = mysql_fetch_array($res)){
      $ret[] = $row;
    }
  }
  return $ret;
}

代码

mysql_connect("localhost","root","");
mysql_select_db("persons");
$data = sqlArr("SELECT * FROM tbl_names");
$data = array_chunk($data,2);

模板

<table border='1'>
<? foreach ($data as $row): ?>
  <tr>
  <? foreach ($row as $cell): ?>
    <td><?=$cell['id']?><?=$cell['title']?></td>
  <? endforeach ?>
  </tr>
<? endforeach ?>
</table>

答案 2 :(得分:1)

好吧,如果没有关系,并且该表仅用于布局:

echo '<div class="container">';
while($res = mysql_fetch_array($q)){
    echo '<div class="item">'.  $res['id'] . $res['title'] . '</div>';
}
echo '</div>';

和css:

.container { width: 400px; float: left; }
.container .item { width: 50%; float: left; height: someFixedHeight; }
// or 200px

无论如何,我倾向于仅使用表来显示实际表并避免将它们用于布局。你可以用div做任何你想要的东西(或者在这种情况下你也可以使用ul和li。当然它不是必须的,但通常它需要更少的HTML和搜索引擎优化的html内容比率需要考虑。如果你不我想要固定的高度,你可以像上面的td / tr一样包裹每一行。

答案 3 :(得分:0)

while($res = mysql_fetch_array($q)){
$count++;
    echo "<tr>";
        foreach($res as $val){
                echo "<td>{$val}</td>";
        }
    echo "</tr>";   
}

答案 4 :(得分:0)

while ($res = mysql_fetch_array($q)){

    if ($count % 2 == 0) {
        echo "<tr>";
    }

    echo "<td>{$res['id']}{$res['title']}</td>";

    if ($count % 2 == 0) {
        echo "</tr>";
    }

    $count++;
}

编辑:我应该更频繁地重新加载。