Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]while sql 2warunki
Forum PHP.pl > Forum > Przedszkole
unew
Mam taki kod:
  1.  
  2. $see6_=mysql_query("SELECT * FROM znajomi WHERE ja = '".$_SESSION['start']."' AND typ='2' ORDER BY id_znj DESC LIMIT 6");
  3. while($see6=mysql_fetch_array($see6_))
  4. {
  5. echo '<a class="bfs" href="/profil.php?id='.$see6['on'].'">ooooo</a><br />';
  6. }
  7. echo $see6_; //Resource id #20
  8. echo $see6_;//Resource id #20


Dlaczego zwraca mi błędny komunikat? wygląda wszystko dobrze...
nospor
Gdzie ty tu widzisz błędny komunikat? Bo ja nigdzie.
Gość
wywala komunikat: //Resource id #20
Problem rozwiązałem poprzez relacje. Też się zdziwiłem, że powyższym przykładem nie poszło...
Jeśli jesteś dociekliwy to sesja start zawiera 123456, a kolumny są wypełnione danymi int.
gac3k
no ale kolego, rzutujesz wartość funkcji mysql_fetch_array do stringa który jest typu resource to też to ci właśnie ten string zwraca. Nie wiem gdzie ten błąd.
Gość
Dzięki za wyjaśnienie gac3k. Bynajmniej teraz wiem skąd wzięło się //Resource id #20.
Aby wykonać powyższy (poprawny) przykład wyświetlenia danych trzeba zastosować relacje - prawda? czy jest inny sposób?
nospor
Cytat
no ale kolego, rzutujesz wartość funkcji mysql_fetch_array
chyba mysql_query(). mysql_fetch_array dałby w rezulatacie tekst array

Cytat
Aby wykonać powyższy (poprawny) przykład wyświetlenia danych trzeba zastosować relacje - prawda?
A niby po co? Chyba za bardzo nie wiesz co to są relacje i rzucasz tym hasłem na ślepo. To co podałeś jest jak najbardziej ok. Coś ci nie działa?
Gość
Nie znam sie zbytnio, jedynie pobieżnie aby napisać prosty kod, ale również wydaje mi się,że w tym wypadku zawiniła funkcja mysql_fetch_array - po niej sa pobierane bezpośrednio dane i wygląda na to, że nie może występować z warunkiem - a jeśli może to chętnie bym zobaczył przykład, nie ukrywam że przykład pomógł by mi lepiej zrozumieć logikę funkcji. Odnośnie Skryptu w pierwszym poście to owszem, nie działa - miało wyświetlić dane INT (123456) a wyświetliło Resource id #20. Wiem co to są relacje i o dziwo bardzo łatwo je opanowałem. Zastosowałem relacje, ten skrypt u góry nawet gdyby działał(w taki sposób jaki chciałem) to i tak nie spełniał by swojej powinności bo popełniłem błąd logiczny. Miał za zadanie wyświetlać 6 ostatnich znajomych, co jak zapewne sam wiesz(bo widać ze masz sporą wiedzę) nie pójdzie tak łatwo jak bym chciał w pierwszym poście^^
nospor
Cytat
, nie działa - miało wyświetlić dane INT (123456) a wyświetliło Resource id #20
Nie pisz co ci się wydaje, bo źle ci się wydaje.
Robiąc echo z mysql_query() zawsze otrzymasz Resource - nie licząc przypadku gdy otrzymasz false. mysql_query() zawsze zwraca resource i zawsze echo z mysql_query da ci resource - przyjmij to wkoncu do wiadomości.

Rzeczą odpowiedzialną za właściwe dane jest ten kawałek kodu:
while($see6=mysql_fetch_array($see6_))
{
echo '<a class="bfs" href="/profil.php?id='.$see6['on'].'">ooooo</a><br />';
}

I jeśli ten kawałek kodu ci nic nie wyświetla to znaczy tylko i wyłącznie i tyle, ze zapytanie nie zwróciło żadnych danych. W zapytaniu dajesz warunki, więc prawdopodobnie warunki nie są spełnione - tyle w temacie. Zanim zaczniesz się więc dalej wymyślać teorie o działaniu czy nie dzialaniu zapoznaj się wpierw z funkcjami których używasz i patrz co one zwracaja.

  1. $sql = "SELECT * FROM znajomi WHERE ja = '".$_SESSION['start']."' AND typ='2' ORDER BY id_znj DESC LIMIT 6";
  2. echo $sql;

Co ci zwraca ten kod? Czy jest to poprawne zapytanie? Czy warunki wyglądają tak jak mają wyglądać? Wklej to co ci zwroci ten kod do PMA i zobacz czy PMA ci coś zwraca
Gość
nospor, masz rację - przetestowałem, to raz jeszcze według Twoich zaleceń. Ale dane były poprawne w kolumnach SQL i w warunku. Problemem były głupie nawiasy... zapytanie powinno wyglądać tak (nie wiem dlaczego, ale działa):
  1. $see6_=mysql_query("SELECT * FROM znajomi WHERE `ja` = '".$_SESSION['start']."' AND `typ`='2' ORDER BY id_znj DESC LIMIT 6");
  2. while($see6=mysql_fetch_array($see6_))
  3. {
  4. echo '<a class="bfs" href="/profil.php?id='.$see6['on'].'">ooooo</a><br />';
  5. }


nospor
Cytat
Problemem były głupie nawiasy...
NIgdzie nie widzę, byś poprawił zapytanie o jakieś nawiasy. Jedyna poprawa to ``. To jednak nie mogło być problemem, gdyż jakby bylo, to robiać echo mysql_query nigdy być nie dostał Resource a FALSE.

W skrócie: kręcisz waść wink.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.