Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Tablica w tablicy...
rkuch
post 13.04.2005, 13:11:37
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 12.04.2005

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


Mam problema :-(
Stworzylem funkcje do pobierania danych z bazy MySql. Pobieram dane z kilku tabel, z kazdej tabeli oddzielnym zapytaniem. Wyniki sa tablicami i chcialbym je wszystkie przekazac za pomoca return $wynik; .
Probuje $wynik=array($zapyt1,$zapyt2,$zapyt3,$zapyt4);

$zapytn --> tablice.

Czy moge tak zrobic ? Nie chce mi dzialac... Czy ma znaczenie to, ze zapytania zwracaja rozna ilosc danych? Np. $zapyt1 zwraca 30 pol a $zapyt2 - 5 pol.
Go to the top of the page
+Quote Post
nospor
post 13.04.2005, 13:17:08
Post #2





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




nie ma znaczenia ilość elementów w tablicy. oto kod który dziala:
  1. <?php
  2. $tab1[1]=1;
  3. $tab2[0]=0;
  4. $tab2[1]=1;
  5. $tab3=array($tab1,$tab2);
  6.  
  7. ?>


Pytanie, czy zapytanie zwraca ci tablicę. POkaż może kawalek skryptu


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
rkuch
post 13.04.2005, 13:41:44
Post #3





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 12.04.2005

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


Cytat(nospor @ 2005-04-13 12:17:08)
nie ma znaczenia ilość elementów w tablicy. oto kod który dziala:
  1. <?php
  2. $tab1[1]=1;
  3. $tab2[0]=0;
  4. $tab2[1]=1;
  5. $tab3=array($tab1,$tab2);
  6.  
  7. ?>


Pytanie, czy zapytanie zwraca ci tablicę. POkaż może kawalek skryptu

  1. <?php
  2.  
  3. function pobierz_dane()
  4. {
  5.  
  6. // Tu polaczenie z baza i selecty
  7.  
  8.  $wynik_1 = mysql_query($pobierz_1);
  9.  $wynik_2 = mysql_query($pobierz_2);
  10.  $wynik_3 = mysql_query($pobierz_3);
  11.  
  12. $wynik_1 = mysql_fetch_array($wynik_1);
  13. $wynik_2 = mysql_fetch_array($wynik_2);
  14. $wynik_3 = mysql_fetch_array($wynik_3);
  15.  
  16. $wynik = array($wynik_1, $wynik_2, $wynik_3);
  17.  
  18. return $wynik;
  19. }
  20. ?>


Funkcja wyglada mniej wiecej tak...
Wywoluje ja tak:
  1. <?php
  2. if ($z = pobierz_dane())
  3. {
  4. // jakies dzialanie
  5. }
  6. else echo 'Odczytanie niemozliwe';
  7. ?>


i robi od razu else
Go to the top of the page
+Quote Post
nospor
post 13.04.2005, 13:53:15
Post #4





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




POdejrzyj jak wygląda $wynik_1,$wynik_2 i $wynik_3 po mysql_query i po mysql_fetch_array. Dopiero wtedy będzie można coś powiedzieć.

A tak na marginesie. Zdajesz sobie sprawę że mysql_fetch_array pobiera tylko jeden wiersz a nie wszystkie?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
slepy
post 13.04.2005, 14:00:23
Post #5





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 27.02.2003

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


Wydaje mi się iż Ty zwracasz:
  1. <?php
  2.  
  3. return $wynik;
  4.  
  5. ?>


Gdzie $wynik to array. jak chcesz porównać zmienną do arraya?
daj return $wynik i wyświetl go sobie... Ciekawe co Ci wyjdzie..;]
Go to the top of the page
+Quote Post
nospor
post 13.04.2005, 14:04:17
Post #6





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




Cytat
jak chcesz porównać zmienną do arraya?

On nie porównuje, tylko przypisuje. To różnica


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
jedrus4
post 13.04.2005, 15:00:33
Post #7





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 6.04.2005
Skąd: Międzyborów

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


Cytat(rkuch @ 2005-04-13 12:41:44)
  1. <?php
  2.  
  3. $wynik_1 = mysql_fetch_array($wynik_1);
  4. $wynik_2 = mysql_fetch_array($wynik_2);
  5. $wynik_3 = mysql_fetch_array($wynik_3);
  6.  
  7. ?>

