Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zwraca błąd - negacja
Forum PHP.pl > Forum > Przedszkole
maciasgta
  1. $zapytanie2 = mysql_query("SELECT * FROM sparingi_propozycje
  2. WHERE id_gospodarz='".$_SESSION['id_zaloguj']."'
  3. OR id_gosc='".$_SESSION['id_zaloguj']."' !AND nadawca='".$_SESSION['id_zaloguj']."' ORDER BY data DESC");
  4.  


Mimo to, że umieściłem negacje przed argumentem AND to zwraca mi błąd
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Program Files\WebServ\httpd\vmanager\sparingi.php on line 137

Co mam nie tak?
Wicepsik
maciasgta
Something is wrong in your syntax obok '!AND nadawca='1' ORDER BY data DESC' w linii 3
Spawnm
Pierwsze słyszę o !AND tongue.gif
może AND nadawca>'1'
Powiedz co chcesz osiągnąć
maciasgta
Ma zwracać wszystkie rekordy oprócz tych w których nadawca = $_SESSION['id_zaloguj']

Pzdr
Fafu
!= to zaprzeczenie (czyli tego musisz użyć a nie !AND)
maciasgta
!= również nie daje efektu.

Zapytanie działa z != tak jak by tego ! nie było, więc nie wiem sam..
paw-e-l
pokaż jak teraz wygląda całe zapytanie
maciasgta
Chyba nie trudno się domyślić jak winksmiley.jpg?

  1. $zapytanie2 = mysql_query("SELECT * FROM sparingi_propozycje
  2. WHERE id_gospodarz='".$_SESSION['id_zaloguj']."'
  3. OR id_gosc='".$_SESSION['id_zaloguj']."' AND nadawca!='".$_SESSION['id_zaloguj']."' ORDER BY data DESC");
darko
" and nadawca not like ".$_SESSION['id_zaloguj']

ps.
co trzymasz w polu nadawca, czy kiedykolwiek będzie to id_zaloguj, że to sprawdzasz?
thek
Radzę pomyśleć czy aby nawiasów nie trzeba użyć w warunku. Jeśli masz identyczne (same AND lub same OR) to zazwyczaj nie ma problemu, ale czasem ludzie zapominają się i wkładają kwantyfikatory jak leci nie sprawdzając tego co zwraca takie połączenie bez stosowania nawiasów. Dlatego pewnie zwraca Ci brak rekordów.
Fafu
To może zamiast != spróbuj z <>
netmare
Nie wiem co chcesz osiągnąć ale pewnie zapisanie tego ( .... OR ....) AND .... zamiast ...... OR ...... AND ...... rozwiąże problem.
maciasgta
  1. $zapytanie2 = mysql_query("SELECT * FROM sparingi_propozycje
  2. WHERE nadawca not like '".$_SESSION['id_zaloguj']."' AND id_gospodarz='".$_SESSION['id_zaloguj']."'
  3. OR id_gosc='".$_SESSION['id_zaloguj']."' ORDER BY data DESC");
  4.  
  5. if(mysql_num_rows($zapytanie2)=='0'){
  6.  
  7. }


Przystałem na takim czymś, jednak jest taki problem, if(mysql_num_rows($zapytanie2)=='0') wynosi powyżej 0, jeżeli id_gosc = id_zaloguj.
Tzn. tak jak by nie łapał to co jest po OR.

Chce osiągnąć to co jest zapisane, czyli ma wyświetlać wszystko ze sparingi_propozycje OPRÓCZ tego gdzie nadawca = id_zaloguj, a ID_gospodarz lub id_gosc ma się równać = id_zaloguj.
zelu
Sprawdź jaka jest kolejność wykonywania oeperatorów logicznych. I wtedy dopisz gdzieniegdzie nawiasy smile.gif A właściwie 1 nawias

Poza tym mysql_num_rows zwraca Ci wartość typu int, a Ty porównujesz to ze stringem... Nigdy nie będzie spełnione winksmiley.jpg

Pozdro
maciasgta
  1. $zapytanie2 = mysql_query("SELECT * FROM sparingi_propozycje
  2. WHERE nadawca not like '".$_SESSION['id_zaloguj']."' AND id_gospodarz='".$_SESSION['id_zaloguj']."'
  3. (OR id_gosc='".$_SESSION['id_zaloguj']."') ORDER BY data DESC");
  4.  


Zwraca mi komunikat:

mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Program Files\WebServ\httpd\vmanager\sparingi.php on line 170


Przecież mysql_num_rows() zwraca mi ilość wierszy w wyniku, to nie rozumiem? Jeżeli zwraca 0 to ma pokazać coś tam, a jeżeli więcej to po prostu jest else.
Więc nie rozumiem?
aa, i proszę nie wyzywać mnie od lenia czy coś, bo według mnie robie dobrze, a jeżeli coś robie źle to po prostu napiszcie mi konkretnie na pewno zapmiętam smile.gif Po co jakieś nie przyjemności smile.gif
zelu
Jeżeli zwraca Ci "supplied argument is not a valid MySQL result resource" to najprawdopodobniej jest to błąd w składni SQL. I nie inaczej jest w tym przypadku smile.gif Wyświetl sobie najpierw jaki jest błąd serwera MySQL. Może wtedy sam dojdziesz do tego co jest nie tak.

Pozdrawiam
maciasgta
  1. $zapytanie2 = mysql_query("SELECT * FROM sparingi_propozycje
  2. WHERE nadawca not like '".$_SESSION['id_zaloguj']."' AND id_gospodarz='".$_SESSION['id_zaloguj']."'
  3. OR (id_gosc='".$_SESSION['id_zaloguj']."') ORDER BY data DESC");


Niestety dalej jest błąd, wyświetla mi id_goscia mimo, nadawca = id_zaloguj, a ma pokazać wszystkie OPRÓCZ nadawca = id_zaloguj..
Nie mam pojęcia co jest dalej źle?
zelu
A wiesz czym się różni
  1. OR (id_gosc='".$_SESSION['id_zaloguj']."')


od
  1. OR id_gosc='".$_SESSION['id_zaloguj']."'


?
maciasgta
Chyba niczym, ale kombinowałem z tymi nawiasami tak jak pisałeś bez skutku, zawsze jakiś błąd więc nie wiem.
zelu
No to zastanów się dobrze co chcesz zrobić smile.gif

Chcesz otrzymać coś I coś LUB coś... Czyli gdzie najsensowniej wstawić nawiasy? smile.gif

Pozdro
zderek
Nie wiem jak mysql (generalnie używam tylko postgresa) reaguje na typy zmiennych, ale jeśli masz w nazwie $_SESSION['id_zaloguj'] to wnioskuję że typ zmiennej to int - w postgresie by nie pokazało ci wyniku.

Jeśli to int to spróbuj takiego zapytania (sorki za skrócone wstawianie zmiennych php, ale siła przyzwyczajenia winksmiley.jpg):
  1. "SELECT * FROM sparingi_propozycje WHERE (id_gospodarz= {$_SESSION['id_zaloguj']} OR id_gosc= {$_SESSION['id_zaloguj']}) AND nadawca != {$_SESSION['id_zaloguj']} ORDER BY data DESC"


jeśli typ danych to string to z kolei zapytałbym tak:

  1. "SELECT * FROM sparingi_propozycje WHERE (id_gospodarz= '{$_SESSION['id_zaloguj']}' OR id_gosc= '{$_SESSION['id_zaloguj']}') AND nadawca != '{$_SESSION['id_zaloguj']}' ORDER BY data DESC"
maciasgta
Problem rozwiązałem już sam, dziękuje wszystkim za pomoc smile.gif
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.