Problem z funkcja i dodawaniem do bazy


(Sobladen) #1

Mam taki skrypcik:

<?


$ciag = 'czesc1:czesc1

czesc2:czesc2

czesc3:czesc3'; //to dodawane jest z formularza, każdy ciąg w nowej linii

$tablica = explode("\r\n", $ciag);


foreach($tablica as $klucz) {


$ciag2 = explode(":", $klucz);

$czesc1 = $ciag2[0];

$czesc2 = $ciag2[1];


mysql_query("INSERT INTO `tabela` (`id` ,`czesc1` ,`czesc2`) VALUES (NULL, '$czesc1', '$czesc2');") or die (mysql_error());;


} 

?>

po wykonaniu skryptu rekordy dodaja sie ok.. ale skrypt wykonuje się to tyle razy ile jest wierszy, tzn tak wyglada baza:

id czesc1 czesc1


1 czesc1 czesc1

2 czesc2 czesc2

3 czesc3 czesc3

4 czesc1 czesc1

5 czesc2 czesc2

6 czesc3 czesc3

7 czesc1 czesc1

8 czesc2 czesc2

9 czesc3 czesc3

a powinno byc tak: id czesc1 czesc1

1 czesc1 czesc1

2 czesc2 czesc2

3 czesc3 czesc3

(ra-v) #2

Sam musiałem to sprawdzić bo nie dowierzałem że to źle działa i mnie jest ok. A nie wykonuje się ten skrypt 3 razy?

Wstaw gdzieś poza pętlę

mail('mail@domena.xx', 'WWW', 'wykonanie '.date('Y-m-d H;i:s', time()));

i zobacz ile razy się wykona.


(Sobladen) #3

Dzięki za odp. Wczesniej nikt nie odpisywał to zrobiłem tak, ze sprawdza mi czy już dany rekord jest w bazie i gdy jest to juz więcej go nie dodaje.

skrypt wykonywał się raz..

jak dodałem 4 linijki to dodało 4razy, 5 to 5 itd

//zamykam