jak dla mnie to blad tkwi tutaj...
sprobuj tak:
  1. <?php
  2.  
  3.  
  4. // tutaj to co miales wczesniej do pobierania wynikow z bazy ale bez
  5. // mysql_fetch_array() !!!
  6.  
  7. for($i=0; $i< mysql_num_rows($wynik_1); $i++)
  8. {
  9.  $tab_1[] = mysql_fetch_array($wynik_1);
  10. }
  11.  
  12. for($i=0; $i< mysql_num_rows($wynik_2); $i++)
  13. {
  14.  $tab_2[] = mysql_fetch_array($wynik_2);
  15. }
  16.  
  17. for($i=0; $i< mysql_num_rows($wynik_3); $i++)
  18. {
  19.  $tab_3[] = mysql_fetch_array($wynik_3);
  20. }
  21.  
  22. $wynik = array($tab_1, $tab_2, $tab_3);
  23.  
  24. ?>


--------------------
pozdrawiam
jedrus4
Go to the top of the page
+Quote Post
rkuch
post 14.04.2005, 09:43:13
Post #8





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 12.04.2005

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


Cytat(jedrus4 @ 2005-04-13 14:00:33)
  1. <?php
  2.  
  3.  
  4. // tutaj to co miales wczesniej do pobierania wynikow z bazy ale bez
  5. // mysql_fetch_array() !!!
  6.  
  7. for($i=0; $i< mysql_num_rows($wynik_1); $i++)
  8. {
  9.  $tab_1[] = mysql_fetch_array($wynik_1);
  10. }
  11.  
  12. for($i=0; $i< mysql_num_rows($wynik_2); $i++)
  13. {
  14.  $tab_2[] = mysql_fetch_array($wynik_2);
  15. }
  16.  
  17. for($i=0; $i< mysql_num_rows($wynik_3); $i++)
  18. {
  19.  $tab_3[] = mysql_fetch_array($wynik_3);
  20. }
  21.  
  22. $wynik = array($tab_1, $tab_2, $tab_3);
  23.  
  24. ?>

Spoko, dziala, tzn. pobiera i przekazuje funkcja...
Ale teraz mam problem wyciagnac z tablicy do checkboxow odpowiednie wartosci.
Mam 5 checkboxow i chce zeby sie zaznaczaly te pobrane z bazy, ale do tablicy laduja sie po kolei, czyli jak ostatniego zaznacze i potem on pobierany jest z bazy to jest pod indexem [0] czyli pierwszym i zaznacza mi pierwszego checkboxa.
value checkboxa robie dynamicznie i ma postac
  1. <?php
  2. $tabela[1][0] 
  3. ?>
dla pierwszego i dziala tak jak opisalem wyzej. Wiem, ze powinienem zmienic wartosc drugiego indexu, ale na jaki ?
Go to the top of the page
+Quote Post
jedrus4
post 14.04.2005, 13:32:55
Post #9





Grupa: Zarejestrowani
Postów: 29
Pomógł: 0
Dołączył: 6.04.2005
Skąd: Międzyborów

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


Cytat(rkuch @ 2005-04-14 08:43:13)
Cytat(rkuch @ 2005-04-14 08:43:13)

Ale teraz mam problem wyciagnac z tablicy do checkboxow odpowiednie wartosci.

Wiesz co.. nie bardzo rozumiem Twoj problem. Moze opisz troszke bardziej strukture wynikow, przedstaw troche kodu.. bedzie latwiej..


--------------------
pozdrawiam
jedrus4
Go to the top of the page
+Quote Post
nospor
post 14.04.2005, 13:44:26
Post #10





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




przy zazanczaniu sprawdzaj, czy jest to ten sam chceckbox z bazy co go wyswietlasz. Zakladając, że w bazie checkboxow trzymasz value:
  1. <?php
  2.  
  3. echo &#092;"<input type='checkbox' value='2' .... \".(in_array(2,$tablicacheck)?'checked':'').' >';
  4.  
  5. ?>


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
rkuch
post 14.04.2005, 14:13:55
Post #11





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 12.04.2005

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


Tylko ja mam chyba problem z tym
  1. value=<? $tablica[1][0] ?>

