Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Zwracać prawdę bądz fałsz
Piotrwusek
post
Post #1





Grupa: Zarejestrowani
Postów: 399
Pomógł: 7
Dołączył: 11.06.2007
Skąd: Poznan

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


Jakie zrobić zapytanie do bazy danych które jako wynik poda mi prawdę bądź fałsz.

Jeżeli taki użytkownik jest w bazie to niech zwróci fałsz, jeżeli nie ma to niech zwróci prawdę.

Ten post edytował JaRoPHP 23.12.2007, 20:07:39
Powód edycji: Poprawa ortografii.
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
webdice
post
Post #2


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Zrób to po prostu tak:
  1. <?php
  2. $query = mysql_query ("SELECT COUNT(*) as `count` FROM `users` WHERE `nazwa` = 'nazwa użytkownika'"); // bądź wyszukuj po innym polu
  3.  
  4. $row = musql_fetch_assoc ($query);
  5.  
  6. if ($row['count'] == 0)
  7. {
  8. // nie ma uzytkownika
  9. }
  10. else
  11. {
  12. // jest użytkownik
  13. }
  14. ?>


Ten post edytował webdicepl 23.12.2007, 19:27:52
Go to the top of the page
+Quote Post
Lion_87
post
Post #3





Grupa: Zarejestrowani
Postów: 850
Pomógł: 120
Dołączył: 15.02.2007
Skąd: Łódź

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


może zapytaj o count?
Go to the top of the page
+Quote Post
sniezny_wilk
post
Post #4





Grupa: Zarejestrowani
Postów: 732
Pomógł: 80
Dołączył: 25.05.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Inna wersja:

  1. <?php
  2. $query = mysql_query ("SELECT * FROM `users` WHERE `nazwa` = 'nazwa użytkownika'"); 
  3.  
  4. $count = mysql_num_rows($query); 
  5.  
  6. echo( $count );
  7. //wyświetli "1" (prawda) - jak jest user, lub "0" (fałsz) jeśli takiego nie ma.
  8. ?>


Ten post edytował sniezny_wilk 23.12.2007, 19:33:38


--------------------
Go to the top of the page
+Quote Post
Piotrwusek
post
Post #5





Grupa: Zarejestrowani
Postów: 399
Pomógł: 7
Dołączył: 11.06.2007
Skąd: Poznan

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


A na jakiej zasadzie działa rejestracja na nasza-klasa.pl

http://nasza-klasa.pl/register

Że odrazu po wpisaniu loginu i przeniesieniu kursora w inne miejsce sprawdza czy istnieje podany login.
Go to the top of the page
+Quote Post
webdice
post
Post #6


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Poczytaj o AJAX'ie.

~sniezny_wilk mysql_num_rows" title="Zobacz w manualu PHP" target="_manual nie powinno się używać, jest o wiele wolniejsze od count, nie wspominam juz o tym że w PDO nie ma takiej funkcji.

Ten post edytował webdicepl 23.12.2007, 19:48:48
Go to the top of the page
+Quote Post
sniezny_wilk
post
Post #7





Grupa: Zarejestrowani
Postów: 732
Pomógł: 80
Dołączył: 25.05.2005
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


Zapewne jest to oparte na AJAX'ie i jakimś skrypcie sprawdzającym bazę. Po przeniesieniu kursora odpalana jest funkcja wysyłająca podany login do php, ten sprawdza w bazie (może być podobnie jak to o co pytałeś) czy istnieje i zwraca 0, 1. Po przeczytaniu tej informacji wystarczy JS'em wyświetlić konkretny komunikat.

@webdicepl wg. moich testów dla pojedynczego zapytania obydwie metody są tak samo szybkie (średnie czasy wykonywania). Założyłem, że Piotrwusek, chce dostać jak najprostszą metodę i tak jako pierwsza wpadła mi do głowy.

Ten post edytował sniezny_wilk 23.12.2007, 20:04:15


