Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] SELECT x FROM y WHERE...
Forum PHP.pl > Forum > Przedszkole
Włodzimierz
Witam.
Chciałbym dodać do formularza rejestracji sprawdzanie, czy nik jest już zarejestrowany.
Kod pochodzi stąd: http://www.developphp.com/view.php?tid=1187
Łącze się z bazą bez problemu, całość działa- informuje o takich rzeczach, czy nik jest za krótki, czy rozpoczyna się literą itp, ale nie może sobie poradzić ze sprawdzaniem, czy nik jest już zarejestrowany przez innego użytkownika(Zawsze otrzymuję wiadomość "admin is OK")

Zmienna $sql_uname_check z powyższego linku u mnie wygląda tak:
  1. $sql_uname_check = mysql_query("SELECT username FROM users WHERE username='$username' LIMIT 1");

Kombinuje na wszelkie możliwe sposoby, lecz zapewne diabeł tkwi w szczegółach(lub całkowicie źle to interpretuję), i skrypt nie wyszukuje ników z kolumny username.
Screen mojej bazy danych phpmyadmin:
http://zapodaj.net/5e3aaaf255441.png.html

Co robię nie tak?
Aa- wykorzystuję MySqli, nie wiem, czy to ma jakieś znaczenie.
Turson
Cytat
Aa- wykorzystuję MySqli, nie wiem, czy to ma jakieś znaczenie.

Tak, bo używasz mysql_query, które jest zarezerwowane dla MySQL a nie MySQLi
Włodzimierz
Zmieniłem mysql_query na mysqli_query oraz mysql_num_rows na mysqli_num_rows, i niestety dalej to samo.
Mój kod:

  1. <?php
  2. if(isset($_POST["name2check"]) && $_POST["name2check"] != ""){
  3. include_once 'config.php';
  4. mysqli_connect($db_host,$db_username,$db_password,$db_name) or die('error'.mysql_error());
  5. $username = preg_replace('#[^a-z0-9]#i', '', $_POST['name2check']);
  6. $sql_uname_check = mysqli_query("SELECT username FROM users WHERE username='$username' LIMIT 1");
  7. $uname_check = mysqli_num_rows($sql_uname_check);
  8. if (strlen($username) < 4) {
  9. echo '4 - 15 characters please';
  10. exit();
  11. }
  12. if (is_numeric($username[0])) {
  13. echo 'First character must be a letter';
  14. exit();
  15. }
  16. if ($uname_check < 1) {
  17. echo '<strong>' . $username . '</strong> is OK';
  18. exit();
  19. } else {
  20. echo '<strong>' . $username . '</strong> is taken';
  21. exit();
  22. }
  23. }
  24. ?>
  25.  
  26.  
  27.  
  28.  
  29. <html>
  30. <head>
  31. <script type="text/javascript" language="javascript">
  32. function checkusername(){
  33. var status = document.getElementById("usernamestatus");
  34. var u = document.getElementById("uname").value;
  35. if(u != ""){
  36. status.innerHTML = 'checking...';
  37. var hr = new XMLHttpRequest();
  38. hr.open("POST", "reg.php", true);
  39. hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  40. hr.onreadystatechange = function() {
  41. if(hr.readyState == 4 && hr.status == 200) {
  42. status.innerHTML = hr.responseText;
  43. }
  44. }
  45. var v = "name2check="+u;
  46. hr.send(v);
  47. }
  48. }
  49. </script>
  50. </head>
  51. <body>
  52. <input type="text" name="uname" id="uname" onBlur="checkusername()" maxlength="15" />
  53. <span id="usernamestatus"></span>
  54. </body>
  55. </html>
mmmmmmm
  1. $sql_uname_check = mysqli_query("SELECT username FROM users WHERE username='$username' LIMIT 1");
  2. $uname_check = mysqli_num_rows($sql_uname_check);
  3. if ($uname_check < 1) {
  4. echo '<strong>' . $username . '</strong> is OK';
  5. exit();
  6. }

Jeśli jest <1 (czyli 0), to wedy 'is OK' questionmark.gif
Włodzimierz
No tak. Pewnie dlatego, że nie może dostać sie do tej kolumny(username), to też nie sprawdzi, czy w niej jest taki nick, więc dlatego zmienna wynosi 0.


Edit:
Zainstalowałem na test forum na zwykłym MySQL, i mimo to nie działa.
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.