Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] przeszukiwanie tabeli
Marcel1989
post 12.05.2010, 16:58:47
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 9.05.2010

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


Witam, jest jakaś komenda na przeszukiwanie tabeli w poszukiwaniu konkretnego rekordu np chce sprawdzić czy Taki login już istnieje więc chce stworzyć taki rekord który to sprawdzi smile.gif PS. Jeżeli jest jakieś lepsze rozwiązanie to jestem otwarty na sugestie smile.gif Ja chce to zrobić na zasadzie przyrównania wyniku z bazy do $_POSt['xxx'] zmiennej a no i pytanie czy takie zapytanie może być utworzone jedno dla wszystkich pól abym nie musiał do każdego pola tworzyć osobnego To powinna być pętla czy coś innego questionmark.gif?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
tehaha
post 12.05.2010, 17:03:20
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


http://www.w3schools.com/php/php_mysql_where.asp
Go to the top of the page
+Quote Post
Marcel1989
post 12.05.2010, 17:05:09
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 9.05.2010

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


a coś po Polsku bo nie znam angielskiego
Go to the top of the page
+Quote Post
tehaha
post 12.05.2010, 17:06:30
Post #4





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


http://translate.google.pl/translate?js=y&...sl=en&tl=pl
Go to the top of the page
+Quote Post
Marcel1989
post 12.05.2010, 17:15:07
Post #5





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 9.05.2010

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


  1. <?php
  2.  
  3. include_once('cfg.php');
  4.  
  5. $result = mysql_query ("SELECT login FROM user WHERE login='".$_POST['login']."'");
  6. if($_POST['login'] == $result)
  7. {
  8. echo "Dziala";
  9. if($_GET['step'] == "newacount") {
  10.  
  11. $zapytanie = "INSERT INTO `user` (`id`, `login`, `password`, `e-mail`, `avatar`) VALUES ('', '".$_POST['login']."', '".md5($_POST['password'])."', '".$_POST['e-mail']."', '')" ;
  12. $idzapytania = mysql_query($zapytanie);
  13.  
  14. }
  15.  
  16. }
  17. else {
  18.  
  19. echo"a wypierdalaj";
  20.  
  21. }
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28. ?>
  29.  


Co to robię źle ?
Go to the top of the page
+Quote Post
tehaha
post 12.05.2010, 17:30:39
Post #6





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


widzę, że krucho z podstawami...
w linijce 6, stworzyłeś zapytanie, które pobiera wszystkie rekordy, gdzie login = $_POST['login'], więc potem chcesz sprawdzić czy został zwrócony jakikolwiek rekord, bo jeżeli tak to login jest zajęty
  1. $result = mysql_query ("SELECT login FROM user WHERE login='".$_POST['login']."'");
  2.  
  3. if(mysql_num_rows($result) > 0)
  4. {
  5. echo "ten login jest zajęty";
  6. } else
  7. {
  8. //utwórz nowe konto użytkownika
  9. }


tak na marginesie
- zanim wsadzisz do zapytania dane pochodzące z formularza, koniecznie użyj funkcji mysql_real_escape_string();
- sama funkcja mysql_query() wysyła zapytanie do bazy, aby odebrać zwrócone rekordy musisz jeszcze użyć funkcji mysql_fetch_array()
Go to the top of the page
+Quote Post
croc
post 12.05.2010, 17:32:02
Post #7





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Ja nie do końca rozumiem co chcesz osiągnąć, ale żeby wyszukać użytkownika o danym loginie możesz zrobić np. tak:
  1. $zapytanie = mysql_query('SELECT 1 FROM user WHERE login = \'' . mysql_real_escape_string($_POST['login']) . '\'');
  2. $liczba = mysql_num_rows($zapytanie);

Zmienna $liczba będzie zawierała liczbę znalezionych rekordów, więc odpalasz akcję jeśli $liczba === 1 czy tam $liczba > 0, jak wolisz (ja wolę to pierwsze).

Można też wybierać od razu liczbę, tj.
  1. $zapytanie = mysql_query('SELECT count(1) AS liczba FROM user WHERE login = \'' . mysql_real_escape_string($_POST['login']) . '\'');
  2. $wynik = mysql_fetch_assoc($zapytanie);

I tu masz liczbę rekordów w $wynik['liczba']. To drugie jest mniej czytelne, ale szybsze.
Go to the top of the page
+Quote Post

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 Wersja Lo-Fi Aktualny czas: 25.07.2025 - 10:11