Как создать PHP двухколоночную таблицу со значениями из базы данных? - PullRequest
1 голос
/ 04 сентября 2011

Я хочу создать таблицу имен с двумя столбцами, где имена взяты из базы данных, но я не знаю, как ... Мне нужна помощь.

Имена: Джеймс, Джон, Пол, Питер

Вот мой код:

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

2 голосов
/ 04 сентября 2011
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 голос
/ 05 сентября 2011

хорошо, если нет никакого отношения, и таблица используется только для макета:

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, а для SEO соотношение html-контента - это то, что нужно учитывать.Если вам нужны фиксированные высоты, вы можете обернуть каждую строку, как в приведенных выше примерах td / tr.

1 голос
/ 04 сентября 2011

функция

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>
0 голосов
/ 04 сентября 2011
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++;
}

edit: я должен перезагружать чаще.

0 голосов
/ 04 сентября 2011
while($res = mysql_fetch_array($q)){
$count++;
    echo "<tr>";
        foreach($res as $val){
                echo "<td>{$val}</td>";
        }
    echo "</tr>";   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...