Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Switch. Jak napisac zeby case i default korzystaly z tego samego kodu?
Forum PHP.pl > Forum > Przedszkole
uglukha
Witam,
uzywam takiego kodu do wyswietlania roznych wersji jezykowych strony, oczywscie kodu w poszczegolnych "case" jest wiecej, wycialem zeby nie zasmiecac przykladu. Moje pytanie to jak to zapisac zeby "case 'polski':" i "default:" korzystalo z tego samego kodu. Bo teraz, gdy zmieniam cos w jezyku polskim, musze tez to zmienic w opcji default i jest to nie potrzebna stratu czasu , a i kod sie wydluza.

  1. <?
  2. switch($_GET['language'])
  3. {
  4. case 'polski':
  5. echo ("<title>tytul polski</title>\n");
  6. include ("include/polski/header.inc");
  7. break;
  8. case 'english':
  9. echo ("<title>tytul english</title>\n");
  10. include ("include/english/header.inc");
  11. break;
  12. default:
  13. echo ("<title>tytul polski</title>\n");
  14. include ("include/polski/header.inc");
  15. break;
  16. }
  17. ?>


z gory dzieki za pomoc!
pozdrawiam!
Puzi
Spróbuj:
  1. switch($_GET['language'])
  2. {
  3. case 'english':
  4. instrukcja;
  5. break;
  6. case 'polski':
  7. default:
  8. instrukcja;
  9. break;
  10. }
vokiel
1. Utworzenie funkcji
2. Zamiana case na tablicę

Ad1.
  1. function pol(){
  2. echo ("<title>tytul polski</title>\n");
  3. include ("include/polski/header.inc");
  4. }
  5.  
  6. switch($_GET['language']){
  7. case 'polski':
  8. pol();
  9. break;
  10. case 'english':
  11. echo ("<title>tytul english</title>\n");
  12. include ("include/english/header.inc");
  13. break;
  14. default:
  15. pol();
  16. break;
  17. }


Ad2.
To dla przykładu jaki masz Ty
  1. $languages = array (
  2. 'polski'=>array('title'=>'Tytul polski','include'=>'include/polski/header.inc'),
  3. 'english'=>array('title'=>'English title','include'=>'include/english/header.inc')
  4. );
  5. if (!empty($_GET['language'])){
  6. if (array_key_exists($_GET['language'],$languages){
  7. echo $languages[$_GET['language']]['title'];
  8. include $languages[$_GET['language']]['include'];
  9. }
  10. }


Ja bym osobiście proponował ujednolicić ścieżki do plików includowanych, tak żeby za każdym razem include wyglądało tak samo, tylko różniło się językiem. Dzięki temu nie musisz zapisywać ścieżki includowania, bo zawsze robisz tak samo:
  1. $languages = array (
  2. 'polski'=>'Tytul polski',
  3. 'english'=>'English title'
  4. );
  5. if (!empty($_GET['language'])){
  6. if (array_key_exists($_GET['language'],$languages){
  7. echo $languages[$_GET['language']];
  8. include 'include/'.$languages[$_GET['language']].'/header.inc';
  9. }
  10. }
#luq
To Ci powinno pomóc
  1. $a = 'polski';
  2.  
  3. switch( $a ){
  4. case 'english':
  5. echo 'english';
  6. break;
  7. case 'polski':
  8. default:
  9. echo 'polski';
  10. break;
  11. }


@edit:
Widzę, że się troszkę spóźniłem
uglukha
@ Puzi, #luq

dzieki! smile.gif nie myslalem, ze to takie latwe biggrin.gif

@ vokiel

wielkie dzieki! smile.gif racja z tymi sciezkami!
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.