Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak pobrac liczbe rekordów z bazy danych
romek510
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 21.12.2009

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


Witam

Jestem początkującym programistą i z php oraz mysql mam stycznosc od nie dawna. Chcialem napisac skrypt do rejestracji na strone, ale napotkałem pewien problem. Przy rejestracji chce sprawdzić czy podany login istnieje w bazie czy tez nie.
Myslałem aby użyc następującego zapytania:
  1. SELECT login FROM uzytkownicy WHERE login='$login'


Problem w ze nie wiem jak pobrac z bazy liczbe z tego zapytania. Próbowałem zrobić to w taki sposób, ale nie działa. Podpowiecie jak pobrać wynik tego zapytania z bazy aby mozna go było użyc taki sposób??

  1. <?php
  2.  
  3. mysql_connect('localhost','root','');
  4. mysql_select_db('rpa_2010');
  5. $login=$_POST['login'];
  6.  
  7. $zapytanie =mysql_query("select login from uzytkownicy WHERE login='$login'");
  8. $wynik =mysql_fetch_assoc($zapytanie);
  9. if($wynik==0)
  10. {
  11. $haslo=$_POST['haslo'];
  12. $haslo2=$_POST['haslo2'];
  13. if ($haslo==$haslo2)
  14. {
  15. $id=$_POST['los'];
  16. $odp=$_POST['token'];
  17. $slowa=file('hasla.txt');
  18. if(trim($slowa[$id])==$odp)
  19. {
  20. mysql_connect('localhost','root','');
  21. mysql_select_db('rpa_2010');
  22.  
  23. if ($_POST['zapisz']==1)
  24. { $save = "INSERT INTO `uzytkownicy` (
  25. `login` ,
  26. `haslo` ,
  27. `imie` ,
  28. `nazwisko` ,
  29. `miasto` ,
  30. `adres_email` ,
  31. `plec`
  32. )
  33. VALUES (
  34. '".$_POST['login']."', '".$_POST['haslo']."', '".$_POST['imie']."', '".$_POST['nazwisko']."', '".$_POST['miasto']."', '".$_POST['adres_email']."', '".$_POST['plec']."'
  35. );";
  36. mysql_query($save);
  37. header("Location: ../../index.php");
  38. }
  39. }
  40. else
  41. {
  42. echo header("Location: ../../rejestracja.php?wyswietlanie=1");
  43. //dalsze instrukcje, jeśli token jest niepoprawny
  44. }
  45. }
  46. else
  47. {
  48. echo header("Location: ../../rejestracja.php?wyswietlanie=2");
  49. }
  50. }
  51. else
  52. {
  53. echo header("Location: ../../rejestracja.php?wyswietlanie=3");
  54. //wyświetlanie w razie istniejącego juz takiego loginu w bazie
  55. }
  56. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
marcinpruciak
post
Post #2





Grupa: Zarejestrowani
Postów: 161
Pomógł: 9
Dołączył: 14.07.2008

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


  1. SELECT count(*) FROM uzytkownicy WHERE login='$login'


Po za tym zrób sobie print_r($wynik) i dojdziesz to tego sam.

Go to the top of the page
+Quote Post
Mchl
post
Post #3





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


Tak naprawdę chodzi Ci o to, żeby sprawdzić, czy w pazie jest 0, czy conajmniej jeden wiersz spełniający ten warunek. Tak więc puszczsz zapytanie
Kod
SELECT login FROM uzytkownicy WHERE login='$login' LIMIT 1

a potem sprawdzasz mysql_num_rows()
Go to the top of the page
+Quote Post
prachwal
post
Post #4





Grupa: Zarejestrowani
Postów: 171
Pomógł: 18
Dołączył: 13.03.2009
Skąd: lublin

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


  1. SELECT count(login) AS ile FROM uzytkownicy WHERE login='$login' LIMIT 1


wynik albo 0 albo 1

Ten post edytował prachwal 22.12.2009, 07:15:44
Go to the top of the page
+Quote Post
Mchl
post
Post #5





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


A po co ten limit wtedy (IMG:style_emoticons/default/winksmiley.jpg) ?
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




O ile dobrze pamiętam, to wymusza to taką optymalizację zapytania, aby nie szukało więcej niż jeden rekord.

Nie mam 100% pewności, ale na mój rozum - jeśli nie ma limit, to przeszukuje całą tabelę w poszukiwaniu wszystkich rekordów spełniających warunek, jeśli jest limit - po pierwszym napotkanym przerywa.

