2012-03-20 9 views
0

私は以下のコードでフォームフィールドの3列のテーブルを作成しています。各行には3つの列があります。フィールドの総数が3の倍数でない場合、最後の行には空のフォームフィールドが残りの列に含まれません。配列からPHPテーブル生成の空白列を処理する

空白のフォームフィールドを使用して残りの列を完成させるにはどうすればよいですか?

<?php 
$listCount = count($col); 

for ($i = 0; $i < $listCount; ++$i) {     
    if($i % 3 == 0) { 
     echo '<tr class="list_row">';  
    } ?> 

    <td><input type="text" style="width: 190px;" name="inputCol1[]" value="<?php echo $col[$i] ?>" /></td> 
       
    <?php  
    if($i % 3 == 3) { 
     echo '</tr>';  
  } 
}   
?> 
+0

PHPをたくさん使って1行または2行のHTMLをエコーするだけで、それを 'echo 'して、開いているか閉じているすべてのPHPタグを使ってやります。 – Bojangles

+2

また、$ i%3は決して== 3でなければなりません。 –

+1

最初の視界ではほとんど私には見えますが、if($ i%3 == 3)からif($ i%3 == 2 ) '、あなたは3に等しいモジュロ結果を決して持たないでしょう(0,1,2のみ)。 – s3v3n

答えて

0

$i % 33になることはありませんよう

また
for ($i = 0; $i < $listCount; ++$i) { 
    ... 
} 
if (($i % 3) < 2) { 
    do { 
    echo "<td>...</td>"; 
    $i++; 
    } while ($i % 3 != 2); 
} 

は、あなたの質問に以下のコメントを見てみましょう。

注:あなたがしている場合、注意点として私は本当に1すてきな条件/ループ内ifdoを組み合わせなければならないが、それはそのために手遅れ、これはすべき少なくとも仕事...

+0

Thx。完璧な意味合いを持つ。ちょうどそれを試してみるともう1列は作成されますが、3番目の列はまだ空白です。 if($ i%3 == 2)も変更されました。私が何かを欠いているかどうかを調べようとしていますか? – jsuissa

+0

@jsuissa私は少し論理的なミスをしました。これはおそらく最適化できるものの、今はうまくいくはずです。 – jeroen

+0

すべての努力に感謝します。まだ1つの列を生成しています。そこで最後の行を '} while($ i%3);に変更しました。 – jsuissa

-1

ちょうどそれが動作します

if($i % 3 == 2) { 
    echo '</tr><br />'; 
} 

if($i % 3 == 3) { 
    echo '</tr>'; 
} 

を変更。あなたはforループの後に最後の行を完了する必要が

+0

いいえ、エレメントの総数が3で割り切れない場合は、余分な空の '​​'エレメントを放出する必要があります。 –

+0

まあ、意味が間違って申し訳ありません、私は彼がちょうど残りのフィールドに空白にしたいと思った。 – xuqin1019