php/mysql双变量数组

php/mysql双变量数组,php,mysql,arrays,Php,Mysql,Arrays,我允许用户使用表单中的文本框创建多达十个类别。为此,我有十个文本框,格式为name=cat[]。当它们第一次输入类别时——不管在接收端输入的类别有多少,最多十个,我只是收集类别数组,然后使用insert语句将它们保存到类别表中。到目前为止还不错 然而,现在我想让他们改变他们已经设置的类别,或者添加额外的内容,总共十个。他们已经设置的类别具有ID。因此,我将ID与类别名称一起回显到表单中。我的问题是现在如何收集姓名和ID?是否需要在表中插入新的和更新现有的?出于某种原因,我完全不知道该怎么做。这就

我允许用户使用表单中的文本框创建多达十个类别。为此,我有十个文本框,格式为name=cat[]。当它们第一次输入类别时——不管在接收端输入的类别有多少,最多十个,我只是收集类别数组,然后使用insert语句将它们保存到类别表中。到目前为止还不错

然而,现在我想让他们改变他们已经设置的类别,或者添加额外的内容,总共十个。他们已经设置的类别具有ID。因此,我将ID与类别名称一起回显到表单中。我的问题是现在如何收集姓名和ID?是否需要在表中插入新的和更新现有的?出于某种原因,我完全不知道该怎么做。这就是我目前所拥有的>

餐桌猫

id | catname | userid
表格页:

//retrieve existing cats if any...also get catids

echo '<form action = storecats.php method=post>';
$i=1;
//Get all existing cats
while($row = mysql_fetch_array($res))
{
    $catname = $row['catname'];
    $catid = $row['id'];
    echo '<input type = "text name="cat[]" value="'.$catname.'">Cat 1';
    echo '<input type="hidden" name="id[]" value = "'.$catid.'">';
    $i = $i+1;
}
//empty boxes up to ten.
while($i <= 10){
    echo '<input type="text" size=18 name="cat[]" value=""> Cat '.$i.'<br>';
    $i = $i+1;
}//end appending of blank categories
echo '<input type="submit" name="submit" value="submit"></form>';
如果有id,我希望执行更新,而如果没有id,我希望插入,除非值为空


我的问题是,我不知道如何将不同阵列中接收到的id和cat名称链接起来。请注意,始终会有十个cat名称,但ID的数量将与该用户以前在表中的数量相同

您可以使用HTML端的2个数组执行此操作:

    $x=0;
    while ($row = mysql_fetch_array($res))
    {
        echo '<input type="text" name="updateCat['.$row["id"].']" value="'.$row["catname"].'"> Cat Name';
        $x++;
    }

    // new ones
    for(;$x<10;$x++)
    {
        echo '<input type="text" name="newCat[]">';
    }

在插入新类别时,您还必须检查类别是否不超过10个。

您可以使用HTML端的2个数组执行此操作:

    $x=0;
    while ($row = mysql_fetch_array($res))
    {
        echo '<input type="text" name="updateCat['.$row["id"].']" value="'.$row["catname"].'"> Cat Name';
        $x++;
    }

    // new ones
    for(;$x<10;$x++)
    {
        echo '<input type="text" name="newCat[]">';
    }

在插入新类别时,您还必须检查不超过10个类别。

命名用于现有类别的输入
cat\u update[]
以及命名用于新类别的输入
cat\u insert[]
。使用PHP处理表单数据时,有三个数组:

$ids = $_POST['id'];                // Ids for update
$update = $_POST['cat_update'];     // Values for UPDATE
$insert = $_POST['cat_insert'];     // Values for INSERT

for($i = 0; $i < count($ids); $i++) {
    //Execute 'UPDATE `table` SET `value` = $update[$i] WHERE `id` = $ids[$i]
}

for($i = 0; $i < count($insert); $i++) {
    //Execute 'INSERT INTO `table` (`value`) VALUES ($insert[$i])
}
$ids=$\u POST['id'];//用于更新的ID
$update=$\u POST['cat\u update'];//要更新的值
$insert=$_POST['cat_insert'];//插入值
对于($i=0;$i
为现有类别的输入命名
cat\u update[]
为新类别的输入命名
cat\u insert[]
。使用PHP处理表单数据时,有三个数组:

$ids = $_POST['id'];                // Ids for update
$update = $_POST['cat_update'];     // Values for UPDATE
$insert = $_POST['cat_insert'];     // Values for INSERT

for($i = 0; $i < count($ids); $i++) {
    //Execute 'UPDATE `table` SET `value` = $update[$i] WHERE `id` = $ids[$i]
}

for($i = 0; $i < count($insert); $i++) {
    //Execute 'INSERT INTO `table` (`value`) VALUES ($insert[$i])
}
$ids=$\u POST['id'];//用于更新的ID
$update=$\u POST['cat\u update'];//要更新的值
$insert=$_POST['cat_insert'];//插入值
对于($i=0;$i
我不确定是否理解,但您可以简单地为这两组类别指定不同的名称


在第二个循环中,在接收的storecats.php代码中输入“name=”new\u cat[]”将允许您区分修改的类别(“$\u POST[cat]”)和要插入的新类别(“$\u POST[new\u cat]”),但你可以简单地给这两组类别起不同的名字


在第二个循环中,在接收的storecats.php

代码中输入“name=”new\u cat[]”将允许您区分修改的类别(“$\u POST[cat]”)和要插入的新类别(“$\u POST[new\u cat]”),第一次之后会显示超过10个输入字段。你是对的,因此我编辑了我的答案,并添加了一条注释,即开场白在插入新字段时也会检查计数。严格来说,第一次之后会显示超过10个输入字段。你是对的,因此,我编辑了我的答案,并添加了一条注释,即开场白在插入新的类别时也会检查计数。开场白的问题是他不知道更新类别的id。看看我的答案,看看如何将带有id值数组的表单数据传输到php脚本。查看我的答案,了解如何将带有id值数组的表单数据传输到php脚本。