![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zablokowani Postów: 16 Pomógł: 0 Dołączył: 20.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Posiadam sobie formularz z 3 polami, w ktorych mozna wpisywać dane. Po wciśnięciu SUBMIT funkcja sprawdza czy te pola o takich danych nie istnieją już w bazie, a jak nie, to je dodaje. Wszystko działa pięknie i ładnie, ale ostatnio zrobiłem sobie funkcję masowego dodawania danych do tych 3 pól z pliku. Działa ona w oczywisty sposób rozbijania każdej linijki tego pliku na osobne dane i przekazywania ich do funkcji. I tu się pojawia problem, przy np. 500 linijkach w pliku oczywiście dane się dodają, ale funkcja nie sprawdza mi czy już istniały wcześniej w bazie i przez to mam duplikaty niektórych danych. Dlaczego tak się dzieje? Czy przy dużej ilości zapytań SELECT funkcja pomija niektóre z nich? (istnienie danych w bazie równiez sprawdzam SELECTem) Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
oczywiscie, przy wiecej niz 499 rekordach mysql szaleje.... (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
a na powaznie: masz zly kod i tyle - pokaz go, to ci pomozemy go naprawic |
|
|
![]()
Post
#3
|
|
Grupa: Zablokowani Postów: 16 Pomógł: 0 Dołączył: 20.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
oto funkcja dodająca te dane, $fields to nazwy poszczegolnych pol, $data to tablica z danymi, a mltab to tablica z zaznaczonymi listami subskrypcji. Wszystko dziala git, ale jak wywołam tą funkcje duuuuzo razy to wariuje (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Kod public function addSub($fields, $data, $mltab = NULL) { if($data['email'] && $data['nick'] && $data['phone']) $ex = (dbfieldexists(TABLE_SUBS, 'email', $data['email']) || dbfieldexists(TABLE_SUBS, 'phone', $data['phone'])); else if($data['email'] && $data['nick']) $ex = dbfieldexists(TABLE_SUBS, 'email', $data['email']); else if($data['phone'] && $data['nick']) $ex = dbfieldexists(TABLE_SUBS, 'phone', $data['phone']); else if($data['nick']) $ex = dbfieldexists(TABLE_SUBS, 'nick', $data['nick']); try { if($ex == false) { dbinsert(TABLE_SUBS, $fields, $data); $result = dbselect(TABLE_SUBS, array('id'), NULL, 'id desc', '0, 1'); if($mltab) foreach($mltab as $lis) dbinsert(TABLE_ML_SUBS, array('ml_id', 'sub_id'), array($lis, $result[0]['id'])); set_message('Pomyślnie dodano subskrybenta!'); } else throw new Exception('Nie dodano niektórego(-ych) użytkowników, gdyż dane się powtarzają'); return true; } catch(Exception $e) { // return false; } } a tutaj funkcja sprawdzająca czy pole istnieje w bazie: Kod public static function fieldExists($table, $field, $value) { try { $result = dbselect($table, array($field), "`$field` = '$value'"); if($result[0][$field]) return true; else return false; } catch(Exception $e) { // return false; } } pozdrawiam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ten post edytował pks 31.03.2009, 16:53:26 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 20:08 |