Niech ktoś mnie poprawi, jeśli się mylę. (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Mchl
post
Post #7





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


Poprawiam. Byłoby jak mówisz, gdyby w zapytaniu nie było funkcji agregującej.

Ten post edytował Mchl 22.12.2009, 15:26:55
Go to the top of the page
+Quote Post
phpion
post
Post #8





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(erix @ 22.12.2009, 14:16:39 ) *
Nie mam 100% pewności, ale na mój rozum - jeśli nie ma limit, to przeszukuje całą tabelę w poszukiwaniu wszystkich rekordów spełniających warunek, jeśli jest limit - po pierwszym napotkanym przerywa.

Chyba się jednak mylisz. Idąc Twoim tokiem rozumowania zapytanie:
  1. SELECT COUNT(*) FROM tabela LIMIT 1

zwróciłoby albo 0 albo 1. To nie jest prawda. Sprawdź zresztą sam - zapytanie bez LIMIT zwróci dokładnie to samo co z ograniczeniem. To o czym mówisz:
Cytat(erix @ 22.12.2009, 14:16:39 ) *
po pierwszym napotkanym przerywa.

to cecha klauzuli EXISTS w warunku. Jeżeli podzapytanie napotka pierwszy rekord pasujący do zadanych w nim warunków to przerywa dalsze sprawdzanie.
Go to the top of the page
+Quote Post
romek510
post
Post #9





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 21.12.2009

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


dzieki za pomoc.
Użylem takiego zapytania a pożniej warunków.

  1. $zapytanie =mysql_query("select count(*) as suma from uzytkownicy WHERE login='$login'");
  2. $wynik =mysql_fetch_assoc($zapytanie);
  3. $ile=$wynik['suma'];


Mam jeszcze jedno pytanko, w jaki sposób w razie wystepujacego w bazie juz takiego loginu lub niezgodnosci wpisanych haseł powrocic do strony rejestracji w taki sposób aby pola formularza były uzupełnione tym co wpisalismy wczesniej??

formularz rejestracyjny'

  1. <form name="rejestracja" method="post" action="skrypty_php/Rejestracja/dane.php">
  2. <input type="hidden" name="zapisz" value =1/>
  3. <table style="color:black" width="548" cellpadding="0" cellspacing="0" class="news">
  4. <tr>
  5. <td align="center" class="tyt_news"><img class="img_news" src="images/img_27.gif" width="5" height="7">Login&nbsp;<img class="img_news" src="images/img_27.gif" width="5" height="7" /></td>
  6. </tr>
  7. <tr>
  8. <td align="center"><input style="color:black" type="text" name="login" id="login_rej" maxlength="15" /></td>
  9. </tr>
  10. <tr>
  11. <td align="center" class="tyt_news"><img class="img_news" src="images/img_27.gif" width="5" height="7">Haslo&nbsp;<img class="img_news" src="images/img_27.gif" width="5" height="7" /></td>
  12. </tr>
  13. <tr>
  14. <td align="center"><input style="color:black" type="password" name="haslo" id="haslo_rej" maxlength="15"/></td>
  15. </tr>
  16. <tr>
  17. <td align="center" class="tyt_news"><img class="img_news" src="images/img_27.gif" width="5" height="7">Powtórz Hasło&nbsp;<img class="img_news" src="images/img_27.gif" width="5" height="7" /></td>
  18. </tr>
  19. <tr>
  20. <td align="center"><input style="color:black" type="password" name="haslo2" id="haslo_rej2" maxlength="15"/></td>
  21. </tr>
  22. <tr>
  23. <td align="center" class="tyt_news"><img class="img_news" src="images/img_27.gif" width="5" height="7" />Imię&nbsp;<img class="img_news" src="images/img_27.gif" width="5" height="7" /></td>
  24. </tr>
  25. <tr>
  26. <td align="center"><input style="color:black" type="text" name="imie" id="imie" maxlength="15"/></td>
  27. </tr>
  28. <tr>
  29. <td align="center" class="tyt_news"><img class="img_news" src="images/img_27.gif" width="5" height="7" />Nazwisko&nbsp;<img class="img_news" src="images/img_27.gif" width="5" height="7" /></td>
  30. </tr>
  31. <tr>
  32. <td align="center"><input style="color:black" type="text" name="nazwisko" id="nazwisko" maxlength="15"/></td>
  33. </tr>
  34. <tr>
  35. <td align="center" class="tyt_news"><img class="img_news" src="images/img_27.gif" width="5" height="7" />Miasto&nbsp;<img class="img_news" src="images/img_27.gif" width="5" height="7" /></td>
  36. </tr>
  37. <tr>
  38. <td align="center"><input style="color:black" type="text" name="miasto" id="miasto" maxlength="15" /></td>
  39. </tr>
  40. <tr>
  41. <td align="center" class="tyt_news"><img class="img_news" src="images/img_27.gif" width="5" height="7"/>E-mail&nbsp;<img class="img_news" src="images/img_27.gif" width="5" height="7" /></td>
  42. </tr>
  43. <tr>
  44. <td align="center"><input style="color:black" type="text" name="adres_email" id="adres_email" maxlength="25"/></td>
  45. </tr>
  46. <tr>
  47. <td align="center" class="tyt_news"><img class="img_news" src="images/img_27.gif" width="5" height="7"/>Plec&nbsp;<img class="img_news" src="images/img_27.gif" width="5" height="7" /></td>
  48. </tr>
  49. <tr>
  50. <td align="center">
  51. <input style="color:black" type="RADIO" value="K" name="plec"/>Kobieta
  52. <input style="color:black" type="RADIO" value="M" name="plec"/>Mezczyzna
  53. </td>
  54. </tr>
  55. <tr>
  56. <td align="center">
  57. <table>
  58. <tr>
  59. <td>
  60. <?php
  61. $slowa=file('hasla.txt');
  62. $id=rand(0,count($slowa)-1);
  63. echo '<img src="pic.php?id='.$id.'"></td><td><input style="color:black" type="text" name="token" size="20">';
  64. ?>
  65. <input type="hidden" name="los" value="<? echo $id; ?>">
  66. </td>
  67. </tr>
  68. <tr>
  69. <td colspan="2" align="center" style="color:red">
  70. <?php
  71. $wyswietlanie=$_GET['wyswietlanie'];
  72.  
  73. if ($wyswietlanie==0)
  74. {
  75. echo "Podaj kod z obrazka";
  76. }
  77.  
  78. if ($wyswietlanie==1)
  79. {
  80. echo "Podałes zły kod z obrazka";
  81. }
  82.  
  83. if ($wyswietlanie==2)
  84. {
  85. echo "Podane hasła są różne";
  86. }
  87.  
  88. if ($wyswietlanie==3)
  89. {
  90. echo "Podany login jest zajety";
  91. }
  92.  
  93.  
  94. ?>



dane.php
  1. <?php
  2.  
  3. mysql_connect('localhost','root','');
  4. mysql_select_db('rpa_2010');
  5. $login=$_POST['login'];
  6.  
  7. mysql_connect('localhost','root','');
  8. mysql_select_db('rpa_2010');
  9. $login=$_POST['login'];
  10.  
  11. $zapytanie =mysql_query("select count(*) as suma from uzytkownicy WHERE login='$login'");
  12. $wynik =mysql_fetch_assoc($zapytanie);
  13. $ile=$wynik['suma'];
  14.  
  15. if($ile==0)
  16. {
  17. $haslo=$_POST['haslo'];
  18. $haslo2=$_POST['haslo2'];
  19. if ($haslo==$haslo2)
  20. {
  21. $id=$_POST['los'];
  22. $odp=$_POST['token'];
  23. $slowa=file('hasla.txt');
  24. if(trim($slowa[$id])==$odp)
  25. {
  26. mysql_connect('localhost','root','');
  27. mysql_select_db('rpa_2010');
  28.  
  29. if ($_POST['zapisz']==1)
  30. { $save = "INSERT INTO `uzytkownicy` (
  31. `login` ,
  32. `haslo` ,
  33. `imie` ,
  34. `nazwisko` ,
  35. `miasto` ,
  36. `adres_email` ,
  37. `plec`
  38. )
  39. VALUES (
  40. '".$_POST['login']."', '".$_POST['haslo']."', '".$_POST['imie']."', '".$_POST['nazwisko']."', '".$_POST['miasto']."', '".$_POST['adres_email']."', '".$_POST['plec']."'
  41. );";
  42. mysql_query($save);
  43. header("Location: ../../index.php");
  44. }
  45. }
  46. else
  47. {
  48. echo header("Location: ../../rejestracja.php?wyswietlanie=1");
  49. //dalsze instrukcje, jeśli token jest niepoprawny
  50. }
  51. }
  52. else
  53. {
  54. echo header("Location: ../../rejestracja.php?wyswietlanie=2");
  55. }
  56. }
  57. else
  58. {
  59. echo header("Location: ../../rejestracja.php?wyswietlanie=3");
  60. //wyświetlanie w razie istniejącego juz takiego loginu w bazie
  61. }
  62. ?>
Go to the top of the page
+Quote Post
marcinpruciak
post
Post #10





Grupa: Zarejestrowani
Postów: 161
Pomógł: 9
Dołączył: 14.07.2008

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


Zamien

  1. <input style="color:black" type="text" name="login" id="login_rej" maxlength="15" />


na

  1. <input style="color:black" type="text" name="login" id="login_rej" maxlength="15" <? echo (isset($_POST['login'])) ? 'value="'.$_POST['login'].'" : ''?>/>


Go to the top of the page
+Quote Post
darko
post
Post #11





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Jak wyżej, np. prześlij dane formularzem do tego samego skryptu, waliduj, jeśli nie przejdzie walidacji, to ponownie wyświetl formularz(z polami wypełnionymi wartościami z $_POST), jeśli przejdzie, to wpis do BD (i przekierowanie na info, że wszystko jest ok).
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 22:28