Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]Problem z where clause
aga323
post
Post #1





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

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


Witam. Otóż mam problem. Mam zrobione logowanie i gdy wpisze dobre haslo i login to mnie normalnie loguje, a kiedy wpiszę złe zamiast wyświetlić sie po prostu "Zły login" wyświetla się:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/sites/yoyo.pl/g/2/g2test/dziennik/log.php on line 18
Unknown column 'jakistamlogin' in 'where clause'

Może podam kawałek kodu, gdzie wywala błąd
  1. <?php
  2. $query = "SELECT * FROM user WHERE user = $login_f";
  3. $result = mysql_query ($query);
  4. //-------------------------
  5. //Sprawdzenie czy baza zwróciła przynajmniej 1 rekord.
  6. $ilosc = mysql_num_rows($result) or die (mysql_error()); // to jest ta nieszczęsna linia 18 
  7. if($ilosc==0)
  8. {
  9. echo 'Zly login';
  10. }
  11. else
  12. { // tu tam dalszy ciąg ale już nie istotny
  13. ?>

Proszę o pomoc


--------------------
Go to the top of the page
+Quote Post
Darti
post
Post #2





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


Zastosuj odpowiednie apostrofy:
  1. SELECT * FROM `user` WHERE `user` = '$login_f'


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
Go to the top of the page
+Quote Post
aga323
post
Post #3





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

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


Dzięki, pomogło. Ale teraz się z kolei nic nie wyświetla sad.gif A powinno sie wyświetlać "Zły login"


--------------------
Go to the top of the page
+Quote Post
Darti
post
Post #4





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


Sprawdź co robi die" title="Zobacz w manualu PHP" target="_manual lub exit" title="Zobacz w manualu PHP" target="_manual


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
Go to the top of the page
+Quote Post
aga323
post
Post #5





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

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


Hmmm... sprawdziłam ale cos mi nie wychodzi, zapewne robie coś źle. Próbuję tak:
  1. <?php
  2. $query = "SELECT * FROM `user` WHERE `user` = '$login_f' ";
  3. $result = mysql_query ($query);
  4. //-------------------------
  5. //Sprawdzenie czy baza zwróciła przynajmniej 1 rekord.
  6. $ilosc = mysql_num_rows($result) or die (mysql_error());
  7. if($ilosc==0)
  8. {
  9. exit ( "Zly login");
  10.  
  11. }
  12. else
  13. {
  14. //Baza zwróciła jakieś pozycje, tak więc dzielimy je na tablice.
  15. $wynik=mysql_fetch_array($result);
  16. // itd.....
  17. ?>


--------------------
Go to the top of the page
+Quote Post
MiFlo
post
Post #6





Grupa: Zarejestrowani
Postów: 92
Pomógł: 4
Dołączył: 12.09.2006
Skąd: 127.0.0.1

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


a nie lepiej tak ?
  1. <?php
  2. $q = mysql_query("SELECT * FROM users WHERE name='".$name."' AND pass='".$pass."';");
  3. $r = @mysql_fetch_array($q);
  4. if(!empty($r['name']))
  5. {
  6. //logowanie
  7. }
  8. else
  9. {
  10. //zly login
  11. }
  12. ?>

Może być jakiś błąd bo nie sprawdzałem smile.gif
Go to the top of the page
+Quote Post
aga323
post
Post #7





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

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


MiFlo Twój pomysl pomógł, ale tylko w pewnym stopniu... Bo teraz coś reszta nie chce działac tongue.gif Wyskkuje błąd:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/sites/yoyo.pl/g/2/g2test/dziennik/log.php on line 23
podam kod:
  1. <?php
  2. //Nadajemy zmiennej $login_f wartość jaką użytkownik wpisał w pole Login
  3. $login_f = $_POST['user'];
  4. //Nadajemy zmiennej $pass_f wartość jaką użytkownik wpisał w pole Haslo
  5. $pass_f = $_POST['pass'];
  6. //Laczenie z baza
  7. include ("connect.php");
  8. //-------------------------
  9. //  Zapytanie
  10. //-------------------------
  11. //pobieramy użytkownika o takim loginie z bazy.
  12. $query = mysql_query("SELECT * FROM `users` WHERE 'login'='".$login_f."' AND 'haslo'='".$pass_f."';");
  13. $result = mysql_fetch_array($query);
  14. if(!empty($result['login']))
  15. {
  16.  echo "Zły login";
  17. }
  18. else
  19. {
  20. //Baza zwróciła jakieś pozycje, tak więc dzielimy je na tablice.
  21. $wynik=mysql_fetch_array($result); //tu pokazuje błąd
  22. $login_b = $wynik['login'];
  23. $pass_b = $wynik['haslo'];
  24. if($login_f==$login_b && $pass_f==$pass_b)
  25. { //tu tam dalszy ciąg
  26. ?>

W czym tkwi problem?


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





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


Nazw kolumn nie umieszcza się w apostrofach

Ten post edytował Kicok 19.05.2007, 14:07:04


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
Darti
post
Post #9





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


@aga323 przyjrzyj się w którym miejscu @MiFlo dał logowanie a w którym miejscu złe hasło - masz na odwrót zdaje mi się ...


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
Go to the top of the page
+Quote Post
Noddi
post
Post #10





Grupa: Zarejestrowani
Postów: 45
Pomógł: 7
Dołączył: 25.12.2004
Skąd: Kraków

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


Przyjrzyj się także lini 13 i 21, po co w lini 21 znowu dzielisz tablicę wyników na kolejną tablice?


--------------------
"Yes, experience matters. No, one year repeated fifteen times does not count."
bartoszlugowski.com
Go to the top of the page
+Quote Post
JaRoPHP
post
Post #11





Grupa: Zarejestrowani
Postów: 675
Pomógł: 15
Dołączył: 7.11.2004
Skąd: Katowice

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


Funkcja mysql_fetch_array" title="Zobacz w manualu PHP" target="_manual spodziewa się argumentu, będącego odwołaniem do wykonanego zapytania MySQL, a nie do wyniku działania funkcji mysql_fetch_array.
  1. <?php
  2. $result = mysql_fetch_array($query);
  3. if(!empty($result['login'])) {
  4.  echo "Zły login";
  5. } else {
  6. $login_b = $result['login']; // już masz te dane w tablicy
  7. $pass_b = $result['haslo'];
  8. // ...
  9. }
  10. ?>


--------------------
Kto pyta, nie błądzi...
Kto zbłądził, ten pyta...
Go to the top of the page
+Quote Post
aga323
post
Post #12





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

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


Dziękuję wszystkim za trafne odpowiedzi jdnak teraz znowu jest problem... Po zalogowaniu pojawia się białe tło i nic... pustka. Podaję kod:
  1. <?
  2. //Nadajemy zmiennej $login_f wartość jaką użytkownik wpisał w pole Login
  3. $login_f = $_POST['user'];
  4. //Nadajemy zmiennej $pass_f wartość jaką użytkownik wpisał w pole Haslo
  5. $pass_f = $_POST['pass'];
  6. //Laczenie z baza
  7. include ("connect.php");
  8. //-------------------------
  9. //  Zapytanie
  10. //-------------------------
  11. //pobieramy użytkownika o takim loginie z bazy.
  12. $query = mysql_query("SELECT * FROM `users` WHERE login='".$login_f."' AND haslo='".$pass_f."';");
  13. $result = @mysql_fetch_array($query);
  14. if(!empty($result['login'])){
  15.  
  16.  $login_b = $wynik['login'];
  17.  $pass_b = $wynik['haslo'];
  18. if($login_f==$login_b && $pass_f==$pass_b)
  19. {
  20. //Tworzymy zmienną sesji $_SESSION['Login'] i nadajemy jej
  21. //wartość jaka jest w bazie danych odpowiadająca zalogowanemu użytkownikowi.
  22. $_SESSION['User']= $login_b;
  23. $_SESSION['User_id']= $wynik['id'];
  24. $_SESSION['lewel']= $wynik['lewel'];
  25. //Zalogowanego użytkownika przenosimy na strone index.php
  26. header( 'Location: ses.php' );
  27. }
  28. }
  29.  
  30.  
  31.  
  32. else
  33. {
  34. echo "Zły login";  
  35.  
  36. }
  37. ?>


--------------------
Go to the top of the page
+Quote Post
JaRoPHP
post
Post #13





Grupa: Zarejestrowani
Postów: 675
Pomógł: 15
Dołączył: 7.11.2004
Skąd: Katowice

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


No tak, ale nazwy tablic masz różne:
  1. <?php
  2. $result = @mysql_fetch_array($query); // tutaj nazwa: $result
  3. if(!empty($result['login'])){ 
  4.  $login_b = $wynik['login']; // a tutaj nazwa: $wynik, a powinno być $result
  5.  $pass_b = $wynik['haslo']; // jw
  6. ?>

Kolejna sprawa, nie do końca rozumiem tę linijkę:
  1. <?php
  2. if($login_f==$login_b && $pass_f==$pass_b)
  3. ?>
Przecież w zapytaniu SQL wybierasz wiersz, który ma pole login równe odpowiedniej wartości (to samo dotyczy pola hasło), więc owe if jest zbyteczne.


--------------------
Kto pyta, nie błądzi...
Kto zbłądził, ten pyta...
Go to the top of the page
+Quote Post
aga323
post
Post #14





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

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


Racja, sorki mój błąd. Poprawiłam, ale nie wiem czemu całe czas jets tak samo (chociaz teraz wyświetla cały czas "Zły login" nawt przy podaniu dobrych danych... Podaję kod
  1. <?
  2. //Nadajemy zmiennej $luogin_f wartość jaką użytkownik wpisał w pole Login
  3. $login_f = $_POST['user'];
  4. //Nadajemy zmiennej $pass_f wartość jaką użytkownik wpisał w pole Haslo
  5. $pass_f = $_POST['pass'];
  6. //Laczenie z baza
  7. include ("connect.php");
  8. //-------------------------
  9. //  Zapytanie
  10. //-------------------------
  11. //pobieramy użytkownika o takim loginie z bazy.
  12. $query = mysql_query("SELECT * FROM `users` WHERE 'login'='".$login_f."' AND 'haslo'='".$pass_f."';");
  13. $result = @mysql_fetch_array($query);
  14. if(!empty($result['login'])){
  15.  
  16.  $login_b = $result['login'];
  17.  $pass_b = $result['haslo'];
  18.  
  19. //Tworzymy zmienną sesji $_SESSION['Login'] i nadajemy jej
  20. //wartość jaka jest w bazie danych odpowiadająca zalogowanemu użytkownikowi.
  21. $_SESSION['User']= $login_b;
  22. $_SESSION['User_id']= $result['id'];
  23. $_SESSION['lewel']= $result['lewel'];
  24. //Zalogowanego użytkownika przenosimy na strone index.php
  25. header( 'Location: ses.php' );
  26.  
  27. }
  28.  
  29.  
  30.  
  31. else
  32. {
  33. echo "Zły login";  
  34.  
  35. }
  36. ?>


[+] edit
Poprawiam BB Code : )
---
~strife


--------------------
Go to the top of the page
+Quote Post
strife
post
Post #15





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


1. Usuń @ z 15 linijki.
2. Zobacz co zwraca mysql_error" title="Zobacz w manualu PHP" target="_manual


--------------------
Go to the top of the page
+Quote Post
aga323
post
Post #16





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

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


@ usunięta a mysql_error nic nie zwraca.... :| i Nadal "Zły login"

Ten post edytował aga323 20.05.2007, 11:47:40


--------------------
Go to the top of the page
+Quote Post
mike
post
Post #17





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Usuń apostrofy z nazw kolumn. Może to zadziała.
Czyli z:
  1. <?php
  2. // ...
  3. $query = mysql_query("SELECT * FROM `users` WHERE 'login'='".$login_f."' AND 'haslo'='".$pass_f."';");
  4. // ...
  5. ?>
... na:
  1. <?php
  2. // ...
  3. $query = mysql_query("SELECT * FROM `users` WHERE login='".$login_f."' AND haslo='".$pass_f."';");
  4. // ...
  5. ?>
Go to the top of the page
+Quote Post
JaRoPHP
post
Post #18





Grupa: Zarejestrowani
Postów: 675
Pomógł: 15
Dołączył: 7.11.2004
Skąd: Katowice

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


Cytat(aga323 @ 20.05.2007, 10:47:10 ) *
mysql_error nic nie zwraca
A wstawiłaś gdzieś tę funkcję?

Wyświetl zapytanie, skopiuj je do np. phpMyAdmina i tam wykonaj:
  1. <?php
  2. // ...
  3. $query = "SELECT * FROM `users` WHERE 'login'='".$login_f."' AND 'haslo'='".$pass_f."';";
  4. echo $query;
  5. $query = mysql_query($query) or die(mysql_error());
  6. // ...
  7. ?>

I pokaż rezultat wykonanego skryptu.

Ten post edytował JaRoPHP 20.05.2007, 12:01:55


--------------------
Kto pyta, nie błądzi...
Kto zbłądził, ten pyta...
Go to the top of the page
+Quote Post
aga323
post
Post #19





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 26.01.2007
Skąd: Oborniki

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


Lol Mike masz racje, podziałało biggrin.gif Dziabeł tkwi w szczegółach... tongue.gif Teraz mi sie zalogowało i wyskoczył błąd w innym pliku, coś podobnego rodzaju jak ten poprzedni, ale myślę, że dam rade. Teraz sie tylko zastanawiam nad strukturą dziennika tak aby danemu wychowawcy pokazywali się tylko jego podopieczni


--------------------
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 Aktualny czas: 21.08.2025 - 16:16