Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Tablica w tablicy...
rkuch
post
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
Post #2





Grupa: Moderatorzy
Postów: 36 559
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
Go to the top of the page
+Quote Post
rkuch
post
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
Post #4





Grupa: Moderatorzy
Postów: 36 559
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?
Go to the top of the page
+Quote Post
slepy
post
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
Post #6





Grupa: Moderatorzy
Postów: 36 559
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
Go to the top of the page
+Quote Post
jedrus4
post
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. ?>
Go to the top of the page
+Quote Post
rkuch
post
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
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..
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 559
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. ?>
Go to the top of the page
+Quote Post
rkuch
post
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
Post #12





Grupa: Moderatorzy
Postów: 36 559
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?
Go to the top of the page
+Quote Post
rkuch
post
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
Post #14





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




Oj, my się chyba nie rozumiemy (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
rkuch
post
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
Post #16





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




Oj ja już z tobą nie wytrzymuję (IMG:http://forum.php.pl/style_emoticons/default/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
Go to the top of the page
+Quote Post
rkuch
post
Post #17





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

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


Temat uwazam za zamkniety (IMG:http://forum.php.pl/style_emoticons/default/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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 01:18