0

この2つの配列を処理する形式で取得しました。ただし、配列の1つだけから出力を取得することしかできません。以下のサンプル:

<inputs id="location" type="text" name="data[]" value=""/>
<input id="shipval" type="text" name="data[][id]" value=""/>

そして、PHPの部分は以下のとおりです。

foreach ($_POST ["data"] as $id => $subs) {       

            foreach ($subs as $key=>$sub) {

                $subcategory = $sub;

                if($subs['id']=="$subcategory"){
                    echo $sql = " insert into x(kodLebuhraya,kodSeksyen) values ('".$subs['id']."','".$sub."')";echo "<br>";    
                }else{
                    //echo "hi2";
                    echo $sql = " insert into x(kodLebuhraya,kodSeksyen) values ('".$subs['id']."','".$sub."')";echo "<br>";
                }

            }   

        }

これは、1つのshipvalに対して1つの場所を意味します。場所とshipvalの複数の入力フィールドがあります。どちらが間違っているか教えてくれませんか。よろしくお願いします。

4

5 に答える 5

5

したがって、基本的には、場所と出荷をペアで渡す必要があります。

HTMLでこの構造を試してください:

<label>Set One</label>
<input class="location" type="text" name="data[location][]" value=""/>
<input class="shipval" type="text" name="data[shipval][]" value=""/>
<label>Set Two</label>
<input class="location" type="text" name="data[location][]" value=""/>
<input class="shipval" type="text" name="data[shipval][]" value=""/>
<label>Set Three</label>
<input class="location" type="text" name="data[location][]" value=""/>
<input class="shipval" type="text" name="data[shipval][]" value=""/>

そして、PHP用のこのコード:

  foreach ($_POST['data']['location'] as $key => $location) {       
        $shipVal = $_POST['data']['shipval'][$key];

        //now you have a pair of $location and $shipVal
        echo $location.' : '.$shipVal.'<hr>';

    }

名前のないインデックスの後に名前の付いたインデックスを使用することは避けてください。<input name="array[][named]" />ペアフィールドの1つが空の場合、フィールドの順序が失われる可能性があります。

于 2012-10-02T15:06:36.450 に答える
0

あなた<inputs id="location"の代わりに<input id="location"

また...多次元ではないためforeach ($subs as $key => $sub) {、エラーがスローされます。<inputs id="location" type="text" name="data[]" value=""/>だからそれをに変更してみてください<inputs id="location" type="text" name="data[][]" value=""/>

于 2012-10-02T15:00:01.440 に答える
0

shipval複数選択の場合、名前は角かっこで終わる必要があるため、入力の名前を変更する必要があります

于 2012-10-02T15:01:04.883 に答える
0

まず、inputsの代わりに書いていますinput

第二に、この行:

foreach ($subs as $key=>$sub) {

各変数を配列として扱いますが、場所は配列ではありません。

于 2012-10-02T15:04:31.270 に答える
0

$_POST['data'][0]アクセスしたいだけなので、ループの必要性はわかりませんでした。$_POST['data'][1]['id']

また、SQLが重複しているため、試してみることができます。

$sql = "INSERT INTO  x(`kodLebuhraya`,`kodSeksyen`) VALUES ('%s','%s')" ;
printf($sql,mysqli_real_escape_string($_POST['data'][0]),mysqli_real_escape_string($_POST['data'][1]['id']));

出力

INSERT INTO x(`kodLebuhraya`,`kodSeksyen`) VALUES ('A','B')

使用したフォーム

<form method="POST">
    A : <input id="location" type="text" name="data[]" value="" /> 
    B : <input id="shipval" type="text" name="data[][id]" value="" /> 
    <input  id="shipval" type="submit" name="submit" value="Submit" />
</form>
于 2012-10-02T15:07:36.823 に答える