0

私は現在この注文フォームに取り組んでいます:http ://www.libertydelimart.com/order

現在、すべてのアイテムが私のメールに投稿されています。天気情報に関係なく、[いくつ]テキストボックスに入力されています。

[いくつ]テキストボックスに何も入力されていないアイテムを除外して、情報が入力されているアイテムのみが電子メールで送信されるようにするための最良の方法は何ですか?

<?php
if(isset($_POST['submit'])) {

$to = "test@mywebsite.com"; 
$subject = "New Order";
$name_field = $_POST['name'];
$phone_field = $_POST['phone'];
$food = $_POST['food'];

$body = 'Name: ' . $name_field . PHP_EOL . 'Phone: ' . $phone_field . PHP_EOL;

//Check if any food items were set in order to prevent foreach error
if($food){
  foreach ($food as $key => $item) {
    $body .= $key . ' - ' . $item ['how_many'];
    if($item['customize']) $body .= ' ('.$item['customize'].')' . PHP_EOL;
  }  
}

echo "Your Order Will Be Ready In 30 Minutes!";
mail($to, $subject, $body,"FROM: Deli <$to>");
print '<pre>'.$body.'</pre>';
}
?>
4

1 に答える 1

1

empty()あなたの内部を使用してそれが空かどうかを確認してくださいforeach

foreach ($food as $key => $item) {
    if (!empty($item['how_many'])) {
        // Add to body only if it isn't empty
        $body .= $key . ' - ' . $item ['how_many'];
        if($item['customize']) $body .= ' ('.$item['customize'].')' . PHP_EOL;
    }
} 

これは、入力が実際に数値であるかどうかを検証しないことに注意してください。または、このSO回答を実装して、ゼロより大きいかどうかを確認することをお勧めします。

if ((string)(int)$item['how_many'] == $item['how_many'] && (int)$item['how_many'] > 0)
于 2012-08-23T20:18:32.067 に答える