Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [CSS][PHP] podmiana styli po wczytaniu z bazy MySQL
bogdanh
post 20.11.2019, 18:12:33
Post #1





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 22.04.2012

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


Cały serwis wykonany jest w PHP ze stałymi tablicami CSS, ale dane (informacje) doczytywane są z bazy w pętlach while(). Problem zaistniał gdy trzeba zrobić przełączaną wersję "kontrastową" - czyli czarne tło i białe lub żółte znaki. Gówny layout nie był problemem, bo zrobiono nowe tablice CSS, ale dane...
No właśnie - w bazie jest tysiące wpisów z zapisanymi kolorowanymi tabelami ze swoimi stylami.
Można by zapytaniem sal "wykosić" background i Color, ale straci sie wtedy kolorystyce w podstawowej wersji serwisu.
No i pytanie - czy jest możliwe po wczytaniu rekordu z bazy (przed wysłaniem do przeglądarki podmienić wpis.
Dla przykładu:
Kod
<td style="background: #F0F0F0; width: 40%; border: 1px solid #d8d8d8; height: 30px; padding-left: 5px;">
z zamianą background: #F0F0F0; na #000000, a jeżeli wystąpi Color #333 na np Color #333?
Przeczucie mówi mi, że nie, więc jakaś inna deska ratunku?

Załączam link to przykładu wyświetlanej tabelki, ale nie wiem czy to forum pozwoli na to.
Kod
https://drive.google.com/file/d/1-hE80sZAbkLFWFwZAYjUPgca2Hfl-AXT/view?usp=sharing


Ten post edytował bogdanh 20.11.2019, 18:13:12
Go to the top of the page
+Quote Post
trueblue
post 20.11.2019, 18:19:43
Post #2





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

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


Cytat(bogdanh @ 20.11.2019, 18:12:33 ) *
Gówny layout nie był problemem, bo zrobiono nowe tablice CSS, ale dane...

Wyczuwam nosem jednak problem.

Możesz użyć !important, aby nadpisać style inline. Ale chyba by było lepiej przenieść style inline table do arkusza styli (i usunąć).


--------------------
Go to the top of the page
+Quote Post
bogdanh
post 20.11.2019, 19:39:29
Post #3





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 22.04.2012

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


Cytat(trueblue @ 20.11.2019, 18:19:43 ) *
Wyczuwam nosem jednak problem.
Możesz użyć !important, aby nadpisać style inline. Ale chyba by było lepiej przenieść style inline table do arkusza styli (i usunąć).

Zgadza się daje sie wyczuć i to niemały zapaszek... smile.gif
Dodatkowo - jestem amatorem, a muszę coś wykombinować. sad.gif
Poczytam o important, bo jedynie słyszałem...
Nie rozumiem tylko przenoszenia do tablicy i kasowania.
Dane są wczytywane z bazy, przypisywane zmiennej, a ta zwyczajnie wyświetlana. W zmiennej zapisane są całe tabele z zawartą treścią.
Myślałem o "wyłowieniu" i podmianie parametru np. background: #coś_tam na background: #000 i color: #333 na color: #FFF (dla przykładu), a potem dopiero wyświetlanie zmiennej.
Tylko czy to dobry pomysł?
Go to the top of the page
+Quote Post
trueblue
post 20.11.2019, 19:49:32
Post #4





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

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


Cytat(bogdanh @ 20.11.2019, 19:39:29 ) *
Myślałem o "wyłowieniu" i podmianie parametru np. background: #coś_tam na background: #000 i color: #333 na color: #FFF (dla przykładu), a potem dopiero wyświetlanie zmiennej.

Nie wiem co masz na myśli pisząc o wyświetlaniu zmiennej. Jakiej zmiennej? Gdzie wyświetlanej?

Ja sugerowałem, aby przenieść style inline do arkusza styli.


--------------------
Go to the top of the page
+Quote Post
bogdanh
post 20.11.2019, 21:28:29
Post #5





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 22.04.2012

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


Cytat(trueblue @ 20.11.2019, 19:49:32 ) *
Nie wiem co masz na myśli pisząc o wyświetlaniu zmiennej. Jakiej zmiennej? Gdzie wyświetlanej?
Ja sugerowałem, aby przenieść style inline do arkusza styli.

Nieporozumienie...
O inline muszę dopiero poczytać.
Dodatkowo pomyślałem o...
Z bazy w pętli wczytuje zawartości pól powiedzmy o nazwie "Treść"
- zapisuje do zmiennej $tresc.
- w zmiennej znajduje się coś w stylu [kode]<td style="background: #F0F0F0; width: 40%; border: 1px solid #d8d8d8; height: 30px; padding-left: 5px;">tutaj jakaś treść<td>I tak dalej ...</tr></table>.........[/code]
- wyszukuję w zmiennej ciąg "background: #..." i zamieniam to na '', podobnie postępuje z "color: #..."
- po zamianie ciągów dopiero echo/print w ujęciu div id="tresc" echo $zmienna/div, a w tablicy css ustalam kolory dla #tresc.
Inaczej styl z div nie zadziałał, bo poprzednio wewnątrz był styl z bazy z innymi kolorami niż czarny i biały.
Trochę pokrętnie to wyjaśniłem, ale może da sie zrozumieć. smile.gif
No i - czy metoda "inline" była by prostsza czy podmiana w zmiennej?
Go to the top of the page
+Quote Post
trueblue
post 20.11.2019, 21:43:01
Post #6





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

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


Styl inline, to jest właśnie ten sposób jakim obecnie są ostylowane tabele.

Podobne, o którym piszesz właśnie sugerowałem.


--------------------
Go to the top of the page
+Quote Post
bogdanh
post 21.11.2019, 19:13:06
Post #7





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 22.04.2012

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


Rozwiązałem problem przy pomocy funkcji ereg_replace.
Czyli np:
Kod
$tresc = ereg_replace('background: #[a-zA-Z0-9_]+;' , 'background: #0000;' , $tresc);

W każdym razie działa. smile.gif
Dziękuję za podpowiedzi.
Go to the top of the page
+Quote Post
viking
post 21.11.2019, 19:18:52
Post #8





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Jeszcze poczytaj dokumentację: Warning

This function was DEPRECATED in PHP 5.3.0, and REMOVED in PHP 7.0.0.


--------------------
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: 28.03.2024 - 19:39