2017-03-20 2 views
-1

Ich versuche, ein HTML-Formular mit PHP zu schreiben. Ich habe dies für das Projekt bis zur aktuellen Funktion getan und bin auf ein Problem gestoßen, bei dem ich eine Liste mit Artikeln mit einem Dropdown-Menü für die Menge habe. Der Benutzer wählt die Menge jedes gewünschten Artikels aus und stellt das Formular auf die nächste Seite, auf die die ausgewählten Werte für jeden Artikel zugreifen können.Schreiben eines HTML-Formulars aus Datenbankeinträgen

Ich habe <select><option> vorher nicht benutzt und so weit ich von ein wenig Forschung erzählen kann, sind alle diese Dropdown-Menüs in einer getrennten Form.

Vom Testen des Formulars bin ich in der Lage, den Optionswert für das letzte Element in der Tabelle zu buchen, aber es passt zu nichts.

<?php 
require("../functions/DbConnect.php"); 
$query = "select * from item_set_menu"; 
$result = mysqli_query($DB,$query); 
echo "<form method='POST' action='../html/order.php'>"; 
echo "<table><th>Item</th><th>Price</th><th>Image</th><th>Add</th>"; 
while($row = mysqli_fetch_assoc($result)){ 
    echo "<tr>"; 
    echo "<td>".$row['set_name']."</td>"; 
    echo "<td>".$row['set_price']."</td>"; 
    echo "<td><img id='thumb' src='".$row['set_img']."'></td>"; 
    echo "<td><select id='drop-menu' name='quantity[]'> 
       <option value='0'>0</option> 
       <option value='1'>1</option> 
       <option value='2'>2</option> 
       <option value='3'>3</option> 
      </select></td>"; 
    echo "</tr>"; 
}echo "</table>"; 
echo "<center> 
      <input type='hidden' value'".$row['set_name']."' name'set_name'> 
      <input type='hidden' value'".$row['set_price']."' name'set_price'> 
      <input type='hidden' value'quantity[]' name'quantity'> 
      <input type='submit' value'order' name'Submit'> 
     </center>"; 
echo "</form>"; 
?> 

Erwartung der Ausgabe des Einzelteils hier. die Formulare veröffentlichen Seite ->

<?php 
require("../functions/DbConnect.php"); 
$set_name =$_POST['set_name']; 
$set_price =$_POST['set_price']; 
$quantity =$_POST['quantity']; 
echo "<ol> 
    <li>".$set_name[0]."</li> 
    <li>".$set_price[0]."</li> 
    <li>".$quantity[0]."</li> 
    <ol> 
    "; 
?> 
+0

Die zweite Seite ist 'order.php'? Sie müssen die ID des Produkts eingeben und dann aus der Datenbank auswählen. – chris85

+0

Wenn die Antwort, die ich verlassen habe, nicht hilfreich ist, bitte beraten. Wenn Sie es hilfreich fanden, bitte upvote, und markieren Sie es als akzeptiert, wenn Sie das Gefühl haben, dass es Ihr Problem gelöst hat. Siehe auch http://stackoverflow.com/help/someone-answers – miken32

Antwort

0

Ihre HTML voller Fehler ist, und Sie sollten es nicht so mit PHP mischen werden. Versuchen Sie es stattdessen. Bemerkenswerte Änderungen sind, dass Ihre Formularelemente jetzt tatsächlich ein name Attribut haben, der Name enthält die PHP Array Notation [], und sie sind innerhalb Ihrer Schleife statt außerhalb davon. Es gibt noch viel falsch mit diesem Code aber:

<?php 
require("../functions/DbConnect.php"); 
$query = "select * from item_set_menu"; 
$result = mysqli_query($DB,$query); 
while($row = mysqli_fetch_assoc($result)){ 
    $rows[] = $row; 
} 
?> 

<form method='POST' action='../html/order.php'> 
<table><th>Item</th><th>Price</th><th>Image</th><th>Add</th> 
<?php foreach ($rows as $row):?> 
<tr> 
<td><?=$row['set_name']?></td> 
<td><?=$row['set_price']?></td> 
<td><img id='thumb' src='<?=$row['set_img']?>'></td> 
<td><select id='drop-menu' name='quantity[]'> 
       <option value='0'>0</option> 
       <option value='1'>1</option> 
       <option value='2'>2</option> 
       <option value='3'>3</option> 
      </select> 
      <input type='hidden' value='<?=$row['set_name']?>' name='set_name[]'> 
      <input type='hidden' value='<?=$row['set_price']?>' name='set_price'> 
</td> 
</tr> 
<?php endforeach;?> 
</table> 
<center> 
      <input type='submit' value='order' name='Submit'> 
     </center> 
</form> 

Hinweis Ich habe die Datenbank Ergebnisse in ein Array geladen und verwendet alternative syntax und short echo tags zu PHP Eindringen in HTML auf ein Minimum zu halten.

Verwandte Themen