【问题标题】:php form issue, arrays & $_POSTphp 表单问题、数组和 $_POST
【发布时间】:2015-04-11 15:59:51
【问题描述】:

我目前正在尝试构建一个 html/php 表单,该表单允许用户发送他们的联系信息并选择预定义产品的数量。到目前为止,联系信息运行良好,它会向我的电子邮件发送一封包含联系信息的电子邮件,但每种产品的数量都不起作用。请帮忙。

表单结构

姓名: [输入字段]

姓氏: [输入字段]

消息: [输入字段]

产品:

Prod 1 [QUANTITY FIELD] - 简单的数字输入字段

Prod 2 [QUANTITY FIELD] - 简单的数字输入字段

Prod 3 [QUANTITY FIELD] - 简单的数字输入字段

无论如何,这是我的产品的 PHP 代码,我使用的是数组。

<?php
    $my_products = array(
        '0' => 'product 0',
        '1' => 'product 1',
        '2' => 'product 2',
        '3' => 'product 3',
        '4' => 'product 4',
        '5' => 'product 5',
        '6' => 'product 6',
        '7' => 'product 7',
        '8' => 'product 8',
        '9' => 'product 9'
        '10' => 'product 10'
    );

    foreach ($my_products as $key => $value) {
        echo "<div class=\"col-xs-6\" style=\"margin: 10px 0 5px 0;\">";
            echo "<li class=\"list-group-item\" data-style=\"button\">";
                echo $value;
                echo "<input class=\"form-control selectBox\" maxlength=\"2\" min=\"0\" max=\"10\" type=\"number\" onkeypress=\"return isNumeric(event)\" oninput=\"maxLengthCheck(this)\" name=\"quantity[$key]>\"";
            echo "</li>";
        echo "</div>";
    }
?>

我正在尝试从输入字段(数量)中回显结果,但它不起作用,它说它是未定义的。

在 html 文件的下方,我有 php 邮件功能,正如我所说,除了数量之外一切正常。

 $products = array(
    @$_POST['quantity[0]'], 
    @$_POST['quantity[1]'], 
    @$_POST['quantity[2]'],
    @$_POST['quantity[3]'],
    @$_POST['quantity[4]'],
    @$_POST['quantity[5]'],
    @$_POST['quantity[6]'],
    @$_POST['quantity[7]'],
    @$_POST['quantity[8]'],
    @$_POST['quantity[9]'],
    @$_POST['quantity[10]']);

$message = "<br /><strong>".$products[0]." - product 0</strong>"
  . "<br /><strong>".$products[1]." - product 1</strong>"
  . "<br /><strong>".$products[2]." - product 2</strong>"

等等..

【问题讨论】:

  • $products = $_POST['quantity'];

标签: php html arrays forms


【解决方案1】:

首先不要使用@ 符号。真的很邪恶。

您的值位于$_POST['quantity'] 数组中,因此您可以像$_POST['quantity'][2] 那样访问它。

【讨论】:

  • 将 $products 变量更新为:$products = $_POST['quantity'];并将消息回显更新为:“
    Product 3 - “.$_POST['quantity'][3].”” 仍然不起作用。
  • @JamesJ。学习如何调试。在$_POST 和您的数组上使用var_dump
  • array(0) { } 是我 var_dump 时出现的结果 未初始化的字符串偏移量也是我收到的数量索引通知
  • @JamesJ。也许这是个愚蠢的问题,但您是否通过 POST 发送表单?我在你的例子中看不到这一点。
  • 看人,表格有效。它向我发送了一封电子邮件,其中包含表单中的所有输入,但该死的数量是空的。我不知道为什么!?!?
【解决方案2】:

以下示例已经过测试并且有效(为了保持相同,最佳做法已被“遗忘”) 如果您的代码仍有问题,我建议您发布相关文件...

index.php

<?php
$my_products = array(
    '0' => 'product 0',
    '1' => 'product 1',
    '2' => 'product 2',
    '3' => 'product 3',
    '4' => 'product 4',
    '5' => 'product 5',
    '6' => 'product 6',
    '7' => 'product 7',
    '8' => 'product 8',
    '9' => 'product 9',
    '10' => 'product 10');

?>

<form action="show.php" method="post" accept-charset="utf-8">

<?php
foreach ($my_products as $key => $value) {
    echo "<div class=\"col-xs-6\" style=\"margin: 10px 0 5px 0;\">";
        echo "<li class=\"list-group-item\" data-style=\"button\">";
            echo $value;
            echo "<input class=\"form-control selectBox\" maxlength=\"2\" min=\"0\" max=\"10\" type=\"number\" name=\"quantity[$key]>\"";
        echo "</li>";
    echo "</div>";
}
?>
<input type="submit">
</form>

显示.php

<?php

$products = array(
$_POST['quantity']['0'],
$_POST['quantity']['1'],
$_POST['quantity']['2'],
$_POST['quantity']['3'],
$_POST['quantity']['4'],
$_POST['quantity']['5'],
$_POST['quantity']['6'],
$_POST['quantity']['7'],
$_POST['quantity']['8'],
$_POST['quantity']['9'],
$_POST['quantity']['10']);

$message = "<br /><strong>".$products[0]." - product 0</strong>"
  . "<br /><strong>".$products[1]." - product 1</strong>"
  . "<br /><strong>".$products[2]." - product 2</strong>";

echo $message;
?>

【讨论】:

    猜你喜欢
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多