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 に答える