![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 255 Pomógł: 0 Dołączył: 23.06.2009 Ostrzeżenie: (10%) ![]() ![]() |
Witam,
W tabeli 'kolory' (id_koloru, nazwa) przechowuje nazwy kolorów. Chciałbym je wszystkie pobrać do zmiennej:
W $wszystkie zapisuje mi się tylko jeden, pierwszy kolor (id = 1) Jak pobrać wszystkie nazwy do tej zmiennej (tablicy) ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 12 Dołączył: 12.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam, Skorzystaj z funkcji mysql_fetch_array" title="Zobacz w manualu PHP" target="_manual lub mysql_fetch_assoc" title="Zobacz w manualu PHP" target="_manual. Funkcja, z której skorzystałeś wykorzystywana jest w pętlach (jako swojego rodzaju kursor), przy jej użyciu również można osiągnąć pożądany przez Ciebie efekt:W tabeli 'kolory' (id_koloru, nazwa) przechowuje nazwy kolorów. Chciałbym je wszystkie pobrać do zmiennej:
W $wszystkie zapisuje mi się tylko jeden, pierwszy kolor (id = 1) Jak pobrać wszystkie nazwy do tej zmiennej (tablicy) ?
Pytanie tylko po co to robić, skoro istnieją funkcje, które przedstawiłem na początku. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) PS. Zapomniałem o jednym. Nie rozumiem po co w zapytaniu warunek "id > 0", jeśli pole ID jest zadeklarowane jako indeks główny oraz posiada atrybut auto_increment, to tego typu warunek jest zbędny (pomijając fakt, iż tego typu warunek na polu identyfikatora i tak jest niepotrzebny). (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ten post edytował slightyboy 23.06.2009, 02:31:07 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 255 Pomógł: 0 Dołączył: 23.06.2009 Ostrzeżenie: (10%) ![]() ![]() |
Rzeczywiście, ten warunek jest zbyteczny (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
W każdym razie jak robię tak:
to skrypt się zapętla i drukuje ciągle jedno i to samo aż w końcu firefox mi się zawiesza ... Co robie źle ? Tak w ogóle to wcześniej (bez pętli która podałeś) próbowałem też z fetch_array i fetch_assoc, ale opróćz sposobu prezentacji i tak zawsze dostawałem tylko 1 wiersz:
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 70 Pomógł: 2 Dołączył: 25.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
a sprobuj tak:
Ten post edytował zimekk 23.06.2009, 02:59:14 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 16 Dołączył: 8.08.2008 Skąd: London Ostrzeżenie: (0%) ![]() ![]() |
albo
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 12 Dołączył: 12.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Kurcze faktycznie, pomieszało mi się całkowicie (pewnie ze względu na porę oraz fakt, iż od dłuższego już czasu nie korzystam z gołego mysql_*). Tak to powinno wyglądać.
Co do poprzedniego mojego posta, wybacz - każda z tych funkcji zwraca kursor. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ten post edytował slightyboy 23.06.2009, 03:02:42 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 255 Pomógł: 0 Dołączył: 23.06.2009 Ostrzeżenie: (10%) ![]() ![]() |
Działa tylko sposó ktory zaproponował Zimekk:
Pozostałe albo powoduja przekroczenie bufora pamięci (w tabeli są tylko 3 rekordy) albo się zapętlają i strona się nie ładuje. Jeszcze jedna rzecz. Poszerzyłem ten skrypt o formularz, który generuje listę wszystkich kolorów (przy każdym jest checkbox)
Powiedzcie jako można by zrobić, że gdy użytkownik zaznaczy checkbox przy danym kolorze i kliknie ok, to wtedy w tabeli 'uzytkownicy' w polu kolor zapisze się id tegoż właśnie koloru ? (foreach?) Ten post edytował mefistofeles 23.06.2009, 05:13:39 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 1 Dołączył: 19.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Po pierwsze lepszym rozwiazaniem było by chyba zamiast chexbox użyć radio ( chyba że użytkownik może wybrać kilka kolorów?)
Nie wiem czy dobrze myślę ale ja bym zrobił to tak:
zakładam że action będzie się odwoływać do tego samego pliku w którym znajduje się formularz, jeżeli nie to if trzeba będzie dodać do tego pliku na który wskazuje action. Ten post edytował Derw 23.06.2009, 08:43:37 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 255 Pomógł: 0 Dołączył: 23.06.2009 Ostrzeżenie: (10%) ![]() ![]() |
Oczywiście, że o radio chodziłio :]
Wielkie dzięki za pomoc ! |
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Skorzystaj z funkcji mysql_fetch_array" title="Zobacz w manualu PHP" target="_manual lub mysql_fetch_assoc" title="Zobacz w manualu PHP" target="_manual. Funkcja, z której skorzystałeś wykorzystywana jest w pętlach (jako swojego rodzaju kursor), przy jej użyciu również można osiągnąć pożądany przez Ciebie efekt:
Pytanie tylko po co to robić, skoro istnieją funkcje, które przedstawiłem na początku. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Dla ścisłości - siejesz herezję. Sugerujesz, że korzystając z podanych wyżej funkcji można pominąć pętlę? W takim razie doczytaj proszę czym różnią się te funkcje, co zwracają, bo zapewniam Cię, że i w ich przypadku konieczne jest użycie pętli. PS: poza tym chyba (nie sprawdzałem, ale tak mi się wydaje) Twoja pętla będzie wykonywać się w nieskończoność z racji ciągłego wykonywania zapytania do bazy danych. Ten post edytował phpion 23.06.2009, 10:55:26 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 52 Pomógł: 12 Dołączył: 12.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Dla ścisłości - siejesz herezję. Sugerujesz, że korzystając z podanych wyżej funkcji można pominąć pętlę? W takim razie doczytaj proszę czym różnią się te funkcje, co zwracają, bo zapewniam Cię, że i w ich przypadku konieczne jest użycie pętli. Pierwszą rzecz wyjaśniłem wcześniej (moja pomyłka). Drugą też miałem wyjaśniać, ale już było późno. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) PS: poza tym chyba (nie sprawdzałem, ale tak mi się wydaje) Twoja pętla będzie wykonywać się w nieskończoność z racji ciągłego wykonywania zapytania do bazy danych. Wynik zapytania powinien być przypisany do zmiennej i dopiero później użyty w pętli (godzina 3:00 robi swoje (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ). PS. Nie nazywałbym tego herezją, a poprostu przemęczeniem. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ten post edytował slightyboy 23.06.2009, 12:18:02 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 13.03.2009 Ostrzeżenie: (0%) ![]() ![]() |
Temat stary, ale kolega się uczy z tego forum i się na niego natknął, a to może oznaczać że i inni się natykają. Tak więc troszkę wyjaśnień.
Plan jest taki, że mysql_query łączy się z bazą, ściąga wszystkie pasujące rekordy i ustawia tak zwany kursor (czyli po prostu wybiera sobie z listy jeden rekord który aktualnie "obrabia") na sam początek. wywoływana kilka razy zawsze (albo i nie, ale w przykładzie podanym w wątku zawsze) zwróci to samo. zadaniem funkcji mysql_fetch_***** jest pobrać "aktualny" rekord ze źródła wszystkich rekordów jakie mysql_query wypluło, i ustawić w tej liście ("źródle") kursor na następny, tak żeby przy następnym wywołaniu funkcji mysql_fetch_***** mogła pobrać kolejny rekord i znowu przygotować sobie następny. Kiedy się skończą, zwraca false. Jeśli pętla wygląda tak: while($row=mysql_fetch_array(mysql_query(...))) to mysql_query zwróci listę wszystkich rekordów z kursorem na pierwszym, mysql_fetch_array pobierze ten pierwszy rekord, zwróci i ustawi kursor na liście zwróconej przez mysql_query, na drugi. W kolejnym przebiegu znowu wykona się mysql_query (bo jej wynik nie był składowany w żadnej zmiennej), i znowu zwróci listę wszystkich rekordów, z kursorem ZNOWU ustawionym na pierwszy, który mysql_fetch_array znowu ustawi na drugi, ale jakie to ma znaczenie skoro za chwilę dostanie znowu świeżą listę z kursorem znowu ustawionym na pierwszy. Tyle "znowu" sugeruje pętlę nieskończoną. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 14:19 |