Witam was z kolejnym problemem. Oto kod klasy, która rejestruje użytkownika. Na początku dopowiem, iż problem pojawił się, gdy zacząłem pisanie kodu, który sprawdza czy taki username/email już istnieje w bazie.
';
$header = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/html; charset=utf-8' . "\r\n";
/* END OF THE MAIL */
mail($email, 'Activating an account by SzkołaWEB', $text, $header);
if(isset($_SESSION['logged_admin'])) {
header('Location: http://localhost/cms-szkola/admin/users.php');
}
}
}
}
}
}
}
Problem najprawdopodobniej znajduje się tutaj
$qUserName = $this->db->query(“SELECT username FROM users WHERE username = ‘$username’”);
$qUserEmail = $this->db->query(“SELECT email FROM users WHERE email = ‘$email’”);
Ponieważ, jak to wypiszę funkcją print_r to wychodzi mi tylko Array(). Zaraz po tym kodzie mam echo ‘dsadasd’; i to właśnie to wyrzuca mi php.
Nie bardzo wiem jaka logika kryje się za tym $this->db->query ale strzelam, że dodajesz dwa zapytania zaraz po sobie i potem próbujesz wyciągnąć z nich rowCount. IMHO najlepiej zrób to w jednym zapytaniu, np.
$check = $this->db->query("SELECT username, email FROM users WHERE username = '$username' OR email = '$email' ");
No przecież podałem całą klasę. Te query są w pierwszym spoilerze(post #1) w metodzie registration_method w drugim IF’ie. One chyba nie muszą być ‘wykonywane’, ponieważ ‘wykonywanie’ występuje, gdy używamy metody prepare , a ja używam query.
Haha To ma sprawdzać czy jest czy nie ma. To jest zwykłe zablokowanie rejestracji na istniejący już nick/email. Tzn. jeżeli w bazie jest użytkownik joe i on ma email joe@gmail.joe to już nikt nie może się zarejestrować na takie dane. Dlatego mam najpierw SELECT, potem IF’a gdzie sprawdzam czy wynik SELECT’a daje 1(taki nick/email już istnieje) czy też daje 0(takiego emaila/nicka nie ma w bazie i można się zarejestrować). Tylko, że SELECT wyrzuca błąd.
OMG. Nie wiem gdzie leży problem, ponieważ PHP nie wypluwa error’ów. Zobacz sobie, gdzie mam w kodzie te dwa query pobierające nick i email. Zaraz po nich mam echo i po kliknięciu ‘rejestruj’ właśnie to echo się wykonuje. Nie wiem dlaczego metoda kończy jakby działanie na tym echo.
Synek, synek - bo widzę po loginie żeś młody - napisz konkretnie, co się wykonuje a co nie, bo Ty chyba w ogóle nie próbujesz tego debugować. Najpierw piszesz, że masz problem z tymi zapytaniami ‘dsadasd’, potem że tam nie ma błędów, teraz że rowCount są ok … jesteś konkretnie zakręcony. Napisz konkretnie co się wykonuje, a co nie. Masz tam kilka razy echo to chyba widzisz na czym stoisz … jak nie, to prawym i “pokaż źródło strony”, bo ja niestety za Ciebie tego nie kliknę.
“No rowCount() działa(tzn. jak znajdzie to wypisuje 1)” - ■■■■ a nie “jak”. Co konkretnie się pojawia jak wpiszesz “print_r($qUserName->roundCount()); print_r($qUserEmail->rowCout());” ??
Czy “lololo” się pojawia?? Czy masz alert-success czy alert-danger ??
P.S.
Moja rada … się nie obraź, tylko przemyśl … odpuść sobie, bo się do tego nie nadajesz. Na roku mam paru kolesi z podobnym zacięciem co Ty, ale z nich programiści nie będą. Za chiny ludowe, nie rozumieją co robią i co mają przed oczami.
$qUserName = $this->db->query(“SELECT username, email FROM users WHERE username = ‘$username’ OR email = ‘$email’”);
$qUserEmail = $this->db->query(“SELECT email FROM users WHERE email = ‘$email’”);
Pobieram podany nick, podany przez osobę.(jeżeli jest już taki w bazie to rowCount zwraca 1, jeżeli nie to rowCount zwraca 0)
Pobieram podany email, podany przez osobę.(jeżeli jest już taki w bazie to rowCount zwraca 1, jeżeli nie to rowCount zwraca 0)
Sprawdzam czy pobrane dane już istnieją w bazie.
Pobieram nick I email, kiedy w IF’ie mam ||.
Czyli gdy np gdy nick->rowCount będzie == 1 a email->rowCount == 0, to php nie pobierze mi maila, a ja takowego próbowałem pobrać. Teraz mam taki kod i on działa.
$qUserName = $this->db->query(“SELECT username, email FROM users WHERE username = ‘$username’ OR email = ‘$email’”);
$qUserNameRow = $qUserName->rowCount();
$qUserEmail = $this->db->query(“SELECT email FROM users WHERE email = ‘$email’”);
$qUserEmailRow = $qUserEmail->rowCount();
if($qUserNameRow == 1) {
echo ‘
Registration unsuccessfully. An user arleady use this username. ◄ Back
’;
} elseif ($qUserEmailRow == 1) {
echo ‘
Registration unsuccessfully. An user arleady use this email. ◄ Back
’;
} else {
Programowanie to jednak nie tylko sam kod, trza jeszcze trzeźwo myśleć.