2011-10-29 12 views
0

私は、複数のフォームは、whileループで選択します:forループ内の複数の選択は、フォームに戻ったとき、それはデータだ失っている

$bewerking_id[$i] = array(); 
$bewerking_id[$i] = $_POST['name_bewerking_id'][$i]; 

if(isset($bewerking_id_temp[$i])) 
{ 
    foreach($bewerking_id_temp[$i] as $temp[$i]) 
    { 
     array_push($bewerking_id[$i], $temp[$i]); 
    } 
} 
:フォームが送信されると

while ($row_i = mysql_fetch_array($res_i)) 
{ 
    $i++; 

    // maak select name 
    $name_bewerking_id = 'bewerking_id'.$i; 
    ?> 

    <tr valign="top"> 
     <td> 
     <select name="<?php echo $name_bewerking_id ?>[]" multiple="multiple" size="2"> 
     <?php 
      $sql = "SELECT id, bewerking FROM bewerkingen ORDER BY bewerking ASC"; 
      $res = mysql_query($sql,$con); 
      while ($row = mysql_fetch_assoc($res)) 
      { ?> 
       <option value="<?php echo $row['id']; ?>"><?php echo $row['bewerking']; ?></option> 
     <?php } ?> 
     </select> 
     </td> 
    </tr> 
<?php 
} 

形態に戻っ:

for ($i = 0; $i <= $aantal_regels_corr; $i++) 
{ 
    // maak select name 
    $name_bewerking_id = 'bewerking_id'.$i; 
    ?> 

    <tr valign="top"> 
     <td> 
     <select name="<?php echo $name_bewerking_id ?>[]" multiple="multiple" size="2"> 
     <?php 
      $sql = "SELECT id, bewerking FROM bewerkingen ORDER BY bewerking ASC"; 
      $res = mysql_query($sql,$con); 
      while ($row = mysql_fetch_assoc($res)) 
      { ?> 
       <option <?php if(isset($bewerking_id[$i]) && in_array($row['id'], $bewerking_id[$i])){ echo 'selected="selected"'; } ?> value="<?php echo $row['id']; ?>"><?php echo $row['bewerking']; ?></option> 
     <?php } ?> 
     </select> 
     </td> 
    </tr> 
<?php 
} 

形に戻る(他のフィールドのいずれかが充填されていない)町senオプションは失われ、再度選択されません。

どこが乱れましたか?

答えて

0

あなたはこの識別子'name_bewerking_id'

でPOSTデータを読み込むが、選択名はあなたが3つの異なるページ間でフォーム情報を渡していると仮定した場合、あなたは$ _SESSIONを使用する必要があります$name_bewerking_id = 'bewerking_id'.$i

+0

また、選択名の末尾に「[]」を追加してください...なぜですか? – simopisto

+0

これは配列なので[]を追加しましたが、[]を除いた同じ結果です。私は識別子を変更しました。 did not work – Muiter

0

<?php echo $name_bewerking_id ?>で与えられますそのための変数。通常のPHP変数はページ間で渡すことはできませんが、$ _SESSION変数のみが渡されます。例えば

ページ1

<form ...> 
    <input name="text1" type="text" /> 
    <input type="submit" /> 
</form> 

ページ2

// must start the session before session variables can be used 
start_session(); 

$inputTextBox1 = $_SESSION["textBox1"] = $_POST["text1"]; 

ページ3

<?php start_session(); ?> 
<html> 
    ... 

    <form ...> 
     <select> 
      <?php while ... { ?> 
       <option <?php if(!empty($_SESSION["textBox1"])) { echo "selected=\"selected\""; } ?>>Some Text</option> 
      <?php } // End while ?> 
     </select> 
    </form> 

    ... 
</html> 
+0

コードは同じページにあります。 – Muiter

関連する問題