1

顧客がさまざまな食品を注文できる非常に大きな注文フォームがあります。

これが私のhtmlの例です(これが正しい方法であるかどうかは完全にはわかりません):

<legend>Dinner</legend>
<label for="beef">Beef</label>
<input type="text" id="beef" name="order[]dinner[][beef]" placeholder="How many beef plates do you want?">

<label for="chicken">Chicken</label>
<input type="text" id="chicken" name="order[]dinner[][chicken]" placeholder="How many chicken plates do you want?">


<legend>Desserts</legend>
<label for="cake">Cake</label>
<input type="text" id="cake" name="order[]desserts[][cake]" placeholder="How many cake slices do you want?">

<label for="pudding">Pudding</label>
<input type="text" id="pudding" name="order[]pudding[][cake]" placeholder="How many puddings do you want?">

すべての注文を収集する forloop を作成するにはどうすればよいですか (値が 0 を超える場合)

私はこのコードを試しました:

$order_array = $_POST['order'];

foreach ($order_array AS $key => $value){
    $order .= "<p><strong>$key:</strong> $value</p>\n";
}

しかし、出力は次のとおりです。

0:30
1:2

私はそれが欲しい:

ビーフ:30
チキン:1

また、可能であれば、次のような「カテゴリ」を表示できます:

ディナー:
ビーフ: 30
チキン: 1

デザート:
ケーキ: 29
プリン: 2

編集:

これが私の投稿配列です:

配列 (
  '注文' =>
    「夕食」 =>
    配列 (
      '牛肉' => '',
      'チキン' => '40',
    )、
    「デザート」 =>
    配列 (
      'ケーキ' => '',
      'プリン' => '',
    )、
  )、
4

3 に答える 3

0

まず、名前が次の形式になるように入力を変更します。

<input name="order[category][food]" />

次に、データが投稿されたら、次のようなことを実行して、目的の出力を取得できます。

if (!empty($_POST['order'])) {

  foreach ($_POST['order'] as $type => $items) {
    echo '<strong>' . ucfirst($type) . '</strong><br />';

    foreach ($items as $name => $qty) {
      echo ucfirst($type) . ': ' . $qty . '<br />';
    }
    echo '<br />';
  }
}

これは次のようなものを出力します:-

ディナー
ビーフ:12
チキン:2

デザート
ケーキ:4
プリン:1


編集:表示カテゴリ ( $type) がカテゴリにない場合に表示されないようにする必要がある場合$itemsは、次の操作を実行できます。

if (count(array_filter($items))) {
  echo '<strong>' . ucfirst($type) . '</strong><br />';
}
于 2013-01-24T11:50:31.330 に答える
0
<form>
<legend>Dinner</legend>
<label for="beef">Beef</label>
<input type="text" id="beef" name="order[beef]" placeholder="How many beef plates do you want?">

<label for="chicken">Chicken</label>
<input type="text" id="chicken" name="order[chicken]" placeholder="How many chicken plates do you want?">


<legend>Desserts</legend>
<label for="cake">Cake</label>
<input type="text" id="cake" name="order[cake]" placeholder="How many cake slices do you want?">

<label for="pudding">Pudding</label>
<input type="text" id="pudding" name="order[pudding]" placeholder="How many puddings do you want?">
<input type="submit" />
</form>
<?php
 $order_array = $_GET['order'];

print_r($order_array);
foreach ($order_array AS $key => $value){
    echo $key;
    echo $value;
}
于 2013-01-24T11:37:33.267 に答える
-1

以下のコードで動作します:

牛肉:30

チキン:1

<form>
<legend>Dinner</legend>
<label for="beef">Beef</label>
<input type="text" id="beef" name="order[beef]" placeholder="How many beef plates do you want?">

<label for="chicken">Chicken</label>
<input type="text" id="chicken" name="order[chicken]" placeholder="How many chicken plates do you want?">

<legend>Desserts</legend>
<label for="cake">Cake</label>
<input type="text" id="cake" name="order[cake]" placeholder="How many cake slices do you want?">

<label for="pudding">Pudding</label>
<input type="text" id="pudding" name="order[pudding]" placeholder="How many puddings do you want?">

<input type="submit" name="submit" value="submit"/>
</form>

PHPコード:

<?php
if(isset($_REQUEST['submit']))
{
    $order_array = $_POST['order'];

    $order = "";
    foreach ($order_array AS $key => $value){
        $order .= "<p><strong>$key:</strong> $value</p>\n";
    }

   echo "<pre>";
   print_r($order);
}
?>
于 2013-01-24T11:46:44.453 に答える