2016-12-02 5 views
1

Ich habe Probleme, die richtigen Array-Werte aus dem Formular zu erhalten.Letzter Wert von POST-Array zu einer anderen Seite

Ich habe diesen Code, wo ich den Formularoptionswert 3 mal aufrufen. Das ist in der Datenbank definiert. Ich habe ein Beispiel, was in der Datenbank ist nun im folgenden Bild:

enter image description here

Wenn ich die Taste „Submeter“ drücken auf eine andere Seite umgeleitet, wo das Echo zu geben, was das Array passiert.

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; 
    } 

Ausgang gegeben:

Array ([0] => 0.75) 

Der Ausgang i erhalten müssen:

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

-Code, wo die Form ist:

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> 

Der Code vom Button:

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

Bitte lernen moderne HTML und CSS. Tabellen für das Layout wurden vor der Jahrhundertwende für eine schlechte Idee gehalten. Die Attribute 'align' & 'bgcolor' und das Element' center' sind veraltet. Das 'br'-Element ist nicht dazu gedacht, um Margen zu fälschen. – Quentin

Antwort

1

Wir können Ihren Code verbessern, indem die Erzeugung <select> dynamisch aus der Datenbank s:

<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> 

Erläuterung: jeder <select> den Namen hat "corp_resp &" und die menuId (4, 5, 6), so die Namen sind "corp_resp & 4", "corp_resp & 5", "corp_resp & 6" usw. Alle Auswahlen haben die gleichen Optionen. Beachten Sie, dass der vorherige Code die Menü-IDs aus der Datenbank abruft, daher werden so viele <select> als Menü-IDs angezeigt.

Now "teste.php" wird wie folgt ein:

<?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; 
    } 
?> 

Erläuterung: alle Namen in $ _POST gespaltet werden, Beispiel: "corp_resp & 4" $ cr [0] ("corp_resp" wird) und $ cr [1] ("4"). Diese Nummer wird als ID für die ausgewählte Option verwendet.

+0

Ist nicht auf diese Weise ich brauche. –

+0

Hallo @Jose Manuel, dass $ Daten für welche Variable ist? Weil nicht definiert ist und Sie sagen in Kommentaren ist für die Anzeige ich nehme an, ist $ Optionen? –

+0

Warnung: mysqli_fetch_array() erwartet, dass Parameter 1 mysqli_result ist, das Array in C: \ angegeben ist und diesen Fehler erhält. –

3

Sie haben nur ein Auswahlelement in Form.

Wenn Sie möchten, dass Daten aus mehreren ausgewählten Elementen zusammen eingereicht werden, müssen Sie sie alle in demselben Formular ablegen.

Verschieben Sie die Anfangs- und End-Tags des Formulars so, dass sie die gesamte Tabelle umgeben.

+0

Ich gebe nur einen Wert von welchem ​​Formular ein. Form1 = 0,25 Form2 = 0,5 Form3 = 0.75 –

+0

@ChristopheCosta Ja, deshalb haben Sie das Problem, das Sie beschrieben haben. – Quentin

0

Wie Quentin sagte, Sie haben nur eine Auswahl, aber Sie brauchen drei Einsen. Um das zu erreichen, was Sie versuchen, schrieb so etwas zu schreiben:

<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

Ist es möglich, eine dynamische Auswahl zu tun? –

Verwandte Themen