Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dynamiczna zmiana CSS za pomoca php
Forum PHP.pl > Forum > Przedszkole
devint
hej

zastanawiam sie czy sa jakies przeciwskazania lub inne lepsze rozwiazanie

Opis:

Strony wyswietlaja <tr>,<td>,<p>,<span> itp. w ten sam sposob pobierajac tresc z bazy danych. W zaleznosci jaka strona ma byc wyswietlana maja byc rozne klasy styli definiujace wyglad zawartosci.

chce zrobic case i za pomoca echo wyswietlac odpowiedni styl

tak jest zle (normalnie tam gdzie echo bylby case),blad parse error dla styli :

  1. <style type="text/css">
  2. <!--
  3.  
  4. .article_first {
  5. font-family: Arial, Helvetica, sans-serif;
  6. font-size: 12px;
  7. font-weight: bold;
  8. <?php
  9.  
  10. background-color: #355CAA;
  11. color: #FFFFFF;
  12. ';?>
  13. margin: 10px;
  14. padding: 10px;
  15. }
  16. -->
  17. </style> 


ale tak wydaje sie byc dobrze:
  1. <?php
  2. <style type="text/css">
  3. <!--
  4.  
  5. .article_first {
  6. font-family: Arial, Helvetica, sans-serif;
  7. font-size: 12px;
  8. font-weight: bold;
  9. background-color: #355CAA;
  10. color: #FFFFFF;
  11.  
  12. margin: 10px;
  13. padding: 10px;
  14. }
  15. -->
  16. </style> ';?>
Ponownie tam gdzie echo bylby case

prosze o opinie/krytyke tego rozwiazania
mike
A po co dajesz style do środka?

Nie możesz tak:
  1. <?php
  2.  
  3. $strAction = ( empty( $_GET[ 'style' ] ) ) ? 'main' : $_GET[ 'style' ];
  4.  
  5. $arrStyleFiles = array(
  6.  'main' => 'style_main.css',
  7.  'links' => 'style_links.css',
  8.  'download' => 'style_download.css'
  9. );
  10.  
  11. ?>
  12. <style type="text/css" src="<?= $arrStyleFiles[ $_GET[ 'style' ] ]; ?>">


Coś a tym stylu.
I tylko pliki podmieniasz.
devint
W zewnetrznym stylu mam zdefiniowane okolo 30 klas a tylko ta jedna ma byc rozna, pomyslalem zeby tylko ta jedna zrobic w srodku, w takiej sytuacji troche bez sensu wydaje mi sie zapisywanie dokladnie 18 plikow style1-18.css gdzie roznica jest tylko jednej klasy a kazdy plik ma 29 zdefiniowanych identycznych klas.

doszedlem do wniosku ze wlasnie najlepszy bylby case (i dla mnie najlatwiejszy do wykonania), ciekaw jestem czy w tej sytuacji proponujesz tez tablice?
mike
Nowy przykład tongue.gif
  1. <?php
  2.  
  3. $strAction = ( empty( $_GET[ 'style' ] ) ) ? 'main' : $_GET[ 'style' ];
  4.  
  5. $arrStyleFiles = array(
  6.  'some' => 'style_some.css',
  7.  'links' => 'style_links.css',
  8.  'download' => 'style_download.css'
  9. );
  10.  
  11. ?>
  12. <style type="text/css" src="global.css">
  13. <!-- wszystkie globalne klasy -->
  14.  
  15. <style type="text/css" src="<?= $arrStyleFiles[ $_GET[ 'style' ] ]; ?>">
  16. <!-- czarna owca ;-) -->
devint
hehe

no dobra ale teraz jeszcze potrzebuje wyjasnienia na co mi jest potrzebne 18 plikow css z jedna klasa biggrin.gif przeciez za 2 tygodnie pierdykne jak bede mial sprawdzac w ktorym pliku jest to czy tamto smile.gif


i na czy mpolega wyzszosc tablicy z zewnetrznymi plikami nad czyms takim

  1. <?php
  2. $change_first_style=$_GET['op'];
  3. switch($change_first_style)
  4.  {
  5. case '600':
  6. <style type="text/css">
  7. <!--
  8.  
  9. .article_first {
  10. font-family: Arial, Helvetica, sans-serif;
  11. font-size: 12px;
  12. font-weight: bold;
  13. background-color: #355CAA;
  14. color: #FFFFFF;
  15.  
  16. margin: 10px;
  17. padding: 10px;
  18. }
  19. -->
  20. </style> 
  21. ';
  22. break;
  23.  
  24. case '601':
  25. <style type="text/css">
  26. <!--
  27.  
  28. .article_first {
  29. font-family: Arial, Helvetica, sans-serif;
  30. font-size: 12px;
  31. font-weight: bold;
  32. background-color: #355CAA;
  33. color: #FFFFFF;
  34.  
  35. margin: 10px;
  36. padding: 10px;
  37. }
  38. -->
  39. </style> 
  40. ';
  41. break;
  42.  
  43. case '602':
  44. break;
  45. case '603':
  46. break;
  47. ...
  48.  
  49.  }
  50. ?>


Wszystko w jednym miejscu i w ogole biggrin.gif
pozdr
mike
Cytat(devint @ 2006-01-13 15:03:39)
no dobra ale teraz jeszcze potrzebuje wyjasnienia na co mi jest potrzebne 18 plikow css z jedna klasa biggrin.gif przeciez za 2 tygodnie pierdykne jak bede mial sprawdzac w ktorym pliku jest to czy tamto smile.gif

Myślisz bardzo mało przyszłościowo.
Gwarantuję Ci że dzięki Twojemy rozwiązaniu pierdyknisz jeszcze bardziej.

Bo będziesz miał switch'a z kilkunastoma sekcjami case, w każdej kod php wymieszany z CSS.
Dopiero wtedy problemem bedzie odnalezienie czegoś konkretnego.

A jak sobie pomyślisz że jeszcze jedna klasa ma być wyjątkowa?
To co, będziesz się grzebał wycinając coś z .css w wklejając to do .php. Paranoja.

Dzięki oddzieleniu logki od wizualizacji będziesz miał same przyjemne rzeczy.
devint
zeby nie bylo

zgadzam sie w 100% z tym zeby oddzielac logike od wizualizacji

uwazam rowniez ze trzeba znalezc kompromis cena/jakosc
oraz jakosc/czas w przypadku gdy skrypt jest robiony za marne grosze nie ma sensu sie wczuwac tylko oszczedzic czas dla projektu ktory jest lepiej platny i czeka w kolejce...


i tak rozwazania o rozwiazanaich technicznych poszly w filozofie...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.