2017-08-30 103 views
0

我有問題越來越從下拉列表使用的foreach $數據,$根據數據庫 D中產生的值的代碼是這樣的獲得價值笨

<table> 
    <thead> 
     <th>ID</th> 
     <th>Action</th> 
    </thead> 
    <tbody> 
     <?php 
      foreach ($data as $d) { 
     ?> 
     <tr> 
      <td><?php echo $d->id; ?></td> 
      <td> 
       <select name="option" id="option"> 
        <option value="A" selected>A</option> 
        <option value="B">B</option> 
       </select> 
      </td> 
     </tr> 
    <?php } ?> 
</tbody> 

我如何根據在桌上顯示的數據得到下拉值?

如果有3個數據顯示(這意味着3名同名和id下拉),我得到3個值的每個數據?

編輯:總之,我要發到我的控制器的數據是: - 從選擇下拉列表 值 - 每行,所以我可以用它爲我的查詢後從下拉列表值相結合的ID值

注:我想在的foreach使用該

$x=1; 


$x++; 

name/id="option<?php echo $x;?>" 

這對於每個錶行

<input type="hidden" id="id<?php echo $x; ?>" name="id<?php echo $x; ?>" value="<?php echo $d->id; ?>"> 

它的工作原理,但我認爲還是有更好的方式爲這個

+1

你能否詳細說明這個問題一點?我不確定您是在詢問如何使用正確的數據填充選項,或者如何獲取所選選項的值。 –

+0

@ da39a3ee我編輯它,也許它可以幫助一點,對我的壞英語感到抱歉 – Teletubbies

+0

我編輯了我的答案。你是這個意思嗎?有可能是更復雜的,「乾淨」的使用庫,但在基本的PHP應該是這樣的答案。:) –

回答

1

如果我理解正確的問題,下面是正確執行select元素與foreach循環創建列表項。

<select name="foo"> 
    <option value="0">-------</option> 
    <?php 
     foreach($foo as $row) 
      echo '<option value="'.$row->DataID.'">'.$row->Data.'</option>'; 
    ?> 
</select> 
+0

謝謝你的迴應,但我使用foreach循環否爲下拉列表元素,但對於錶行,並且每行包含與數據庫中的數據一起生成的下拉列表 也許我的解釋不好,抱歉 – Teletubbies

+0

@Teletubbies它聽起來像你需要一個雙重嵌套的foreach循環。一個用於表格行,另一個用於select元素。除非我看到SQL查詢,否則我無法確定。 – Hossam

1

因此,假設您的數據是在一個數組中構造的,例如

$data = [ 
    "A" => [ 
     "id" => 1, 
     "values" => [ 
      "lorem", 
      "ipsum", 
      "donec" 
     ] 
    ], 
    "B" => [ 
     "id" => 2, 
     "value" => [ 
      "lorem", 
      "ipsum", 
      "donec" 
     ] 
    ], 
    "C" => [ 
     "id" => 3, 
     "value" => [ 
      "lorem", 
      "ipsum", 
      "donec" 
     ] 
    ], 
]; 

印刷陣列的下拉列表中會這樣

<form method="post" action="/url/to/post/form/to"> 
... 
    <?php foreach ($data as $row): ?> 
     <select name="options[<?php $row['id']; ?>]" id="option"> 
      <?php foreach ($row['values'] as $value): ?> 
       <option value="<?php echo $value; ?>"><?php echo $value; ?></option> 
      <?php endforeach; ?> 
     </select> 
    <?php endforeach; ?> 
... 
</form> 

這將導致三個選項下拉來完成; A,B和C 如果用戶選擇這些選項之一,形式張貼您可以讀出所選擇的選項爲:

... 
    foreach ($_POST['options'] as $option) { 
     var_dump($option); 
    } 
... 

注意:確保做到在球場上適當的驗證,它的值防止您的應用程序中不需要的,不希望的行爲。

參考資料:
https://www.codeigniter.com/user_guide/libraries/input.html
https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Sending_and_retrieving_form_data
https://www.w3schools.com/php/php_form_validation.asp
http://phpsec.org/projects/guide/2.html

+0

感謝您的迴應,但我使用foreach循環否爲下拉列表元素,但對於錶行,並且每行包含與數據庫中的數據一起生成的下拉列表 也許我的解釋不好,抱歉 – Teletubbies

+0

因此每行都包含一個下拉列表,您想要獲取該嵌套下拉列表的值? –