Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wykonywanie zapytania trzykrotnie
Mody23
post
Post #1





Grupa: Zarejestrowani
Postów: 276
Pomógł: 0
Dołączył: 30.06.2010

Ostrzeżenie: (10%)
X----


Witam!

Mam taki kod:

  1. if ( isset($mode) )
  2. {
  3. if ( $mode == 'create_group' )
  4. {
  5. $template->set_filenames(array(
  6. 'create_group_community' => 'create_group_community.tpl')
  7. );
  8. $template->assign_vars(array(
  9. 'L_GROUP_NAME_REGISTER' => $lang['group_name_register'],
  10. 'L_GROUP_TITLE_REGISTER' => $lang['group_title_register'],
  11. 'S_CREATE_ACTION' => append_sid("group_community.$phpEx?mode=create_group"),
  12. 'L_CREATE_GROUP_CONFIGURATION' => $lang['create_group_configuration'],
  13. 'L_GROUP_AVATAR_REGISTER' => $lang['group_avatar_register'])
  14. );
  15. $template->pparse('create_group_community');
  16.  
  17. $group_name_register = htmlspecialchars($_POST['group_name']);
  18. $group_title_register = htmlspecialchars($_POST['group_title']);
  19. $group_avatar_link = $_POST['group_avatar'];
  20. $head_user_id = $userdata['user_id'];
  21.  
  22. if ( isset($_POST['dalej']) )
  23. {
  24. if (strlen($group_name_register) < 3 or strlen($group_name_register) > 30 or !eregi("^[a-zA-Z0-9_.]+$", $group_name_register))
  25. {
  26. message_die(GENERAL_ERROR, $lang['error_name_group']);
  27. }
  28. else if (strlen($group_title_register) < 15 or strlen($group_title_register) > 255)
  29. {
  30. message_die(GENERAL_ERROR, $lang['error_title_register']);
  31. }
  32. else
  33. {
  34. $sql = "INSERT INTO `phpbb_group_community` (`id`, `head_user_id`, `user_level`, `group_name`, `group_title`, `avatar_url`) VALUES ('', '".$head_user_id."', '1', '$group_name_register', '$group_title_register', '$group_avatar_link')";
  35. $result = $db->sql_query($sql);
  36. if ( !($result = $db->sql_query($sql)) )
  37. {
  38. message_die(GENERAL_ERROR, 'jakis error', '', __LINE__, __FILE__, $sql);
  39. }
  40. if ( ($result = $db->sql_query($sql)) )
  41. {
  42. message_die(GENERAL_MESSAGE, $lang['create_group_true']);
  43. }
  44.  
  45. }
  46. }
  47. }
  48. }


I moje pytanie jest takie - dlaczego ten INSERT wchodzi do bazy trzy razy? :/ Jeśli wszystkie warunki formularza zostaną spełnione, to przechodzi dalej, wywołuje mi pozytywny, zwrotny błąd, ale gdy patrzę w PHPMYADMIN, to mam trzy razy te same dane w bazie. Dlaczego?
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Tak wielkiej głupoty to jeszcze nigdy nie widziałem.
Bo 3 razy wywołujesz inserta...
Go to the top of the page
+Quote Post
thek
post
Post #3





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




  1. $result = $db->sql_query($sql); //wywołanie numer 1
  2. if ( !($result = $db->sql_query($sql)) ) //wywołanie numer 2
  3. {
  4. message_die(GENERAL_ERROR, 'jakis error', '', __LINE__, __FILE__, $sql);
  5. }
  6. if ( ($result = $db->sql_query($sql)) ) //wywołanie numer 3
  7. {
  8. message_die(GENERAL_MESSAGE, $lang['create_group_true']);
  9. }
Jak to zmienić? Twoja sprawa (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Mody23
post
Post #4





Grupa: Zarejestrowani
Postów: 276
Pomógł: 0
Dołączył: 30.06.2010

Ostrzeżenie: (10%)
X----


No właśnie, że nie.

Wywołuję tutaj:

  1. $result = $db->sql_query($sql);


A potem sprawdzam FALSE albo TRUE.
Go to the top of the page
+Quote Post
ciekawskiii
post
Post #5





Grupa: Zarejestrowani
Postów: 467
Pomógł: 39
Dołączył: 7.11.2010
Skąd: Raz tu, raz tam

Ostrzeżenie: (30%)
XX---


Raczej komunikat o pozytywnej rejestracji, pozytywnym wykonaniu itp a nie "pozytywny błąd"
Go to the top of the page
+Quote Post
wookieb
post
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




No a jak sprawdzasz? Wywołując to jeszcze raz
  1. if ( !($result = $db->sql_query($sql)) )
Go to the top of the page
+Quote Post
thek
post
Post #7





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Nie... TRZY RAZY wywołujesz zapytanie, bo trzy razy wywołujesz metodę $db->sql_query() zamiast odwołać tylko i wyłącznie do $result. Dla przykladu zrób tak i zobaczysz, że liczba spadnie do 2 (IMG:style_emoticons/default/smile.gif)
  1. $result = $db->sql_query($sql); //wywołanie numer 1
  2. if ( ! $result ) //wywołanie numer 2
  3. {
  4. message_die(GENERAL_ERROR, 'jakis error', '', __LINE__, __FILE__, $sql);
  5. }

Inna sprawa, że podwójny if, raz dla wartości TRUE a raz dla FALSE zmiast uzyć IF {} ELSE {} jest równie inteligentny jak wykłócanie się o to, że robisz jeden INSERT zamiast 3 w sytuacji gdy w kodzie jest jak byk napisane, że jednak są 3 razy te inserty robione...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.09.2025 - 15:06