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