Как увеличить массив до следующей строки? Я делаю таблицу с надписями 3 широкими и десятью высокими. В результате я получаю три повторения в каждой строке. Как я могу перейти к следующей строке для каждой ячейки таблицы.
$i =0;
for ($i = 1; $i <= 3; ++$i){
while($row = mysql_fetch_array($result)){
$company = $row['company'];
$comp_strt = $row['comp_strt'];
$comp_city = $row['comp_city'];
$comp_state = $row['comp_state'];
$comp_zip = $row['comp_zip'];
$celldata= $company."<br>".$comp_strt."<br>".$comp_city.", ".$comp_state." ".$comp_zip;
if($i = 1){echo "<tr style='row-height: 5em;'><td>'".$celldata."'</td>";}
if($i = 2){echo "<td>'".$celldata."'</td>";}
if($i = 3){echo "<td>'".$celldata."'</td></tr>"; $i = 1;}
}}
Я бы сделал это:
$cellsPerRow = 3;
$i = 0;
echo '<table>';
while ($row = mysql_fetch_array($result)) {
if ($i % $cellsPerRow == 0) {
echo '<tr>';
}
// process $row and echo the table cell
if ($i % $cellsPerRow == $cellsPerRow - 1) {
echo '</tr>';
}
$i++;
}
if ($i > 0 && $i % $cellsPerRow != 0) { // finish off row if needed
while ($i % $cellsPerRow != 0) {
echo '<td></td>';
$i++;
}
echo '</tr>';
}
echo '</table>';
Это всегда даст вам правильную таблицу.
Проблема в том, что цикл while
не будет завершен, пока строки в mysql_fetch_array
не будут исчерпаны. Просто используйте цикл while
и приращение $i
внутри while
:
$i= 0;
while ($row = mysql_fetch_array($result)) {
// process the row into $celldata
if ($i==0 || $i%3==0) {
if ($i > 0) // close out existing row
// start a new row
}
// output cell data
$i++;
}
// Output a closing '</tr>' tag if $i > 0
Вы используете =
для проверки равенства. Вы должны использовать ==
if($i == 1){echo "<tr style='row-height: 5em;'><td>'".$celldata."'</td>";}
if($i == 2){echo "<td>'".$celldata."'</td>";}
if($i == 3){echo "<td>'".$celldata."'</td></tr>"; $i = 1;}
Вероятно, это не проблема, но это начало.
Если вы хотите нарисовать 3 метки рядом друг с другом, вам просто нужно вставить блок </tr><tr>
в нужное положение. У вас может быть только переменная, не требующая цикла for
:
$i = 0;
echo '<table><tr>';
while($row = mysql_fetch_array($result)){
if($i == 3) {
echo '</tr><tr>';
$i = 0;
}
$company = $row['company'];
$comp_strt = $row['comp_strt'];
$comp_city = $row['comp_city'];
$comp_state = $row['comp_state'];
$comp_zip = $row['comp_zip'];
$celldata= $company."<br>".$comp_strt."<br>".$comp_city.", ".$comp_state." ".$comp_zip;
echo "<td>$celldata</td>";
$i++;
}
echo '</tr></table>';
Итак, каждый раз, когда счетчик $i
достигает 3, он создает разрыв строки таблицы и устанавливает значение $i обратно в ноль, в результате получается 3 ячейки в строке.
избавиться от цикла for, если вы не хотите делать это три раза, ffs
mysql_num_rows
в условии дополнительного оператора if, который оборачивается вокруг всегоecho '<table>'; … echo '</table>';
,