![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 31.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Jestem nowy na forum tak więc chciałem się na początku przywitać ![]() Mam nadzieję, że nie będziecie dla mnie za ostrzy jak na początek, ale przejdzmy już do rzeczy ... Zrobiłem prostą funkcję, która ma na celu zwrócić wynik zapytania. Służy ona głównie do tego, aby nie powtarzać ciągle tego samego kodu, więc szybciej się wtedy pisze. CODE function sql($query){ $q = mysql_query($query)or die(mysql_error()); return mysql_fetch_assoc($q)or die(mysql_error()); } Chciałem zapytać czy da się jakoś wyświetlić wyniki w pętli foreach dla zapytania, które zwróci więcej niż jeden wynik? Mi niestety zawsze zwraca jeden wynik, dlatego jeśli już mam wyświetlić więcej rekordów muszę pisać: CODE while($row = mysql_fetch_assoc($q)){ // dane } Jeżeli, ktoś wie jak ten problem rozwiązać to proszę o odpowiedź ![]() Ten post edytował session_destroy(); 16.09.2008, 21:50:40 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 93 Pomógł: 5 Dołączył: 30.04.2006 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Po prostu najpierw musisz wpakować to do zmiennej asocjacyjnej, a dopiero później wyrzucić z funkcji przez return.
Wydaje mi się, że dlatego że jest to ładowane do zmiennej tablicowej dwuwymiarowej i jest ładowana tylko ostatnia albo pierwsza wartość tabeli, a reszta olewana/zastąpiona. Takie coś powinno działać, ale nie wiem czy jest w pełni poprawne. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 31.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za szybką odpowiedź.
Po zastosowaniu twojej metody działa prawie poprawnie. Udaje mi się wyświetlać już dane z tablicy asocjacyjnej, jednak jakimś dziwnym trafem rekordów jest zawsze o jeden wiecej. Np. jak mam 11 rekordów w wyniku zapytania to wyświetla mi te 11 jeszcze jedno miejsce puste (tak jakby miało być 12 rekordów) Czy da się to jakoś obejść ? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 374 Pomógł: 149 Dołączył: 1.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dzieje się tak bo pętla while najpierw sprawdza warunek a potem się wykonuje spróbuj tak:
-------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 93 Pomógł: 5 Dołączył: 30.04.2006 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
no tak, bo tą metodą on najpierw przekazuje wartość do zmiennej a dopiero potem opuszcza pętle jeśli już nic nie ma do pobrania, stąd ten pusty wpis.
W tym wypadku najpierw zostanie sprawdzone czy wynik jest pusty a potem przekazany do zmiennej. Na pewno da się to jeszcze inaczej zrobić, ale nie mam myślenia dzisiaj ![]() JoShiMa mnie trochę ubiegł/a Ten post edytował UNK 17.09.2008, 11:15:35 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 31.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Wielkie dzięki za Wasze odpowiedzi
![]() Teraz wszystko działa tak jak powinno ![]() Nurtuje mnie jednak pytanie, która z przedstawionych metod jest bardziej wydajna. metoda Shili z wykorzystaniem array_pop czy też metoda: JoShiM'y i UNK'a z wykorzystaniem pętli while? Jeżeli, wiecie proszę o jeszcze jedną odpowiedź ![]() |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 374 Pomógł: 149 Dołączył: 1.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Shili też wykorzystuje while, też wykorzystuje przypisanie do tablicy w każdej pętli. Na dodatek wykonuje dwie operacje ekstra. Przypisanie pustego rekordu a potem skasowanie go. Hmmm. Nie wiem czy jest jakaś istotna różnica.
Cytat Wielkie dzięki za Wasze odpowiedzi smile.gif. Teraz wszystko działa tak jak powinno biggrin.gif i jestem bardzo zadowolony. Możesz to wyrazić klikając odpowiedni przycisk hi hi hi ![]() -------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 085 Pomógł: 231 Dołączył: 12.05.2008 Ostrzeżenie: (0%) ![]() ![]() |
Tylko jakby nie patrzeć wykonuję jedno przypisanie mniej w samej pętli w każdej iteracji.
Kwestia po prostu tego, że raczej nie tutaj trzeba szukać poprawy wydajności, jeśli już ![]() Ten post edytował Shili 18.09.2008, 10:36:39 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 31.08.2008 Ostrzeżenie: (0%) ![]() ![]() |
Shili też wykorzystuje while, też wykorzystuje przypisanie do tablicy w każdej pętli. Na dodatek wykonuje dwie operacje ekstra. Przypisanie pustego rekordu a potem skasowanie go. Hmmm. Nie wiem czy jest jakaś istotna różnica. Możesz to wyrazić klikając odpowiedni przycisk hi hi hi ![]() hehe właśnie się o tym dowiedziałem ![]() ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 01:18 |