0

我在使用数组时遇到问题。它实际上出现在一个页面上:一种多行的形式。每行对应于数据库中的一条记录,因此它们都有一个共同点。

多亏了javascript,我可以动态添加字段。

我遇到的麻烦是记录数据时。事实上,我起初认为我应该delete一切,然后insert我只是以下查询:

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

foreach($_POST['data'] as $data){
    if (!empty($data['code_s'])){
$sql2="DELETE FROM scenarii WHERE code_s='".mysql_real_escape_string($_GET['code_s'])."'";
mysql_query($sql2) or die(__LINE__.mysql_error().$sql2);    

$sql7 = '
INSERT INTO  scenarii SET 
code_s              = "'.mysql_real_escape_string($data['code_s']).'", 
titre               = "'.mysql_real_escape_string($data['titre']).'",
action              = "'.mysql_real_escape_string($data['action']).'", 
libelle             = "'.mysql_real_escape_string($data['libelle']).'",
jour                = "'.mysql_real_escape_string($data['jour']).'"' ;    
mysql_query($sql7) or die(__LINE__.mysql_error().$sql7);

    } 
  } 
}
?>

担心的是删除的信息不会再次存储(尽管它们在 post 变量中,因为它们以表单的形式存在,因此是变量。

事实上,它只保存来自 javascript 的新行。

问题是我不能仅仅因为有新行就进行更新。

4

2 回答 2

1
<?php if(isset($_POST['enreg']))
{
$sql2="DELETE FROM scenarii WHERE code_s='".mysql_real_escape_string($_GET['code_s'])."'";
mysql_query($sql2) or die(__LINE__.mysql_error().$sql2);  
foreach($_POST['data'] as $data){
if (!empty($data['code_s'])){

$sql7 = '
INSERT INTO  scenarii SET 
code_s              = "'.mysql_real_escape_string($data['code_s']).'", 
titre               = "'.mysql_real_escape_string($data['titre']).'",
action              = "'.mysql_real_escape_string($data['action']).'", 
libelle             = "'.mysql_real_escape_string($data['libelle']).'",
jour                = "'.mysql_real_escape_string($data['jour']).'"' ;    
mysql_query($sql7) or die(__LINE__.mysql_error().$sql7);

} 
} 
}
?>

将您的删除查询放在 foreach 循环之前

于 2012-08-19T09:53:03.843 回答
0

经过几个小时的测试,我发现删除请求在每个循环中,所以它在所有重新注入之后都删除了,这就是为什么我每次只剩下最后一个输入。

现在我已经全部删除并重新注入。它工作正常。

我不明白的是我以前没有看到它。

感谢大家的帮助。

于 2012-08-19T09:46:32.830 回答