Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

3 Stron V   1 2 3 >  
Reply to this topicStart new topic
> [PHP][MySQL] Wyświetlanie danych w komórce
Kshyhoo
post 30.01.2018, 20:56:40
Post #1





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Postanowiłem zmienić sposób wyświetlania danych, kiedyś HTML a teraz chciałbym użyć PHP/MySQL. I borykam się z pewnym problemem, mianowicie tak było:
  1. +-------------------------+
  2. | NAGŁÓWEK |
  3. +-----------+-------------+
  4. | RAL C: | 8028 |
  5. | NCS 1950: | ~8010-Y30R |
  6. | | ~8010-Y50R |
  7. | Pantone: | ~2322 C |
  8. | | ~7533 C |
  9. | | ~476 C |
  10. | | ~7554 C |
  11. | RGB | 078-059-049 |
  12. | HEX | 4E3B31 |
  13. +-----------+-------------+

W HTML miałem dwie komórki i w nagłówkowej colspan="2". Teraz mam problem z dynamicznym wyświetlaniem, tym bardziej, że NCS i Pantone może być kilka albo wcale.
Jakieś pomysły?


--------------------
Go to the top of the page
+Quote Post
SmokAnalog
post 30.01.2018, 21:02:04
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Ale o co chodzi? Co ma PHP/MySQL do wyświetlania tabeli w HTML? Może podaj chociaż strukturę bazy czy cokolwiek i napisz o co Ci chodzi haha.gif
Go to the top of the page
+Quote Post
Kshyhoo
post 30.01.2018, 21:32:31
Post #3





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




  1. CREATE TABLE `kolor` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `ral` smallint(4) NOT NULL,
  4. `ncs` tinytext NOT NULL,
  5. `pantone` text NOT NULL,
  6. `r` char(3) NOT NULL,
  7. `g` char(3) NOT NULL,
  8. `b` char(3) NOT NULL,
  9. `hex` char(6) NOT NULL,
  10. PRIMARY KEY (`id_kol`)
  11. ) ENGINE=MyISAM;

Chodzi o to, że nie wiem jak pętlę spłodzić, żeby wyświetlić dane...


--------------------
Go to the top of the page
+Quote Post
SmokAnalog
post 30.01.2018, 21:56:23
Post #4





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Pokaż jakąś swoją próbę uzyskania tego efektu.
Go to the top of the page
+Quote Post
Kshyhoo
post 30.01.2018, 21:59:25
Post #5





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Jakbym wiedział, jak, to bym se napisał kod, nie mam pojęcia jak go zrobić. Wyświetlam w ten deseń, ale to tylko wyświetla dane:
  1. <td width="80px" style="text-align: right; border-right: hidden">
  2. <b>RAL C:</b><br />
  3. <b>NCS 1950:</b><br />
  4. <b>Pantone:</b><br />
  5. <b>RGB:</b><br />
  6. <b>HEX:</b>
  7. </td>
  8. <td width="100px" style="text-align: left">
  9. <?php echo $kolor['ral']; ?><br />
  10. <?php echo $kolor['ncs']; ?><br />
  11. <?php echo $kolor['pantone']; ?><br />
  12. <?php echo $kolor['k_r']."-".$kolor['k_g']."-".$kolor['k_b'] ?><br />
  13. <?php echo $kolor['k_hex']; ?>
  14. </td>


--------------------
Go to the top of the page
+Quote Post
SmokAnalog
post 30.01.2018, 22:10:17
Post #6





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


A NCS i Pantone jak se zapisujesz w bazie? Jak są pooddzielane?
Go to the top of the page
+Quote Post
Kshyhoo
post 30.01.2018, 22:13:58
Post #7





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




W jednej komórce, w liniach, potem nl2br.


--------------------
Go to the top of the page
+Quote Post
phpion
post 30.01.2018, 22:18:01
Post #8





