Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]while sql 2warunki
-unew-
post
Post #1





Goście







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...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Gdzie ty tu widzisz błędny komunikat? Bo ja nigdzie.
Go to the top of the page
+Quote Post
-Gość-
post
Post #3





Goście







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.
Go to the top of the page
+Quote Post
gac3k
post
Post #4





Grupa: Zarejestrowani
Postów: 90
Pomógł: 8
Dołączył: 28.07.2009

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


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 to the top of the page
+Quote Post
-Gość-
post
Post #5





Goście







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?
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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 to the top of the page
+Quote Post
-Gość-
post
Post #7





Goście







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^^
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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 to the top of the page
+Quote Post
-Gość-
post
Post #9





Goście







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. }


Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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ść (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 02:40