Масив php и база данни mysql запазване на данни

Имам проблем с масив. Всъщност се появява на страница: форма от няколко реда. Всеки ред съответства на запис в базата данни и така всички те имат общ знаменател.

Повече благодарение на 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.

Проблемът е, че не мога да направя актуализация само защото има нови редове.


person Stanislas Piotrowski    schedule 18.08.2012    source източник


Отговори (2)


<?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

person M Khalid Junaid    schedule 19.08.2012
comment
това съм правил преди, но не съм го виждал преди. Благодаря за отговора. - person Stanislas Piotrowski; 19.08.2012

след няколко часа тестване Видях, че заявката за изтриване е била в цикъл за всеки, така че е изтрила всички след всяко повторно инжектиране, поради което винаги имам само последното въвеждане.

Сега изтрих всички и инжектирах отново всички след това. Работи правилно.

Това, което не разбирам е, че не съм го виждал преди.

Благодаря на всички за помощта.

person Stanislas Piotrowski    schedule 19.08.2012