Grupa: Moderatorzy
Postów: 6 070
Pomógł: 860
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Nie prościej zrobić to po bożemu za pomocą wierszy tabeli i tylko odpowiednio ostylowac obramowania? Ale jeśli chcesz byc hardkorem to po lewej stronie dawaj tyle br ile jest znaków nowej linii po prawej. Chyba ze może dojść do złamania linii po prawej to wtedy sprawa sie komplikuje. No ale co to dla hardkora smile.gif
Go to the top of the page
+Quote Post
SmokAnalog
post 30.01.2018, 22:19:52
Post #9





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Oczywiście, że lepiej. Krzysiowa tabela jest źle zaprojektowana, zresztą baza danych również.

Ten post edytował SmokAnalog 30.01.2018, 22:21:09
Go to the top of the page
+Quote Post
phpion
post 30.01.2018, 22:22:00
Post #10





Grupa: Moderatorzy
Postów: 6 070
Pomógł: 860
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Ale co ma schemat bazy (bo zapewne to miałeś na myśli) do sposobu wyświetlania?
Go to the top of the page
+Quote Post
Kshyhoo
post 30.01.2018, 22:22:20
Post #11





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Cytat(SmokAnalog @ 30.01.2018, 22:19:52 ) *
Oczywiście, że lepiej. Krzysiowa tabela jest źle zaprojektowana.

Oczekiwałbym raczej konstruktywnej podpowiedzi, niż sarkazmu...


--------------------
Go to the top of the page
+Quote Post
SmokAnalog
post 30.01.2018, 22:25:01
Post #12





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


A musi coś mieć wspólnego? Poruszam tu po prostu dodatkowy problem.

Zacznij od tego, żeby pozamieniać <br> na osobne wiersze w tabeli. Nowe linie będą w porządku w ramach tej samej grupy (czyli np. jako separator dla Pantone).
Go to the top of the page
+Quote Post
phpion
post 31.01.2018, 06:38:59
Post #13





Grupa: Moderatorzy
Postów: 6 070
Pomógł: 860
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




@Smok:
Patrząc na schemat tabeli wyglada na to ze właśnie znaki nowej linii są w obrębie danej grupy.

@Kshyshoo:
Przeczytaj moja pierwsza odpowiedz - tam masz rozwiazanie.
Go to the top of the page
+Quote Post
Kshyhoo
post 31.01.2018, 07:04:34
Post #14





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Postanowiłem przenieść te dane do nowej tabeli. Będzie łatwiej ale i trudniej wink.gif


--------------------
Go to the top of the page
+Quote Post
phpion
post 31.01.2018, 07:14:18
Post #15





Grupa: Moderatorzy
Postów: 6 070
Pomógł: 860
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Jak to kiedyś powiedział kolega gdy jechaliśmy tramwajem i zasugerował by wysiąść na dalszym przystanku: „tam dalej będzie bliżej” smile.gif
Go to the top of the page
+Quote Post
Kshyhoo
post 4.02.2018, 21:42:54
Post #16





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Nie do końca wiem, jak mam zmienić bazę. Czy tak wystarczy?
  1. +------------+----------------+
  2. | id_alt | int(11) | // ID
  3. | color | int(4) | // ID koloru z poprzedniej tabeli
  4. | a_range | enum('0', '1') | // 0 - NCS, 1 - Pantone
  5. | alternativ | tinytext | // wartość
  6. | a_rating | int(1) | // wartość
  7. +------------+----------------+

Czy dobrze myślę?

Bo jak mam pobrać dane kolorów alternatywnych? Z dwu tabel nie miałbym problemu, ale z jednej? Jak mam rozróżnić dane NCS i Pantone?

