2014-01-27 3 views
-1

У меня есть массив, который я пытаюсь отобразить в 4 строках по 5, но он не будет отображаться правильно. С кодом у меня он отображается какphp array не отображается прямо в таблице

<table> 
<tr> 
<td></td> 
</tr> 
<tr> 
<td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>... 
</tr> 
</table> 

вместо

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

Тест кода я использую приведен ниже. Какие-либо предложения?

<?php 
$field = 0; 
echo "<table><tbody>"; 
mysql_connect("localhost", "xxxx", "xxxx") or 
die("Could not connect: " . mysql_error()); 
mysql_select_db("xxx"); 

$result = mysql_query("SELECT item_id FROM user_item"); 

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
{ 
if ($field % 5 == 0) echo '<tr>'; 
echo '<td><img src="img/items/'. intval($row["item_id"]). '.png"></td>'; 
if ($field % 5 == 4) echo '</tr>'; 
$field++; 
} 
if ($field % 5 != 0) echo '</tr>'; 
echo "</tbody></table>"; 
} 
// <img src="img/items/'. intval($sprite). '.png"> 
mysql_free_result($result); 
?> 
+0

По какой-либо причине у вас есть два '{' в начале цикла while? –

+0

Извините, не осознал, что сделал это. – user3078244

ответ

1

попробовать

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
{ 
    if ($field % 5 == 0) 
     echo '<tr>'; 

    echo '<td><img src="img/items/'. intval($row["item_id"]). '.png"></td>'; 

    if ($field % 5 == 4) 
    { 
     echo '</tr>'; 
     $field = 0; 
    } 
    else 
     $field++; 
} 
+0

отлично поработал – user3078244

0
if ($field % 5 != 0) echo '</tr>'; 

echo "</tbody></table>"; 

должен быть вне цикла.

Причина, по которой конечная таблица не должна находиться в цикле. (повторяется) , и как важно, вы преждевременно завершаете строку.

Смежные вопросы