1

私はPHPが初めてで、基本的に2つのオプションで構成されるhtmlフォームを作成しています。最初に、クライアントは一連のチェックボックス(機器の一部)を選択し、選択した各チェックボックスの量を書き込みます...

<td><input id="11.11.015.0002" name="pecas[]" type="checkbox" value="11.11.015.0002 - BATERIA CHUMBO ACIDO 6V/4AH" /></td>
<td><input name="qntd[]" size="7" type="text" /></td>

そしてPHPで:

if(isset($pecas))
    {
    $mensagem .= "Peças Selecionadas:<br /><br />";
    }
else {
    echo "<script>alert('Selecione as Peças Desejadas!'); location.href='http://www.lyuz.com.br/pecas/erro';</script>";
    exit;
}
    foreach ($pecas as $pecas_s) {
    } $mensagem .= " - ".$pecas_s."<br />";

これにより、選択されたすべてのチェックボックス (パーツ) が得られました。現在、これらの選択されたチェックボックスに関連付けられている input_text (量) のみを取得しようとしています..

私は立ち往生しています。ヘルプ。

4

3 に答える 3

0

各要素の名前にキーを指定します。pecas[1]数字を使用し、それがに対応していることを確認してくださいqntd[1]。次に、配列の1つをループすると、キーは他の配列でも同じになります。例えば:

<?php
$count = 0;

foreach($itemList as $item){
    echo "<tr>\n";
    echo "  <td><input type='checkbox' id='{$item['id']}' name='pecas[{$count}]'></td>\n";
    echo "  <td><input type='test' id='{$item['id']}' name='qntd[{$count}]'></td>\n";
    echo "</tr>\n";
    $count++;
}

3 つのチェックボックスと数量ボックスがあり、1 番目と 3 番目のボックスはチェックされているが、2 番目のボックスはチェックされていないとします。投稿配列は次のようになります。

array(
    'pecas'=> array(
        0 => 'some value', //notice, no 1 key because the second checkbox was not checked.
        2 => 'some other value'
        ),
    'qntd' => array(
        0 => 'some qntd',
        1 => '' //1 was not checked, so nothing should have been entered in the second textbox.
        2 => 'some other qntd'
        )
    );

キー0(最初のチェックボックス) と2(3 番目) は「pecas」配列に存在し、キー0と「qntd」配列に対応します2。次に、次のようにデータをループできます。

//check that at least one checkbox was checked
if(!empty($_POST['pecas'])){
    //loop over the checkboxes getting key ($k) and value ($v).
    foreach($_POST['pecas'] as $k=>$v){
        //display a message
        echo "Pecas {$v} ({$k}) was checked with a qntd of {$_POST['qntd'][$k]}<br>";
    }
}
于 2013-08-21T18:56:37.967 に答える
0

変化する

foreach ($pecas as $pecas_s) {
   $mensagem .= " - ".$pecas_s."<br />";
}

for($x = 0; $x < count($pecas); ++$x) {
    $mensagem .= " - ".$pecas[$x]. ": " . $qntd[$x] . "<br />"; //Example

}

$pecas ごとに $qntd があるように見えるので、$pecas のインデックスの場所を取得し、$qntd で同じインデックスの場所を取得するだけで済みます。

--

ただし、チェックボックスはチェックされている場合にのみ渡され、入力ボックスは常に渡されることを付け加えておきます。したがって、インデックスが一致しない不一致が発生する可能性があります。チェックボックスが選択されていない場合、JavaScript を使用して入力ボックスを無効にすることができます。

于 2013-08-21T18:56:54.907 に答える