Jakoś poradziłem sobie, ale mam kolejny problem. Otrzymuję taką tablicę:
  1. [alterna] => Array (
  2. [0] => 4525 C
  3. [1] => 2020-Y
  4. [2] => 2020-G90Y
  5. [3] => 5855 C
  6. [4] => 4535 C
  7. [5] => 2020-G80Y
  8. [6] => 7502 C
  9. [7] => 2020-Y10R
  10. )
  11. [range] => Array (
  12. [0] => 1
  13. [1] => 0
  14. [2] => 0
  15. [3] => 1
  16. [4] => 1
  17. [5] => 0
  18. [6] => 1
  19. [7] => 0
  20. )

Chciałbym to upakować tak:
  1. +-----------+-----------+
  2. | NCS 1950: | 2020-Y |
  3. | | 2020-G90Y |
  4. | | 2020-G80Y |
  5. | | 2020-Y10R |
  6. | Pantone: | 4525 C |
  7. | | 5855 C |
  8. | | 4535 C |
  9. | | 7502 C |
  10. +-----------+-----------+

Czyli w jednej komórce range[0] a w drugiej range[1].
Podpowie jakaś mądra głowa?


--------------------
Go to the top of the page
+Quote Post
trueblue
post 4.02.2018, 21:53:45
Post #17





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Najlepiej by było gdybyś rozbił to na 3 tabele w MySQL.

Tabela kolor:
id_kolor
nazwa ew. tu już reprezentacja hex, abyś w razie czego wiedział jakiego faktycznie koloru dotyczy id_kolor gdybyś przeglądał tabelę ręcznie

Tabela typ_koloru:
id_typ_koloru
id_kolor (klucz obcy)
reprezentacja_koloru (RAL, Pantone, HEX, RGB)

Tabela wartosc_koloru:
id_typ_koloru (klucz obcy)
wartosc

W tabeli typ_koloru ostania kolumna może być type ENUM (tak jak tu) lub kluczem obcym do tabeli stricte reprezentującej... reprezentacje. Gdyby doszła nowa reprezentacja nie musisz modyfikować pola ENUM tylko dodać ją w tej dodatkowej tabeli.



--------------------
Go to the top of the page
+Quote Post
Kshyhoo
post 4.02.2018, 22:03:14
Post #18





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




No mam tak prawie, mam 2 tabele, pierwszą z tymi danymi + RAL, w drugiej alternatywy do RAL, gdzie enum to reprezentacja NCS/Pantone. Uporałem się z pobraniem danych i właśnie stoję na etapie wklepywania w tabele HTML. Niestety, moja wiedza nie pozwala mi na szaleństwa...


--------------------
Go to the top of the page
+Quote Post
trueblue
post 4.02.2018, 22:12:23
Post #19





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Jeśli jesteś w stanie wyświetlić swoje dane w ten sposób:
  1. +-----------+-----------+
  2. | NCS 1950: | 2020-Y |
  3. | NCS 1950: | 2020-G90Y |
  4. | NCS 1950: | 2020-G80Y |
  5. | NCS 1950: | 2020-Y10R |
  6. | Pantone: | 4525 C |
  7. | Pantone: | 5855 C |
  8. | Pantone: | 4535 C |
  9. | Pantone: | 7502 C |
  10. +-----------+-----------+
,
to jesteś bliski rozwiązania. Wystarczy, że będziesz sprawdzał czy reprezentacja w danym wierszu jest takim jak poprzedni, jeśli inna to ją wyświetlasz, jeśli nie, to nie wyświetlasz.

1. $poprzednia = '';
2. Dla każdego wiersza:
3. Jeśli $aktualna!=$poprzednia, to $poprzednia=$aktualna i druk $aktualna.
4. Druk wartości.
5. Wróć do 2.


--------------------
Go to the top of the page
+Quote Post
Kshyhoo
post 4.02.2018, 22:17:01
Post #20





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




No właśnie nie wiem, jak tą tablicę rozdzielić, czyli range[0] i range[1] osobno.


--------------------
Go to the top of the page
+Quote Post

3 Stron V   1 2 3 >
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: 28.03.2024 - 22:33