2016-05-01 2 views
1

Я разрабатываю простую страницу PHP, это небольшая часть моего кода, которая работает неправильно.Введенный файл не работает должным образом

Я хочу использовать DB и печатать некоторые продукты и для каждого продукта, я хочу показать кнопку «купить».

Если я нажимаю эту кнопку, скрытый ввод должен быть установлен с идентификатором продукта (который позже должен быть отправлен на другую страницу).

Но, если я использую var_dump контролировать (если мои данные были правильно), я могу видеть, что ID не так (я вижу, что его всегда показано в последнем)

<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

На каком этапе вы используете 'var_dump'? В этом цикле 'while' или после нажатия кнопки? – lolbas

+0

В настоящее время у вас есть цикл с скрытыми полями 'N' с одинаковым именем, то есть' id_products', поэтому вы всегда получаете последний, так как это последнее значение, загруженное в один элемент dom – RiggsFolly

ответ

1

Вы должны открыть и закройте форму внутри цикла while.

EDIT

Немного больше объяснений, почему вы должны открываться и закрываться изнутри время цикла: Если во время петли находится внутри формы тегов, что означает скрытое поле выводится несколько раз в течение в той же форме. Поскольку все они имеют одинаковые имена, вы получаете только одно значение после отправки (значение последнего скрытого ввода). Если вы открываете и закрываете форму внутри цикла while, каждый скрытый ввод и кнопка находятся в их собственной форме. Это означает, что когда эта форма отправляется, вы получаете только значение этого скрытого поля. :-)

+0

Это хорошая идея , но немного больше объяснений было бы очень полезно для ОП. Зачем им это делать? – RiggsFolly

+0

Спасибо, обновил мой ответ. Надеясь, что это более полезно для OP. :-) – Raaamy

Смежные вопросы