2016-05-01 8 views
1

Ich entwickle eine einfache PHP-Seite, das ist ein kleiner Teil meines Codes, der nicht richtig funktioniert.Eingabe ausgeblendet funktioniert nicht richtig

Ich möchte DB verwenden und einige Produkte drucken, und für jedes Produkt möchte ich eine Schaltfläche "kaufen" zeigen.

Wenn ich diese Taste drücke, muss eine versteckte Eingabe mit der Produkt-ID eingestellt werden (die später an eine andere Seite gesendet werden muss).

Aber wenn ich var_dump verwenden zu steuern (wenn meine Daten korrekt waren), kann ich sehen, dass die ID falsch ist (ich sehe, dass sie immer in den letzten gezeigten)

<form id="products_list" method="post" action="step2.php"> 
    <table> 
    <tr> 
    <td align="center">Immagine</td> 
    <td align="center">Nome prodotto</td> 
    <td align="center">Descrizione prodotto</td> 
    <td align="center">Prezzo unitario</td> 
    <td align="center">Taglie disponibili</td> 
    <td align="center">Colori disponibili</td> 
    <td align="center">Nickname disponibili</td> 
    </tr> 

    <?php 
    $product = mysqli_query($mysqli, "SELECT * FROM products"); 
    while ($row = mysqli_fetch_array($product)) { 
    $id = $row[id_products]; 
    print(" 
    <tr> 
    <td align=\"center\">".$row[img_products]."</td> 
    <td align=\"center\">".$row[name_products]."</td> 
    <td align=\"center\">".$row[description_products]."</td> 
    <td align=\"center\">".$row[price_products]."</td> 
    <td align=\"center\">".$row[size_products]."</td> 
    <td align=\"center\">".$row[color_products]."</td> 
    <td align=\"center\">".$row[nick_products]."</td> 
    <input type=\"hidden\" name=\"id_products\" value=\"".$id."\"/> 

    <td><input type=\"submit\" name=\"buy\" value=\"Acquista\"/></td> 
    </tr>"); 
    } 
    ?> 
    </table> 
    </form> 
+0

In welchem ​​Stadium verwenden Sie 'var_dump'? In dieser "while" -Schleife oder nach dem Drücken der Taste? – lolbas

+0

Derzeit haben Sie eine Schleife mit 'N' versteckten Feldern alle mit dem gleichen Namen dh' id_products' deshalb erhalten Sie immer die letzte, da das der letzte Wert ist, der in das einzelne dom Element geladen wird – RiggsFolly

Antwort

1

Sie öffnen sollen und schließe dein Formular innerhalb der while-Schleife.

EDIT

Ein bisschen mehr Erklärung, warum Sie und in der Nähe von innerhalb der while-Schleife geöffnet werden soll: Wenn die while-Schleife im Inneren der Form-Tags ist, dass das versteckte Feld bedeutet innerhalb mehrfach ausgegeben die gleiche Form. Da sie alle gleich benannt sind, erhalten Sie nur einen Wert nach dem Senden (der Wert der letzten versteckten Eingabe). Wenn Sie das Formular innerhalb der while-Schleife öffnen und schließen, haben alle ausgeblendeten Eingaben und Schaltflächen ihre eigene Form. Das heißt, wenn dieses Formular gesendet wird, rufen Sie nur den Wert dieses bestimmten versteckten Feldes ab. :-)

+0

Das ist eine gute Idee , aber ein wenig mehr Erklärung wäre dem OP sehr nützlich. Warum sollten sie das tun? – RiggsFolly

+0

Danke, aktualisierte meine Antwort. In der Hoffnung, dass dies für OP nützlich ist. :-) – Raaamy