0
<form class="formp" action="" method="post" enctype="multipart/form-data" id="frm" name="wjd">
<input type="hidden" name="MAX_FILE_SIZE" value="2000000"/>
<p>Gerecht:</p><p>Prijs:</p><p>Plaatje:</p><p>Upload:</p>
<?php
$resultmenus = mysqli_query($dbc,"SELECT * FROM prijslijst WHERE menunaam='menu\'s'");
while($rowmenus = mysqli_fetch_array($resultmenus,MYSQLI_ASSOC)) {
 echo   "<input type=\"hidden\" name=\"id\" value=\"{$rowmenus['id']}\"/>";
 echo   "<input name=\"gerecht[]\" type=\"text\" size=\"30\" maxlength=\"30\" value=\"{$rowmenus['gerecht']}\"/>";
 echo   "<input name=\"prijs[]\" type=\"text\" size=\"5\" maxlength=\"5\" value=\"{$rowmenus['prijs']}\"/>";
 echo   "<img src=\"../{$rowmenus['plaatje']}\" /><input  size=\"1\" type=\"file\" name=\"file[]\" id=\"file\"/>";
}
<input type="submit" name="submit" value="verzend" />
</form>

これにより、非表示の入力タイプフィールドにエコーされたdbからIDが1〜5のフォームが出力されます。私の質問は、3行目にid3のファイルを1つだけアップロードし、残りが空の場合、そのIDのみを取得することは可能ですか?

$_POST['id']で取得しようとすると; 最後の値は5です。これはブラウザへの出力です。

<form id="frm" class="formp" name="wjd" enctype="multipart/form-data" method="post" action="">
<input type="hidden" value="2000000" name="MAX_FILE_SIZE">
<p>Gerecht:</p><p>Prijs:</p><p>Plaatje:</p><p>Upload:</p>
<input type="hidden" value="1" name="id">
<input type="text" value="Menu 1" maxlength="30" size="30" name="gerecht[]">
<input type="text" value="3.00" maxlength="5" size="5" name="prijs[]">
<img src="../images/plaatjes/mini_menu3.gif">
<input id="file" type="file" name="file[]" size="1">
<input type="hidden" value="2" name="id">
<input type="text" value="Menu 2" maxlength="30" size="30" name="gerecht[]">
<input type="text" value="6.00" maxlength="5" size="5" name="prijs[]">
<img src="../images/plaatjes/mini_menu2.gif">
<input id="file" type="file" name="file[]" size="1">
<input type="hidden" value="3" name="id">
<input type="text" value="Menu 3" maxlength="30" size="30" name="gerecht[]">
<input type="text" value="6.00" maxlength="5" size="5" name="prijs[]">
<img src="../images/plaatjes/mini_menu1.gif">
<input id="file" type="file" name="file[]" size="1">
<input type="hidden" value="4" name="id">
<input type="text" value="Menu 4" maxlength="30" size="30" name="gerecht[]">
<input type="text" value="7.00" maxlength="5" size="5" name="prijs[]">
<img src="../images/plaatjes/mini_menu3.gif">
<input id="file" type="file" name="file[]" size="1">
<input type="hidden" value="5" name="id">
<input type="text" value="Menu 5" maxlength="30" size="30" name="gerecht[]">
<input type="text" value="4.00" maxlength="5" size="5" name="prijs[]">
<img src="../images/plaatjes/mini_menu2.gif">
<input id="file" type="file" name="file[]" size="1">
<input type="submit" value="verzend" name="submit">
</form>

これは処理スクリプトです。

if(isset($_POST['submit'])) {
        if((array_search('', $_POST["gerecht"])!==false) or (array_search('', $_POST["prijs"])!==false)) { //1 or more field empty
        echo "<span class=\"error\">Please fill in all fields</span>";
        exit();
    }else{//field filled in



       foreach ($_FILES['file']['name'] as $i => $name) {

            if ($_FILES['file']['error'][$i] == 4) { // no upload continue
                continue;
            }
            if ($_FILES['file']['error'][$i] == 0) {

                echo $_POST['id'];


            }//end else error 0

       }//end foreach 
    }//end filled in forms

}else{ //submit button clicked


}
4

2 に答える 2

1

あなたが持っている

<input type="hidden" value="1" name="id">
<input type="hidden" value="2" name="id">

5番は最後の番号であり、前の番号を上書きしているため、5番しか取得できません。

入力テキストと同じように、name属性は異なっている必要があります。

を実行して、var_dump($_POST);POSTされているすべてのものを確認します。

于 2012-06-01T19:37:21.880 に答える
1

フォーム要素名を再利用する場合(配列ではない場合)、最後の値が前の値を上書きします。あなたがどのように持っているかを見てください

<input type="hidden" value="5" name="id">

代わりに試してください

<input type="hidden" value="5" name="id[]">

そしてそれらを繰り返します。

于 2012-06-01T19:40:10.807 に答える