0

非表示フィールドを使用してデータを追加しています。最初は機能し、データベースに必要なすべての情報が表示されます。しかし、再度作業を行ったところ、以前にキャプチャされた名前と同じ名前しかキャプチャされません。

たとえば、リンゴの画像があり、追加すると名前がリンゴとして表示されるはずです。次に、梨の画像をクリックすると、明らかに、データベースの名前として「梨」が表示されます。ただし、「ナシ」ではなく、リンゴと表示されます。誰も理由を知っていますか?

<form action="addOrder.php" method="post">
<td class="timgG"><h4><img src="apple.jpg" style="vertical-align: text-bottom;" title="Apple"/> Apple <br>
<input type="hidden" name="op" value="add">
<input type="hidden" name="name" value="Apple"> 
<input type="hidden" name="price" value="0.50">
<input type="submit" value="Add to Cart">
</h4></td>

<td class="timgG"><h4><img src="pear.jpg" style="vertical-align: text-bottom;" title="Pear"/> Pear <br>
<input type="hidden" name="op" value="add">
<input type="hidden" name="name" value="Pear"> 
<input type="hidden" name="price" value="0.50">
<input type="submit" value="Add to Cart">
</h4></td>
</form>


<?php
            if (isset($_SESSION['user_id'])) {
                //$order_id = $_POST['order_id'];
                $name = $_POST['name'];
                //$quantity = $_POST['quantity'];
                $price = $_POST['price'];

                $query = "INSERT INTO order_details (name,price) VALUES ('" . $name . "','" . $price . "')";
                $status = mysqli_query($link, $query) or die(mysqli_error($link));

                if ($status) {
                    $msg = "Item has been added.<br />";
                    $msg .= "<a href='product.php'>Back</a></p>";
                }
            } else {
                $msg = "There was an error processing the form.Please try again <a href=girls.php>Back";
            }
            ?>
4

4 に答える 4

1

あなたのHTML入力は同じnameです:

<input type="hidden" name="name" value="Apple"> 

<input type="hidden" name="name" value="Pear"> 

Appleが最初なので、それが によって処理される最初のものですPHP

解決策は、一意の送信ボタン名を持つ 2 つの異なるフォームを使用するか、非表示の入力に一意の名前を付けることです。

于 2013-03-27T15:56:48.003 に答える
0

<form>アイテムごとに個別に使用してください。現在のセットアップ (他のパラメーターを別の方法で設定するとわかるように) は、フォーム内の隠し入力の最初の定義を常に使用します。

使ってみて

<form action="addOrder.php" method="post">
<td class="timgG"><h4><img src="apple.jpg" style="vertical-align: text-bottom;" title="Apple"/> Apple <br>
<input type="hidden" name="op" value="add">
<input type="hidden" name="name" value="Apple"> 
<input type="hidden" name="price" value="0.50">
<input type="submit" value="Add to Cart">
</h4></td>
</form>

<form action="addOrder.php" method="post">
<td class="timgG"><h4><img src="pear.jpg" style="vertical-align: text-bottom;" title="Pear"/> Pear <br>
<input type="hidden" name="op" value="add">
<input type="hidden" name="name" value="Pear"> 
<input type="hidden" name="price" value="0.50">
<input type="submit" value="Add to Cart">
</h4></td>

于 2013-03-27T15:56:49.023 に答える
0

同じフォーム内の異なる製品に同じname属性を使用しているため、フォーム フィールドを上書きします。

配列を使用して、同じ名前のアイテムを複数持つことができます。

<input type="hidden" name="name[]" value="Apple">
// etc.

そしてphpでは、$_POST['name']同様に配列になります。

そして、本当に準備済みステートメントに切り替える必要があります。

于 2013-03-27T15:55:05.467 に答える
0

2 つの異なるフォームを使用する

<form action="addOrder.php" method="post">
<td class="timgG"><h4><img src="apple.jpg" style="vertical-align: text-bottom;" title="Apple"/> Apple <br>
<input type="hidden" name="op" value="add">
<input type="hidden" name="name" value="Apple"> 
<input type="hidden" name="price" value="0.50">
<input type="submit" value="Add to Cart">
</h4></td>
</form>
<form action="addOrder.php" method="post">
<td class="timgG"><h4><img src="pear.jpg" style="vertical-align: text-bottom;" title="Pear"/> Pear <br>
<input type="hidden" name="op" value="add">
<input type="hidden" name="name" value="Pear"> 
<input type="hidden" name="price" value="0.50">
<input type="submit" value="Add to Cart">
</h4></td>
</form>

また、数人が言及したように、データベースに何かを挿入するときに mysqli_real_escape_string() を使用します

于 2013-03-27T15:59:06.090 に答える