3

次の投稿変数があります。

$line_1_09
$line_1_12
$line_1_15
$line_1_18
$line_1_21
$line_2_09
$line_2_12
$line_2_15
$line_2_18
$line_2_21
$line_3_09
$line_3_12
$line_3_15
$line_3_18
$line_3_21

以前のフォームから、15 個の入力 (投稿) のうち 12 個が入力されていることがわかりました。12 は変数 $populatedrows に格納されます。

次に、新しいページにテーブルを作成したい

<table>
<?php for ($i=1; $i<=$populatedrows; $i++)
  {
?>
    <tr>
       <td>
         <input type="text" value="//first post with information//">
       </td>
    </tr>
<?php } ?>
</table>

したがって、この例では、$line_1_09$line_1_12が空の場合、最初のテーブル行入力は$line_1_15

そのため、テーブルが と等しくなるまで、次の利用可能な/入力されたポスト変数を「ループ」し続けます$populatedrows。これは、データを含むポスト変数の数に等しくなります。

私にとって奇妙な状況なので、どうすればいいのかよくわかりません。

4

4 に答える 4

2

空ではない $_POST 変数ごとに入力を作成したい場合:

    <?php
    foreach($_POST as $key => $value) //$key is e.g 'line_1_20'
    {
        // substr($key, 0, 5) == 'line_' checks if the $key starts with 'line_'
        if((substr($key, 0, 5) == 'line_') && !empty($value))
        {
        ?>
            <tr>
                <td>
                  <input type="text" value="<?php echo $value ?>">
                </td>
            </tr>
        <?php
        }
    }
    ?>

より少なくしたい場合は、すべての入力された $_POST:

    <?php
    $count = 0; //count rendered fields
    foreach($_POST as $value)
    {
        if(!empty($value))
        {
        ?>
            <tr>
                <td>
                  <input type="text" value="<?php echo $value ?>">
                </td>
            </tr>
        <?php
        $count++; //increase counter
        }

        if($count == $populatedrows) //if the coutner hits the requested amount break the loop
            break;
    }
    ?>
于 2013-04-24T11:26:15.507 に答える
1

少し醜い変数名を繰り返すことができます:-) http://php.net/manual/en/language.variables.variable.php

それぞれを実行して isset() をテストし、そうであれば出力します。

たとえば、いくつかの for ループをネストして、インデックス (1,2,3) および (9, 12, 15, 18, 21) を生成できます。次に、変数を取得します

$var_name = '$line_' . $i . '_' . $j;
echo ${$var_name};

9 -> 09 の $j の先頭のゼロを埋め込む必要があります

投稿データを反復処理することを検討することもできますが、ページに送信される投稿データの量または順序を変更すると、コードが壊れてしまいます。

データがテーブルの正しい順序になっていない場合は、それを配列に入れてから、後でテーブルの書き込みを行います。

于 2013-04-24T11:09:23.473 に答える
1

これを試して:

    <table>
    <?php for ($i=1; $i<=$populatedrows; $i++)
      {
       if(isset($_POST[$i])) {
    ?>
         <tr>
           <td>
             <input type="text" value="<?php echo $_POST[$i] ?>">
           </td>
        </tr>
    <?php }
} ?>
    </table>
于 2013-04-24T11:15:52.837 に答える