Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Dodawanie nowego rekordu
Forum PHP.pl > Forum > Przedszkole
arek33
Hej,

Sprawa dotyczy dodawania nowego rekordu do bazy danych. W przypadku powodzenia rekord jest dodawany i użytkownik otrzymuje stosowny komunikat, natomiast jeżeli nie wypełni wszystkich pół, które są wymagane do wykonania operacji, nie otrzymuje żadnego komunikatu, mimo użytej instrukcji else. Może mnie ktoś nakierować jakoś lub wskazać błąd?

  1. <?php
  2.  
  3. require('config.php');
  4.  
  5. $imie = $_POST['imie'];
  6. $nazwisko = $_POST['nazwisko'];
  7. $login = $_POST['login'];
  8. $haslo = $_POST['haslo'];
  9.  
  10. $slogin = trim($_POST['login']);
  11. $sloginz="select * from users where login='$login'";
  12. $zlogin = mysql_query($sloginz);
  13.  
  14. if(mysql_num_rows($zlogin)==0){
  15.  
  16. if(($imie) && ($nazwisko) && ($login) && ($haslo))
  17.  
  18. {
  19.  
  20. $add = mysql_query("INSERT INTO users SET imie='$imie', nazwisko='$nazwisko', login='$login', haslo='$haslo'");
  21.  
  22. if($add) echo "Użytkownik został zarejestrowany. Możesz się teraz zalogować.";
  23. else echo "Sprawdź czy wszystkie pola zostały wypełnione."; // chodzi dokładnie o ten komunikat - dlaczego nie jest wyświetlany?
  24. }
  25. }
  26. else { echo 'gosciu istnieje'; }
  27.  
  28. ?>


Myślę, że formularza nie ma sensu wrzucać, bo zaśmieci tylko forum. W kodzie, w komentarzu zaznaczyłem o który komunikat chodzi.
sada
a klamry?
arek33
Już próbowałem - nie pomagają. Rozumiem, że chodzi o ten kawałek kodu?

  1. if($add) { echo "Użytkownik został zarejestrowany. Możesz się teraz zalogować."; }
  2. else { echo "Sprawdź czy wszystkie pola zostały wypełnione."; } // chodzi dokładnie o ten komunikat - dlaczego nie jest wyświetlany?

Dodane klamry.
erix
No popatrz, w którym miejscu dajesz ten warunek. Nie bez powodu się stosuje wcięcia w kodzie - właśnie dzięki nim widać, do którego bloku się odnosi konkretny warunek:

  1. if(mysql_num_rows($zlogin)==0){
  2. if(($imie) && ($nazwisko) && ($login) && ($haslo)){
  3.  
  4. $add = mysql_query("INSERT INTO users SET imie='$imie', nazwisko='$nazwisko', login='$login', haslo='$haslo'");
  5.  
  6. if($add){
  7. echo "Użytkownik został zarejestrowany. Możesz się teraz zalogować.";
  8. }else{
  9. echo "Sprawdź czy wszystkie pola zostały wypełnione."; // chodzi dokładnie o ten komunikat - dlaczego nie jest wyświetlany?
  10. }
  11.  
  12.  
  13. }
  14. }else {
  15. echo 'gosciu istnieje';
  16. }

teraz widzisz?
jasin
Rozumiem, że chodzi o sytuację gdy użytkownik nie wypełni jakiegoś z pól: imię, nazwisko, login, hasło?
Jeśli tak to nie ma prawa to wyświetlić komunikatu z linii numer 23 ponieważ ten else dotyczy ifa z linii 22 czyli wyświetli się gdy nie uda się zrobić inserta do bazy.
  1. <?php
  2.  
  3. require('config.php');
  4.  
  5. $imie = $_POST['imie'];
  6. $nazwisko = $_POST['nazwisko'];
  7. $login = $_POST['login'];
  8. $haslo = $_POST['haslo'];
  9.  
  10. $slogin = trim($_POST['login']);
  11. $sloginz="select * from users where login='$login'";
  12. $zlogin = mysql_query($sloginz);
  13.  
  14. if(mysql_num_rows($zlogin)==0)
  15. {
  16. if(($imie) && ($nazwisko) && ($login) && ($haslo))
  17. {
  18. $add = mysql_query("INSERT INTO users SET imie='$imie', nazwisko='$nazwisko', login='$login', haslo='$haslo'");
  19. if($add)
  20. {
  21. echo "Użytkownik został zarejestrowany. Możesz się teraz zalogować.";
  22. }
  23. else
  24. {
  25. echo "Nie udało się wstawić wiersza do bazy";
  26. }
  27. }
  28. else
  29. {
  30. echo "Sprawdź czy wszystkie pola zostały wypełnione.";
  31. }
  32.  
  33. }
  34. else
  35. {
  36. echo 'gosciu istnieje';
  37. }
  38.  
  39. ?>
erix
Super, dziękujemy za pozbawienie możliwości wysilenia szarych komórek.
sada
przed insertem daj
echo $a.' '.$b.' '.$c.' '.$d;exit;

z wszystkimi zmiennymi pakowanymi do bazy

Być może trzeba dodać jakieś adslashes czy coś...

Potem usunąć to echo a dać po insercie echo cokolwiek by sprawdzić czy przechodzi dalej
arek33
@erix, brakuje jednego else. Dodałem go, ale to nie pomaga. Kombinowałem na różne sposoby i nici.

Natomiast kod @jasin już na samym starcie wyrzuca błąd o istnieniu użytkownika.
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.