Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Problem z where clause
Forum PHP.pl > Forum > Przedszkole
aga323
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
Darti
Zastosuj odpowiednie apostrofy:
  1. SELECT * FROM `user` WHERE `user` = '$login_f'
aga323
Dzięki, pomogło. Ale teraz się z kolei nic nie wyświetla sad.gif A powinno sie wyświetlać "Zły login"
aga323
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. ?>
MiFlo
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
aga323
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?
Kicok
Nazw kolumn nie umieszcza się w apostrofach
Darti
@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ę ...
Noddi
Przyjrzyj się także lini 13 i 21, po co w lini 21 znowu dzielisz tablicę wyników na kolejną tablice?
JaRoPHP
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. ?>
aga323
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. ?>
JaRoPHP
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.
aga323
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
strife
1. Usuń @ z 15 linijki.
2. Zobacz co zwraca mysql_error" title="Zobacz w manualu PHP" target="_manual
aga323
@ usunięta a mysql_error nic nie zwraca.... :| i Nadal "Zły login"
mike
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. ?>
JaRoPHP
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.
aga323
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
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.