--------------------
Go to the top of the page
+Quote Post
webdice
post
Post #8


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Napisane z nudów smile.gif.

  1. <title>check login</title>
  2.  
  3.  
  4. function checkLogin (name)
  5. {
  6. var ajaxRequest = false;
  7.  
  8. if (window.XMLHttpRequest)
  9. {
  10. ajaxRequest = new XMLHttpRequest ();
  11.  
  12. if (ajaxRequest.overrideMimeType)
  13. {
  14. ajaxRequest.overrideMimeType ('text/xml');
  15. }
  16. }
  17. else if (window.ActiveXObject)
  18. {
  19. try
  20. {
  21. ajaxRequest = new ActiveXObject ("Msxml2.XMLHTTP");
  22. }
  23. catch (exception)
  24. {
  25. ajaxRequest = new ActiveXObject ("Microsoft.XMLHTTP");
  26. }
  27. }
  28.  
  29. ajaxRequest.open ('GET', 'check.php?login=' + name, true);
  30.  
  31. ajaxRequest.onreadystatechange = function ()
  32. {
  33. if (ajaxRequest.readyState == 1)
  34. {
  35. alert ('SPRZAWDZANIE...');
  36. }
  37. else if (ajaxRequest.readyState == 4)
  38. {
  39. if (ajaxRequest.status == 200)
  40. {
  41. if (ajaxRequest.responseText == 'YES')
  42. {
  43. alert ('PODANY LOGIN ISTNIEJE');
  44. }
  45. else if (ajaxRequest.responseText == 'NO')
  46. {
  47. alert ('PODANY LOGIN NIE ISTNIJE');
  48. }
  49. else
  50. {
  51. alert ('BLAD2');
  52. }
  53. }
  54. else
  55. {
  56. alert ('BLAD3');
  57. }
  58. };
  59.  
  60. ajaxRequest.send (null);
  61. }
  62.  
  63. </script>
  64. </head>
  65.  
  66. <form name="form" method="POST">
  67. <input onBlur="checkLogin (this.value);" type="text" name="login" />
  68. </form>
  69.  
  70. </body>
  71. </html>


  1. <?php
  2.  
  3. $query = mysql_query ("SELECT COUNT(*) as `count` FROM `users` WHERE `login` = '" . $_GET['login'] . "'") or die (mysql_error ());
  4.  
  5. $row = mysql_fetch_assoc ($query);
  6.  
  7. if ($row['count'] == 0)
  8. {
  9. print 'NO';
  10. }
  11. else
  12. {
  13. print 'YES';
  14. }
  15.  
  16. ?>


Jest kilka rzeczy do poprawienia, ale to zostawiam Tobie.

Ten post edytował webdicepl 23.12.2007, 20:22:57
Go to the top of the page
+Quote Post
Piotrwusek
post
Post #9





Grupa: Zarejestrowani
Postów: 399
Pomógł: 7
Dołączył: 11.06.2007
Skąd: Poznan

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


Dzięki, właśnie czytałem kilka kursów o ajax (znalazłem coś w google), a ty przyszyłeś mi z pomocą.


No, ale teraz jest problem

Zrobiłem check.php - to mam dobrze bo mi dobrze wyświetla
Ale z tym mi nie idzie - nic nie zmieniałem jeszcze chociaż próbuje cały czas

Nic mi się nie robi.

Pomórzcie mi zarzucić wędkę, a ryb spróbuje sobie złowić i się podzielić. smile.gif
Go to the top of the page
+Quote Post
webdice
post
Post #10


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Najpierw sprawdź czy plik check.php zwraca Ci samo YES lub NO (oczywiście musisz dodać mysql_connect" title="Zobacz w manualu PHP" target="_manual oraz mysql_select_db" title="Zobacz w manualu PHP" target="_manual).

Następnie sprawdź co zwraca Ci plik html. Nie zapominaj że nie możesz otworzyć pliku lokalnie, tylko przez apache, przykładowo:

Kod
http://localhost/index.html
Go to the top of the page
+Quote Post
Piotrwusek
post
Post #11





Grupa: Zarejestrowani
Postów: 399
Pomógł: 7
Dołączył: 11.06.2007
Skąd: Poznan

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


plik check.php

zwraca mi dla

check?login=Piotrwusek YES
check?login=Wecate NO

A plik index.html otwieram na zdalnym serwerze. I nic mi sie nie zwraca. LINK
Go to the top of the page
+Quote Post
webdice
post
Post #12


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Nie zamykasz klamry w instrukcji:

Kod
else if (ajaxRequest.readyState == 4)
Go to the top of the page
+Quote Post
Piotrwusek
post
Post #13





Grupa: Zarejestrowani
Postów: 399
Pomógł: 7
Dołączył: 11.06.2007
Skąd: Poznan

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


ooo Dzięki,


zamknołem ją po bład 3 smile.gif


to mi sie wyświetla SPRAWDZANIE i błąd 2 sad.gif



jak można zamiast okienek to wyświetlić to w stronie winksmiley.jpg

edit

próbowałem zmiennymi ale nie wychodzi

jak zmienić te wyskakujące okienka na tekst w stronie?

Ten post edytował Piotrwusek 23.12.2007, 23:29:31
Go to the top of the page
+Quote Post
webdice
post
Post #14


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Poczytaj o innerHTML.
Go to the top of the page
+Quote Post
Piotrwusek
post
Post #15





Grupa: Zarejestrowani
Postów: 399
Pomógł: 7
Dołączył: 11.06.2007
Skąd: Poznan

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


Dzięki...


Już nie wyskakują mi okienka tylko tekst.

Tak zrobiłem

  1. <?php
  2. document.getElementById('spr').innerHTML="Sprawdzanie...";
  3. ?>

  1. <td id="spr"></td>


Ale cały czas poazuje mi się BŁĄD 2

Ten post edytował Piotrwusek 24.12.2007, 09:12:07
Go to the top of the page
+Quote Post
webdice
post
Post #16


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Źle deklarujesz zmienne, musi być tak:
Kod
var NO  = 'NO';
var YES = 'YES';
Go to the top of the page
+Quote Post
Piotrwusek
post
Post #17





Grupa: Zarejestrowani
Postów: 399
Pomógł: 7
Dołączył: 11.06.2007
Skąd: Poznan

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


Próbowałem tak i mi nie idze, cały czas ten błąd 2

Kod
<script>

function checkLogin (name)
{
var ajaxRequest = false;
var NO  = 'NO';
var YES = 'YES';
if (window.XMLHttpRequest)
{
ajaxRequest = new XMLHttpRequest ();

if (ajaxRequest.overrideMimeType)
{
ajaxRequest.overrideMimeType ('text/xml');
}
}
else if (window.ActiveXObject)
{
try
{
ajaxRequest = new ActiveXObject ("Msxml2.XMLHTTP");
}
catch (exception)
{
ajaxRequest = new ActiveXObject ("Microsoft.XMLHTTP");
}
}

ajaxRequest.open ('GET', 'check.php?login=' + name, true);

ajaxRequest.onreadystatechange = function ()
{
if (ajaxRequest.readyState == 1)
{
document.getElementById('spr').style.color = 'blue';
document.getElementById('spr').innerHTML="Sprawdzanie...";
}
else if (ajaxRequest.readyState == 4)
{
if (ajaxRequest.status == 200)
{
if (ajaxRequest.responseText == YES)
{
document.getElementById('spr').style.color = 'red';
document.getElementById('spr').innerHTML="Login jest już zajęty.";
}
else if (ajaxRequest.responseText == NO)
{
document.getElementById('spr').style.color = 'green';
document.getElementById('spr').innerHTML="Login poprawny i dostępny.";
}
else
{
document.getElementById('spr').style.color = 'black';
document.getElementById('spr').innerHTML='Błąd 2';
}
}
else
{
document.getElementById('spr').style.color = 'black';
document.getElementById('spr').innerHTML="Błąd 3";
}
}
};

ajaxRequest.send (null);
}

</script>


Ten post edytował Piotrwusek 24.12.2007, 20:39:25
Go to the top of the page
+Quote Post
webdice
post
Post #18


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Coś źle zwracasz w pliku check.php. Musisz zwrócić tylko YES lub NO bez żadnych innych znaków białych, a Twój skrypt zwraca:

Kod




YES
Go to the top of the page
+Quote Post
Piotrwusek
post
Post #19





Grupa: Zarejestrowani
Postów: 399
Pomógł: 7
Dołączył: 11.06.2007
Skąd: Poznan

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


plik check.php

  1. <?php
  2.  
  3. include("includes/config.php");
  4.  
  5. mysql_connect(HOST, ROOT, PASS) or die ("Nie masz uprawnien");
  6.  
  7. include("includes/language/". LANGUAGE .".php");
  8.  
  9. $query = mysql_query ("SELECT COUNT(*) as `count` FROM `".NAMEBASE."users` WHERE `login` = '" . $_GET['login'] . "'") or die (mysql_error ());
  10.  
  11. $row = mysql_fetch_assoc ($query);
  12.  
  13. if ($row['count'] == 0)
  14. {
  15. print 'NO';
  16. }
  17. else
  18. {
  19. print 'YES';
  20. }
  21.  
  22. ?>
Go to the top of the page
+Quote Post
webdice
post
Post #20


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




To masz te znaki albo w configu, albo pliku języka.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 06:40