0

こんにちは、私の問題は、ユーザー入力に基づいてテーブルの行を動的に作成したことです。各行にはテキストボックス、comboxbox が含まれ、最初の 3 列からテキストボックスに値を入力すると、結果が表示されます。これらの選択された n 個の入力値を次のページに渡すと、最後の行の値のみが次のページに移動します。次のページの JavaScript コードへのすべてのループ値

<script>
 function getText3(row){
            var in1=document.getElementById('in1-' + row).value;
            var in2=document.getElementById('in2-' + row).value;
            var in4=document.getElementById('in4-' + row).value;
            var in3=(in1*in2*in4*30)/1000;
            document.getElementById('in3-' + row).value=in3.toFixed(2 );

    }

</script>

テーブルコード

<?php
$de=$_POST['text123'];
echo $de;
?>

<body>
<form action="kl2.php" method="post" >
       <table border="1" align="center" id="wr123">
    <tr>
        <th>WAS</th>
        <th>NO.</th>
        <th>AVERAGE</th>
        <th>APPROX</th>
    </tr>
    <?php

    for ($i = 1; $i <= $de; $i++) {
    ?>
    <tr>
        <td>Tube</td>
        <td>
            <select id="in4-<?php echo $i; ?>" name="t1" onclick="getText3(<?php echo $i; ?>)" >
                <option value="0">0</option>
                <option value="12">12</option>
                <option value="18">18</option>
                <option value="24">24</option>
                <option value="75">75</option>
            </select>
        </td>
        <td>
            <input type="text" name="t2" id="in1-<?php echo $i; ?>" onblur="getText3(<?php echo $i; ?>)" />
        </td>
        <td>
            <select name="a1" id="in2-<?php echo $i; ?>" onclick="getText3(<?php echo $i; ?>)" >
                <option value="0">0</option>
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
                <option value="5">5</option>
                <option value="6">6</option>
                <option value="7">7</option>
                <option value="8">8</option>
            </select>
        </td>
        <td>
            <input type="text" id="in3-<?php echo $i; ?>" name="username" readonly="readonly" />
        </td>
        <td>
    </tr>
    <?php } ?>
    <input type="submit" name="submit" />

    </table>
    </form>

kl2.php

<?php
@$a=$_POST['t1'];
echo @$a;
$sl = $_POST['t2'];
echo $sl;
$b=$_POST['a1'];
echo $b;
$c=$_POST['username'];
echo $c;
 ?>

送信をクリックすると、最後の行の値のみが表示されます。つまり、ユーザーが3、3行を入力すると、送信をクリックした後に最後の行のデータのみが表示されます

4

1 に答える 1

0

配列を渡す必要があります。PHP 側で配列として扱うことができます。

これを行うには、各入力で name="X" を name="X[]" に変更します。

例:

        <input type="text" name="t2" id="in1-<?php echo $i; ?>" onblur="getText3(<?php echo $i; ?>)" />

に:

        <input type="text" name="t2[<?php echo $i; ?>]" id="in1-<?php echo $i; ?>" onblur="getText3(<?php echo $i; ?>)" />

また、エラーを抑制するために php で @ を使用することは一般的に悪い考えです。

次のようなものを試してください:

  var_dump($_POST);

データがどのように届くかがわかります。

ヒント:

if (isset($_POST['t1']) {
   $t1_data = $_POST['t1'];
}

** 編集 **

次のようなことを試してください:

<?php

if (isset($_POST['submit'])) {

    $data_t1 = $_POST['t1'];
    foreach ($data_t1 as $key => $value) {

        echo 'T1: ' . $value . '<br />';
        echo 'T2: ' . $_POST['t2'][$key] . '<br />';
        echo 'Username: ' . $_POST['username'][$key] . '<br /><br />';

    }

}
?>
<html>
<head>
    <script>
        function getText3(row){
            var in1=document.getElementById('in1-' + row).value;
            var in2=document.getElementById('in2-' + row).value;
            var in4=document.getElementById('in4-' + row).value;
            var in3=(in1*in2*in4*30)/1000;
            document.getElementById('in3-' + row).value=in3.toFixed(2 );

        }
    </script>
</head>
<body>
<form action="" method="POST">
<table border="1" align="center" id="wr123">
    <tr>
        <th>WAS</th>
        <th>NO.</th>
        <th>AVERAGE</th>
        <th>APPROX</th>
    </tr>
    <?php

    for ($i = 1; $i < 4; $i++) {
    ?>
    <tr>
        <td>Tube</td>
        <td>
            <select id="in4-<?php echo $i; ?>" name="t1[<?php echo $i; ?>] onclick="getText3(<?php echo $i; ?>)" >
                <option value="0">0</option>
                <option value="12">12</option>
                <option value="18">18</option>
                <option value="24">24</option>
                <option value="75">75</option>
            </select>
        </td>
        <td>
            <input type="text" name="t2[<?php echo $i; ?>]" id="in1-<?php echo $i; ?>" onblur="getText3(<?php echo $i; ?>)" />
        </td>
        <td>
            <select name="a1[<?php echo $i; ?>]" id="in2-<?php echo $i; ?>" onclick="getText3(<?php echo $i; ?>)" >
                <option value="0">0</option>
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
                <option value="5">5</option>
                <option value="6">6</option>
                <option value="7">7</option>
                <option value="8">8</option>
            </select>
        </td>
        <td>
            <input type="text" id="in3-<?php echo $i; ?>" name="username[<?php echo $i; ?>]" readonly="readonly" />
        </td>
        <td>
    </tr>
    <?php } ?>
    </table>
    <input type="submit" name="submit" value="submit">
</form>
</body>
</html>
于 2013-05-25T15:35:33.760 に答える