2016-12-02 65 views
1

我遇到了問題以從表單中獲取正確的數組值。從POST數組到另一個頁面的最後一個值

我有代碼,我調用窗體選項值3次。這是在數據庫中定義的。我有一個例子,現在什麼是數據庫如下圖:

enter image description here

當我按下按鈕「亞米級」重定向到另一個頁面,是給回聲是什麼傳遞數組。

teste.php

<?php 
    $option = isset($_POST['corp_resp']) ? $_POST['corp_resp'] : false; 
    if ($option) { 
     print_r ($_POST['corp_resp']); 
    } else { 
    echo "task option is required"; 
    exit; 
    } 

輸出給定:

Array ([0] => 0.75) 

輸出我需要得到:

echo("<tr> 

    <td align=\"center\" bgcolor='FFFFFF'>$id</td> 
    <td align=\"center\" bgcolor='FFFFFF'> 
     <form id=\"teste\" method=\"post\" action=\"teste.php\"> 
     <select name='corp_resp[]'\>; 
      <option value=\"0\">0</option>; 
      <option value=\"0.05\">0.05</option>; 
      <option value=\"0.1\">0.1</option>; 
      <option value=\"0.15\">0.15</option>; 
      <option value=\"0.20\">0.20</option>; 
      <option value=\"0.25\">0.25</option>; 
      <option value=\"0.30\">0.30</option>; 
      <option value=\"0.35\">0.35</option>; 
      <option value=\"0.40\">0.40</option>; 
      <option value=\"0.45\">0.45</option>; 
      <option value=\"0.50\">0.50</option>; 
      <option value=\"0.55\">0.55</option>; 
      <option value=\"0.60\">0.60</option>; 
      <option value=\"0.65\">0.65</option>; 
      <option value=\"0.70\">0.70</option>; 
      <option value=\"0.75\">0.75</option>; 
      <option value=\"0.80\">0.80</option>; 
      <option value=\"0.85\">0.85</option>; 
      <option value=\"0.90\">0.90</option>; 
      <option value=\"0.95\">0.95</option>; 
      <option value=\"1.0\">1</option>; 

     </select> 

     <br><br> 
     </center> 

     </form> 
0123:哪裏是形式

Array ([0] => 0.25 [1] => 0.50 [2] => 0.75) 

代碼

從按鈕的代碼:

echo ('<input type="submit" name="corp_resp[]" value="Submeter" class="link-style2" />'); 
+0

請學習現代的HTML和CSS。在世紀之交之前,佈局表被認爲是一個糟糕的主意。 'align'&'bgcolor'屬性和'centre'元素已經過時。 'br'元素不是用來僞造頁邊空白的。 – Quentin

回答

1

我們可以通過生成提高代碼的<select>小號動態地從數據庫:

<form id="teste" method="post" action="teste.php"> 

<?php 
$con = mysqli_connect("localhost","root","","database_name"); // ◄■ CONNECT TO DATABASE. 
$dat_menuid = mysqli_query($cnn,"select * from my_table") // ◄■ MENUIDs. 
         or die(mysqli_error($con)); 
$options = array("0.25","0.50","0.75"); // ◄■■ OPTIONS ARE STATIC (ALWAYS THE SAME). 
while ($row_menuid = mysqli_fetch_array($data)) // ◄■ DISPLAY <SELECT>s. 
{ echo "<select name='corp_resp&{$row_menuid["id"]}'>\n"; // ◄■■ CORP_RESP&1,CORP_RESP&2. 
    foreach ($options as $opt) // ◄■■ DISPLAY OPTIONS. 
    echo "<option value='$opt'>$opt</option>\n"; 
    echo "</select>\n"; // ◄■■ SELECT END. 
} 
?> 
     <br><br> 
     <input type="submit" value="SUBMIT"/> 
</form> 

說明:每個<select>的名稱爲 「corp_resp &」 和菜單ID(4,5,6),所以名稱是「corp_resp & 4」,「corp_resp & 5」,「corp_resp & 6」等。所有選擇具有相同的選項。注意前面的代碼從數據庫中獲取菜單ID,所以它將顯示與菜單ID一樣多的<select>

現在 「teste.php」 將插入這樣的:

<?php 
    if (isset($_POST)) { 
    foreach ($_POST as $key => $value) 
     { $cr = explode("&",$key); // ◄■■ SPLIT : [0]="CORP_RESP",[1]="1". 
     mysqli_query($con,"insert into my_table (menuid,corp_resp) " . 
             "values ('{$cr[1]}','$value')"); 
     } 
    } else { 
    echo "task option is required"; 
    exit; 
    } 
?> 

說明:$ _ POST所有名字都分裂,例如: 「corp_resp & 4」 變成$ CR [0]( 「corp_resp」 )和$ cr [1](「4」)。此號碼用作所選選項的ID。

+0

不是我需要的那種方式。 –

+0

你好@Jose Manuel,那$數據是用於哪個變量的?因爲沒有定義,你說的評論是爲了顯示選擇我認爲是$選項? –

+0

警告:mysqli_fetch_array()期望參數1爲mysqli_result,在C:\中給出的數組並給出該錯誤。 –

3

你只需要在形成一個選擇元素。

如果您希望將多個select元素的數據一起提交,那麼您需要將它們全部放在同一個表單中。

移動表格的開始和結束標籤,使它們圍繞整個表格。

+0

我只從哪個表單提交一個值。 Form1 = 0.25 Form2 = 0.5 Form3 = 0。75 –

+0

@ChristopheCosta是的,這就是爲什麼你有你描述的問題。 – Quentin

0

由於昆汀說你只有一個選擇,但你需要三個。 爲了實現你寫的東西,試着寫下類似的東西:

<table> 
    <tr> 
     <td> 
     <select name='corp_resp[0]' > 
      <option value="0.85">0.85</option> 
      <option value="0.90">0.90</option> 
      <option value="0.95">0.95</option> 
      <option value="1.0">1</option> 
     </select> 
     </td> 
    </tr> 
    <tr> 
     <td> 
     <select name='corp_resp[1]' > 
      <option value="0.85">0.85</option> 
      <option value="0.90">0.90</option> 
      <option value="0.95">0.95</option> 
      <option value="1.0">1</option> 
     </select> 
     </td> 
    </tr> 
    <tr> 
     <td> 
     <select name='corp_resp[2]' > 
      <option value="0.85">0.85</option> 
      <option value="0.90">0.90</option> 
      <option value="0.95">0.95</option> 
      <option value="1.0">1</option> 
     </select> 
     </td> 
    </tr> 
</table> 
+0

可以做動態選擇嗎? –

相關問題