1 odnosi sie do zawodow, a zero do pierwszego pobranego z bazy zawodu, ktory nie musi byc tym pierwszym w formularzu... Nie wiem, czy rozumiesz mnie, mam formularz w html'u, a w nim value w zaleznosci czy dodaje czy edytuje i zamiast tego [0] musze jakies odwolanie do elementu, ze to akurat ten a nie inny zawod...
Rece mi opadaja... :-(
Go to the top of the page
+Quote Post
nospor
post 14.04.2005, 14:21:32
Post #12





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




NO tak. W $tablica[1] masz wszystkie zawody. POwiedzmy że w $tablica2 masz zawody danego gostka:
  1. <?php
  2.  
  3. foreach ($tablica[1] as $zawod)
  4. {
  5. echo &#092;"<input type='checkbox' value='$zawod' name='jakies' \".(in_array($zawod,$tablica2)?'checked':'').' >';
  6. }
  7.  
  8. ?>

Kapisz?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
rkuch
post 14.04.2005, 15:31:02
Post #13





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 12.04.2005

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


Zaznaczam 2 z 5-ciu checkboxow i wprowadzam do bazy z gostkiem... Z Twojego foreach'a wydrukuje tylko 2 checkboxy, a gdybym chcial zmienic i jednego z nich odznaczyc a zaznaczyc jakies, ktorych wczesniej nie zaznaczalem ? Przy czytaniu z bazy chce wydrukowac rowniez niezaznaczone checkboxy...
Sorki, ze tuman jestem, ale tak jakos... ;-(

Pozdrawiam i zycze cierpliwosci ;-)
Go to the top of the page
+Quote Post
nospor
post 15.04.2005, 07:33:52
Post #14





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




Oj, my się chyba nie rozumiemy sad.gif .
Spróbuję więc tak:

$tablica1 - tablicy wszystkich dostępnych zawodów (wszystkie checkboxy)
$tablica2 - tablica zawodów danego gostka (checkboxy, które należy zaznaczyć)
  1. <?php
  2.  
  3. foreach ($tablica1 as $zawod)
  4. {
  5. echo &#092;"<input type='checkbox' value='$zawod' name='jakies' \".(in_array($zawod,$tablica2)?'checked':'').' >';
  6. }
  7.  
  8. ?>


Teraz sobie podstaw za $tablica1 tablicę, w której masz wszystkie zawody, a za $tablica2 zawody, które ma gostek.
Proszę, zastanów się nad tym głebiej biggrin.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
rkuch
post 15.04.2005, 11:04:01
Post #15





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 12.04.2005

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


Z funkcji pobierajacej dane mam:
  1. <?php
  2.  
  3. $wynik = array($osoba, $zawody_osoby);
  4. return $wynik;
  5.  
  6. ?>

W formularzu mam:
  1. <?php
  2.  
  3. $osoba = $wynik;
  4. $i=0;
  5. foreach ($zawody as $zawod)
  6. {
  7. echo&#092;"<td><input type=checkbox VALUE=\"\".($edycja?$osoba[1][$i][0]:$zawod).\"\" name=zawod[$i] \".(in_array($osoba[1][$i][0],$zawody)?'checked':'').\">\".$zawod.\"</td>\";
  8. $i++;
  9. }
  10.  
  11. ?>

W ten sposob mi zaznacza checkboxy, ale jak zaznacze tylko ostatniego, to zaznaczy potem pierwszego... Wersja z:
  1. <?php
  2. (in_array($zawod,$osoba[1][$i][0])?'checked':'')
  3. ?>

nie dziala (nie zaznacza)...
Kazdy zawod osoby mam:
$osoba[1][0][0] - pierwszy zaznaczony zawod
$osoba[1][1][0] - drugi zaznaczony.
Go to the top of the page
+Quote Post
nospor
post 15.04.2005, 11:13:09
Post #16





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




Oj ja już z tobą nie wytrzymuję biggrin.gif .Twoja struktura przechowywania danych jest ciut dziwna i zamotana. Zrób jak mówię.
$tablica1 - tablicy wszystkich dostępnych zawodów (wszystkie checkboxy)
$tablica2 - tablica zawodów danego gostka (checkboxy, które należy zaznaczyć)

zapomnij o swojej strukturze (albo zmien ją do tych dwóch tablic) i będzie dzialać.

no i powiedz mi jeszcze czemu ty value checkboxa warunkujesz? Przecież to bez różnicy czy to jest edycja, czy też nowy wpis. Wyswietlasz wszystkie zawody. Warunkować masz tylko ich zaznaczanie


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
rkuch
post 15.04.2005, 14:10:25
Post #17





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 12.04.2005

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


Temat uwazam za zamkniety tongue.gif

Dzieki za cierpliwosc i dobre rady :-) for You nospor
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 00:57