HTML表单和PHP帖子不工作,信息正在被重写


html form and php post not working, information is being rewritten

我有下面的代码生成我的表单在我的html页面

<input type="hidden" name="name[<? echo $productid; ?>]" value="<? echo     $rows["id"];?>">
                <select name="name<? echo $rows["id"];  ?>" >
                <?
                for($i = 0; $i <= sizeof($_SESSION['people']['name']); $i++){
                echo "<option>";
                echo $_SESSION['people']['name'][$i];
                echo "</option>";
                }
                echo "</select>";
                ?>
然后,这个表单被提交到当前保存 的页面。
var_dump($_POST);

和它打印出下面的

array(3) { 
    ["name"]=> array(2) { 
        [2]=> string(1) "2" 
        [6]=> string(1) "6" 
    } 
    ["name2"]=> string(12) "first person" 
    ["name6"]=> string(15) "andother person" 
} 

然而,正如你所看到的,两个名字都被正确地发布了,但是它们没有正确地关联。

string(1)同时指向6和2。这些是我的产品编号,它们需要与名称配对。

你能让我知道我如何能够清理我的形式,并适当地与一个foreach循环,提取每个属性。即名称,以及id号(6,2…)

基本上,我想知道哪个名字与哪个产品id号相关联=> 2,6,等等…我希望名称保存为$name, id保存为$id。然后插入到表(name, id)值($name, $id)…但是,它应该在一个循环中获取所有的$names和$ids。所以第一次运行时,应该选择"first Person"并将其与"2"组在一起第二次运行时,它应该抓取"另一个人"并将其与6分组

对不起,英语不是我的第一语言。如果语法不好,请原谅。

string(1)位告诉您变量的类型和长度,而不是密钥。如果您的数组与它看起来的方式相关,则可以使用

获取信息。
foreach($_POST['name'] as $id) {
    echo $_POST['name' . $id];
}

如果你打算在SQL调用中使用这些信息,请确保首先对输入进行消毒,否则你将容易受到SQL注入的影响。

编辑:

如果您试图构造一个id => name类型的数组,您可以这样做:

$arr = array();
foreach($_POST['name'] as $id) {
    $arr[$id] = $_POST['name' . $id];
}
print_r($arr);
//should print an array like ('2' => 'first person', '6' => 'another person')

String(1)表示只有一个字符的字符串。我觉得这个结果还不错。不要在循环中使用sizeof() -函数。将array-size赋值给var会更快,因为每次循环调用该函数。

$sOptions = '';
foreach($_SESSION['people']['name'] AS $i => $sName) {
    $sOptions .= '<option value="'.$i.'">'.$sName.'</option>';
}
print '<select name="name'.$rows["id"].'">'.$sOptions.'</select>';

编辑:如果您将id ($i)赋给选项值,您将在post

上收到选定的id。