2013-03-16 3 views
2

У меня есть запрос MySQL с более чем 50 результатами возврата. Теперь мне нужно отобразить результаты в таблице с тремя строками и тремя столбцами.Отобразить результат запроса в таблице

Что-то вроде этого:

<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 содержимого. Моя проблема в том, что я хочу отображать больше контента. Я собираюсь использовать pagination для отображения содержимого; что-то вроде 0-9, 10-18, 19-27 и т. д.

ПРИМЕЧАНИЕ: Я могу сделать разбивку на страницы.

Я надеюсь, что кто-то даст мне правильное направление для этого.

спасибо.

+1

просьба рассмотреть возможность принять ответ (нажмите галочку слева), если он на самом деле найти ответ на свой вопрос – michi

ответ

2

попробовать что-то вроде:

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

получить каждому контента, имя, адрес в ТД, и 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>"; 
+0

имя, адрес и содержание должно быть место в одном тд не в 3 тд – TNK

+0

вы имеете в виду вам таблицу, как это: каждый custermer в , и 3 custermers в каждом ? – BenB

+0

@TNK я отредактировал мой ответ, чтобы иметь имя, адрес и содержание в 1 TD. – BenB

0

Используйте for - цикл для перебора свой $mycontent -array:

EDIT: Я был проинформирован, что $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

+0

Я немного путаюсь с вашим кодом. Не могли бы вы объяснить это немного? – TNK

+0

@TNK: см. Мое редактирование. не стейсняйся спросить! – michi

+0

Зачем использовать цикл 'for', когда вы можете повторять результат с помощью' while'? – Kermit

0

Вы можете хранить в переменной, если и ¨R планирует использовать его в функции или вы можете просто распечатать его. В любом случае ...

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

Там вы идете!

+0

Только таблица печати – TNK

+0

Просто позвоните этому фрагменту кода. Он создаст для вас всю таблицу. –

+0

имя, адрес и содержание должны быть размещены в одном td не в 3 td – TNK

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> 
Смежные вопросы