![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 788 Pomógł: 1 Dołączył: 17.09.2004 Ostrzeżenie: (10%) ![]() ![]() |
Witam serdecznie,
Mam taki kod:
Gdy próbuję wyświetlić nową, połączoną tablicę :
to dostaję tylko ostatni element tej poprzedniej... Co robię nie tak? |
|
|
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Przeczytaj w manualu jak uzywac array_merge_recursive bo widzę nie czytales
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 788 Pomógł: 1 Dołączył: 17.09.2004 Ostrzeżenie: (10%) ![]() ![]() |
chodzi Ci o taki zapis: $cos2 = array_merge_recursive($cos2, $cos) ; (IMG:style_emoticons/default/questionmark.gif) (IMG:style_emoticons/default/smile.gif)
jeśli tak, to nie pomogło:( Ten post edytował northwest 18.01.2011, 14:40:33 |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
lączysz cos2 z cos a tego cos nigdzie nie ustawiasz. Nie liczac
$cos = array(); to jak ma ci cokolwiek laczyc jak ty laczysz jedną tabelę z pustą tabelą |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 788 Pomógł: 1 Dołączył: 17.09.2004 Ostrzeżenie: (10%) ![]() ![]() |
Prawie mi się udało zwalczyć problem (IMG:style_emoticons/default/smile.gif) mam taki kod:
dlaczego jak wykonuje kod:
to wyświetla mi się tylko ostatni rekord z tej tablicy? Ten post edytował northwest 19.01.2011, 12:11:26 |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
while ($stmt->fetch()) {
$cos = $cos3['id']."-".$cos3['login']; $cos++; //$cos = array_merge_recursive($cos2, $cos) ; //print_r($cos2); } W petli za każdym razem nadpisujesz $cos wiec nic dziwnego, że zwraca ci tylko ostatni rekord. W pętli każdy kolejny rekord nadpisuje wartość $cos ps: czemu miało służyć $cos++ ? |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
- a co ten kod robi? przypisujesz zmiennej cos jakieś wartości, następnie zwiększasz o jeden tą zmienną (po co a w dodatku to nie zadziała jeśli w zmiennej jest tekst), potem znów jej przypisujesz jakieś wartości i znów zwiększasz o jeden i tak aż do końca pętli while. Zrób sobie: - to będziesz widział, co jest nie tak. I jak chcesz łączyć tablice to najpierw próbuj rozwiązań prostych: - a dopiero gdy te zawiodą bierz się za array_merge_recursive I jeśli używasz PHP to poczytaj najpierw o funkcjach i słowie kluczowym return: bo zaraz będziesz miał pretensje: - dlaczego nie echuje nic na ekran. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 788 Pomógł: 1 Dołączył: 17.09.2004 Ostrzeżenie: (10%) ![]() ![]() |
while ($stmt->fetch()) { $cos = $cos3['id']."-".$cos3['login']; $cos++; //$cos = array_merge_recursive($cos2, $cos) ; //print_r($cos2); } W petli za każdym razem nadpisujesz $cos wiec nic dziwnego, że zwraca ci tylko ostatni rekord. W pętli każdy kolejny rekord nadpisuje wartość $cos ps: czemu miało służyć $cos++ ? to $cos++ miało dodawać do talicy jako kolejna wartość (IMG:style_emoticons/default/winksmiley.jpg) jak to najlepiej zrobić? to jest funkcja, wiem po co tam jest return (IMG:style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
jeżeli w pętli tworzysz elementy tablicy to zrób to mniej więcej tak:
to tylko przykład, co do return to chyba coś nie bardzo Ci wyszło z kodu z pierwszego postu wynika, że $stmt->close(); nigdy się nie wykona. Natomiast w przypadku gdy warunek if ($stmt = $mysqli->prepare($string)) nie zostanie spełniony funkcja w ogóle nie ma return. Poza tym nie bardzo widzę sens tej funkcji jako argument żądasz zapytania do bazy ale jeżeli zrobisz: odczyt("SELECT imie,nazwisko FROM tabela") to jaki sens ma wówczas ta funkcja skoro na sztywno odczytujesz nazwy kolumn ? |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 788 Pomógł: 1 Dołączył: 17.09.2004 Ostrzeżenie: (10%) ![]() ![]() |
jeżeli w pętli tworzysz elementy tablicy to zrób to mniej więcej tak:
to tylko przykład, co do return to chyba coś nie bardzo Ci wyszło z kodu z pierwszego postu wynika, że $stmt->close(); nigdy się nie wykona. Natomiast w przypadku gdy warunek if ($stmt = $mysqli->prepare($string)) nie zostanie spełniony funkcja w ogóle nie ma return. Poza tym nie bardzo widzę sens tej funkcji jako argument żądasz zapytania do bazy ale jeżeli zrobisz: odczyt("SELECT imie,nazwisko FROM tabela") to jaki sens ma wówczas ta funkcja skoro na sztywno odczytujesz nazwy kolumn ? Dzięki, zadziałało (IMG:style_emoticons/default/smile.gif)
mam teraz taki kod, chyba wszystko już jest ok? co myślisz o wydajności takiej funkcji? Sensem działania tego kodu ma być wygenerowanie tablicy z danymi z mysql i późniejsza ich obsługa/obróbka w php... takie rozwiązanie będzie szybsze/optymalniejsze? Ten post edytował northwest 20.01.2011, 20:57:34 |
|
|
![]()
Post
#11
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Jesli te dane mają sie nadawac do jakiejkolwiek obrobki później to:
nie:$cos[] = $cos3['id']."-".$cos3['login']; a: $cos[] = $cos3; lub: $cos[$cos3['id']] = $cos3['login']; |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 788 Pomógł: 1 Dołączył: 17.09.2004 Ostrzeżenie: (10%) ![]() ![]() |
Dzięki, zadziałało (IMG:style_emoticons/default/smile.gif)
mam teraz taki kod, chyba wszystko już jest ok? co myślisz o wydajności takiej funkcji? Sensem działania tego kodu ma być wygenerowanie tablicy z danymi z mysql i późniejsza ich obsługa/obróbka w php... takie rozwiązanie będzie szybsze/optymalniejsze? oki, dzięki (IMG:style_emoticons/default/smile.gif) ps. co myślisz o praktyczności takiego rozwiązania? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 10:19 |