Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wykonywanie zapytania trzykrotnie
Forum PHP.pl > Forum > Przedszkole
Mody23
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?
wookieb
Tak wielkiej głupoty to jeszcze nigdy nie widziałem.
Bo 3 razy wywołujesz inserta...
thek
  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 wink.gif
Mody23
No właśnie, że nie.

Wywołuję tutaj:

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


A potem sprawdzam FALSE albo TRUE.
ciekawskiii
Raczej komunikat o pozytywnej rejestracji, pozytywnym wykonaniu itp a nie "pozytywny błąd"
wookieb
No a jak sprawdzasz? Wywołując to jeszcze raz
  1. if ( !($result = $db->sql_query($sql)) )
thek
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 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...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.