![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
Tabela typu produktu wygląda mniej więcej tak: ID | type | i tak dalej 1 | dvd | xx 2 | book | yy 3 | furniture | zz 4 | furniture | aa 5 | furniture | bb Wyświetlam z bazy te dane i wrzucam w DIVy. Chcę zrobić tak aby dla wartości które się nie powtarzają każda lądowała do oddzielnego DIVa (dvd, book) a te które występują więcej niż raz żeby lądowały do jednego wspólnego diva (furniture). Chcę osiągnąć takie coś: Kombinuję z IFami i zmiennymi pomocniczymi, gdzie zapisuję do zmiennej type (dvd, book, furniture) aktualnie iterowanego w pętli wiersza i porównuję w następnej iteracji czy są takie same. Jeśli tak, to wiadomo że powinna wylądować do już istniejącego DIVa. Ale problem w tym, że przecież taki DIV trzeba najpierw otworzyć a potem zamknąć. I tutaj już się moja metoda nie sprawda. Naprowadźcie pls. Dzięki. -------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Powinienies zaczac od prawidlowego przygotowania danych, czyli pogrupowania, a potem wyswietlanie to bajka
Tu masz opisane przykladowe grupowanie http://nospor.pl/grupowanie-wynikow.html -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Ok, Twój samouczek jest dla mnie jasny i chętnie bym z niego skorzystał, ale niestety muszę to zrobić obiektowo. I tutaj pojawia się dla mnie trudność.
Tak wygląda wycinek mojej klasy, w której generalnie listuję większość rzeczy:
Tutaj jest metoda resultSet(); z klasy DB:
Klasę DB zmodyfikowałem na własny użytek na podstawie kursu OOP który przed świętami robiłem. Tak więc sam tego nie wymyśliłem, ale rozumiem co tam się dzieje. Niestety dla mnie, zamiast starego poczciwego while ($row = mysql_fetch_array($res)) mamy tutaj metody i obiekty, z którymi jeszcze nie jestem jakoś ekstra zaznajomiony. a PDO to dla mnie na razie niemalże czarna magia - wiem że jest, potrafię w prostym przykładzie użyć i to tyle. Jak powyższe zmodyfikować, aby uzyskać pogrupowane wyniki, tak jak to opisałeś? Ten post edytował sadistic_son 3.01.2023, 16:28:25 -------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Tutaj
private function getFullProperties() { $db = new DB(); $db->query("SELECT * FROM property ORDER BY type ASC"); $results = $db->resultSet(); return $results; } w $results masz teraz tablice swoja. No to dopisz teraz metode w tej klasie ktora pogrupuje te tablice. To nei ma znaczenia czy to jest klasa czy nie. Metoda to metoda zamiast mojego while ($row = mysql_fetch_array($res)){ ty lecisz FOREACH po $results i tyle. petla to petla. Jak to sam mowisz, zadne rocket sience -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Hmm, no w sumie logiczne. Dzięki za pomoc, muszę teraz lecieć z córką na basen ale wieczorem przysiądę do tego.
OK, elegancko grupuje. Posłużyłem się przykładem 2. Jednakże mam teraz problem aby wyświetlić pozostałe kolumny z bazy. Przy jednej wartości (w przykładzie 'name-miasto' u mnie 'property.property') to jest ok. Ale z tabeli property mam do wyświetlenia jeszcze type, label i description. Posługując się przykladem 2 nospora, w linijce 12 mamy $name = $row['NAME']; i to tutaj mogę dodać wartości pozostałych kolumn, jednakże jako string, a przeciez potrzebuję aby wartość z każdej kolumny była oddzielną zmienną, lub elementem tablicy. Mozna zrobić tak w linijce 12 z przykładu 2:
Ale to uniemożliwia wyświetlenie danych w 2 foreachach bo robi się tablica z kolejnym wymiarem. Naprowadźcie pls. Thx. -------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
pokaz caly kod co teraz masz bo nie kumam problemu
No i skoro twoja struktura ma przechowywac wiecej info to powinienies raczej isc w kierunku przykladu 1 a nie 2. no i pamietaj, to tylko przyklady, przeciez ty mozesz dodawac tam weicej info -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Kawałek klasy ProductAdd:
wyświetlanie pogrupowanych wartości:
Powyższe działa, ale... W groupFullProperties() powinienem mieć jeszcze pozostałe wartości z wiersza. Uff, zmęczyłem się, idę na fajkę. Cytat przeciez ty mozesz dodawac tam weicej info No właśnie jakośc nie mogę wpaść w którym miejscu w metodzie. Może dodatkowy poziom nikotyny pomoże... -------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
A gdzie sa inne kolumny/dane co chciales dodac?
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
No w powyższym nie ma (bo to działa), natomiast pisałem, że próbowałem je dodać w taki sposób:
Ale wiadomo, teraz mam zwykły string, a nie o to chodzi. Lub w taki sposób:
Obie metody złe ![]() -------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
pokaz mi co dokladnie zawiera $row
print_r($row); -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
var_dump($row);
Kod array(5) { ["id"]=> int(1) ["type"]=> string(4) "Book" ["property"]=> string(6) "weight" ["description"]=> string(40) "Please provide the weight of book in kg." ["label"]=> string(11) "Weight (kg)" } array(5) { ["id"]=> int(2) ["type"]=> string(3) "DVD" ["property"]=> string(4) "size" ["description"]=> string(33) "Please provide size of DVD in MB." ["label"]=> string(9) "Size (MB)" } array(5) { ["id"]=> int(3) ["type"]=> string(9) "Furniture" ["property"]=> string(5) "width" ["description"]=> string(42) "Please provide dimentions in HxWxL format." ["label"]=> string(10) "Width (cm)" } array(5) { ["id"]=> int(4) ["type"]=> string(9) "Furniture" ["property"]=> string(6) "height" ["description"]=> string(42) "Please provide dimentions in HxWxL format." ["label"]=> string(11) "Height (cm)" } array(5) { ["id"]=> int(5) ["type"]=> string(9) "Furniture" ["property"]=> string(6) "length" ["description"]=> string(42) "Please provide dimentions in HxWxL format." ["label"]=> string(11) "Length (cm)" } NULL Zabieram się za analizę tego. -------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
No to zamiast tylko nazwy property, wrzucaj tez wszustkie inne rzeczy dla tej property, czyli jako tablice a nie jako text
I juz. No tu naprawde nie ma zadnej filozofii. ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
A, ok.
ale to wtedy jeszcze wyświetlanie trzeba zmodyfikować:
No filozofii nie ma, ale jak tak się posiedzi nad tym to łeb puchnie i czasem ciężko wpaść na rozwiązanie ![]() Ten post edytował sadistic_son 4.01.2023, 11:28:50 -------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
![]()
Post
#14
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat ale to wtedy jeszcze wyświetlanie trzeba zmodyfikować: To straszne ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Działa. Kurde dzięki nospor, naprawdę doceniam twoja pomoc.
Miałbym jeszcze jedno pytanie co do powyższego. Przy 'type' == 'Furniture' chciałbym żeby 'description' było wyświetlane tylko raz, dla ostatniego row. Naprowadź pls. Może na początku pętli $i=0; a w pętli $i++; i jeśli $i != 0 to nie wyświetlać description? Ale wtedy mi tylko pierwsze wyświetli a nie istatnie. Ten post edytował sadistic_son 4.01.2023, 11:35:00 -------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
![]()
Post
#16
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Miałbym jeszcze jedno pytanie co do powyższego. Przy 'type' == 'Furniture' chciałbym żeby 'description' było wyświetlane tylko raz, dla ostatniego row. Naprowadź pls. Pokaz kod wyswietlania po zmianach -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Tak wygląda wyświetlanie:
Oczywiście to jeszcze wersja robocza bo np style= zostanie usunięte itd. -------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
![]()
Post
#18
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Ciagle mowisz o przejsciu na obiektowek, dobrych praktykach itp a jak patrze na twoj kod to mnie przerazenie bierze. Balagan, nazewnictwo zmiennych z 4 liter i wszedzie panujacy chaos. Zamiast brac sie za obiektowke naprawde warto by poprawic te mase drobnych rzeczy, ktore kola oczy.
np te nieszczesne nazwy zmiennych, ktore totalnie nic nie mowia ala $newProperty = $row['type']; pobierasz typ a nazywasz go newProperty. Co ma typ do newPRoperty? No nic $type = $row['type']; Prawda ze czytelniej? Albo tu: foreach ($properties->groupFullProperties() as $type => $property) { Przeciez tam jest kilka properties a nie jedna property wiec tak ma sie nazywac foreach ($properties->groupFullProperties() as $type => $properties) { Moze ci sie to wydawac smieszne takei czepiaanie, ale przy wiekszym kodzie ty naprawde sie nie polapiesz co jest co, nie wpsonijac o innej biednej osobie majacej pracowac na twoim kodzie. Sorki, musialem, moze dotrze ![]() Wracajac do tematu: po co petla jeszcze na wyswietlanie description lang i property? Te wartosci znasz, petla jest totalnie zbedne i komplikuje zycie. Petle sie robi dla wartosci dynamicznych a nie stalych
Czyz nie wyglada to czytelniej? Teraz jak kod wyglada w miare ok, to mozna przejsc do problemu
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 1 495 Pomógł: 245 Dołączył: 1.07.2009 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
nazewnictwo zmiennych z 4 liter Wiem, nad tym muszę popracować. Czasem wymyślenie sensownej nazwy zmiennej zajmuje mi za dużo czasu, więc walę $p= i tyle. wiem, że to zły nawyk, muszę się go pozbyć.i wszedzie panujacy chaos. Ale jak to? Kod ogólnie poformatowany, odstępy, wcięcia porobione. Co do mieszania php z html to wiem, że tak nie powinno się robić, ale w takiej sytuacji jak tutaj opisuję, to ta pętla powinna być w funkcji w pliku z klasą i tylko wklejone wywołanie metody wklejam to pliku z html?Moze ci sie to wydawac smieszne takei czepiaanie, ale przy wiekszym kodzie ty naprawde sie nie polapiesz co jest co, nie wpsonijac o innej biednej osobie majacej pracowac na twoim kodzie. Absolutnie nie wydaje mi się to śmieszne. Lata pisania kodu tylko dla siebie (nigdy komercyjnie lub za drobne kwoty dla znajomych) spowodowały u mnie wyrobienie złych nawyków, z których mogę sobie nawet nie zdawać sprawy, lub ciężko mi się ich pozbyć. Staram się zacząć stosować PSR-12 ale do sukcesu jeszcze droga. Wracajac do tematu: po co petla jeszcze na wyswietlanie description lang i property? Te wartosci znasz, petla jest totalnie zbedne i komplikuje zycie. Petle sie robi dla wartosci dynamicznych a nie stalych A no racja. Działa elegancko. Teraz muszę to ubrać w formularz, inputy, style itd. Następnie zabieram się za problem z grupowania z tego nowszego tematu - 3 tabele, w tym łącznikowa. Dzięki wielkie!!!!! -------------------- Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami... -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc! -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- |
|
|
![]()
Post
#20
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Ale jak to? Kod ogólnie poformatowany, odstępy, wcięcia porobione. Co do mieszania php z html to wiem, że tak nie powinno się robić, ale w takiej sytuacji jak tutaj opisuję, to ta pętla powinna być w funkcji w pliku z klasą i tylko wklejone wywołanie metody wklejam to pliku z html? Nazewnictwo z 4liter wproadza dla mnie wystarczajacy balagan ![]() Brak typowania Do tego w html uzywanie inline STYLE zamiast klass i CSS dopelnia robote. Cytat Następnie zabieram się za problem z grupowania z tego nowszego tematu - 3 tabele, w tym łącznikowa. Na stronie z grupowaniem, do ktorej odeslalem cie wczesniej, masz rozwiazanie z grupowaniem w bazie, przy pomocy GROUP BY i GROUP_CONCAT. Moze to byc bardziej przydatne. Wszystko zalezy co i jak bedzesz chcial wyswietlac Cytat to ta pętla powinna być w funkcji w pliku z klasą i tylko wklejone wywołanie metody wklejam to pliku z html? Nie. Klasy nie powinny generowac zadnego kodu html.Do kodu html powinno uzywac sie widoku. Moze to byc zwykly plik .phtml czy tam nawet php a nie zadna klasa. Chodzi o rozdzielenie logiki od wyswietlania. W mojej stopce masz link do Widoku takiego naprawde banalnego. Jakby cie interesowal cos powazniejszego to np. Twig -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 05:11 |