Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Jak wydajniej rozwiąć pewniem problem
DR.GhostRider
post
Post #1





Grupa: Zarejestrowani
Postów: 72
Pomógł: 1
Dołączył: 27.01.2009

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


Witajcie mam pewien problem

mam kodzik
  1. <?php
  2.           if($_GET['show'] == '4'){
  3.           $class4 = 'class="active"';
  4.           }
  5.           elseif($_GET['show'] == '3'){
  6.           $class3 = 'class="active"';
  7.           }
  8.           elseif($_GET['show'] == '2'){
  9.           $class2 = 'class="active"';
  10.           }
  11.            elseif($_GET['show'] == '1'){
  12.           $class1 = 'class="active"';
  13.           }
  14.           elseif(empty($_GET['show']) && empty($_GET['type'])  && empty($_GET['act']) ){
  15.           $class = 'class="active"';    
  16.           }
  17.  ?>
  18.            <li><a <?php echo $class; ?> href="./">cos1</a></li>
  19.            <li><a <?php echo $class4; ?> href="?page=info&amp;show=4">cos1</a></li>
  20.            <li><a <?php echo $class2; ?> href="?page=info&amp;show=3">cos2</a></li>
  21.            <li><a <?php echo $class3; ?> href="?page=info&amp;show=2">cos3</a></li>
  22.            <li><a <?php echo $class1; ?> href="?page=info&amp;show=1">cos4</a></li>
  23.        </ul> <!-- Menu end -->


czy idzie jakoś wydajniej rozwiać ten kod ,ponieważ mam 2 menu które ma jeszcze 10 elseif() więcej ;p questionmark.gif?
Go to the top of the page
+Quote Post
Spawnm
post
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




while" title="Zobacz w manualu PHP" target="_manual questionmark.gif
Go to the top of the page
+Quote Post
blooregard
post
Post #3


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Cytat
while


A nie przypadkiem
  1. <?php
  2. switch($_GET['show'] {
  3.   case '2' : ... ; break;
  4.  
  5. ...itd...
  6.  
  7. ?>


Co Ci tutaj da while ?

Ten post edytował blooregard 11.03.2009, 21:18:34


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
Spawnm
post
Post #4





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




co mi da while?
  1. <?php
  2. $x=1;
  3. while($x<=4){
  4.  if($_GET['cos']==$x){
  5.    $class[$i] = 'class="active"';
  6.  }
  7. $x++;
  8. }?>
  9.           <li><a <?php echo $class[1]; ?> href="./">cos1</a></li>
  10.           <li><a <?php echo $class[2]; ?> href="?page=info&amp;show=4">cos1</a></li>
  11.        //itp


coś w tym stylu smile.gif

Ten post edytował Spawnm 11.03.2009, 21:29:02
Go to the top of the page
+Quote Post
Foxx
post
Post #5





Grupa: Zarejestrowani
Postów: 896
Pomógł: 76
Dołączył: 15.11.2003
Skąd: Sosnowiec/Kraków

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


W takiej sytuacji, gdy nazwa użytej zmiennej zależy od wartości zmiennej, mógłbyś spróbować użyć zmiennej zmiennej. Czyli cały kod z ifami zastąpić 1 linią:
  1. <?php
  2. ${'class'.$_GET['show']} = 'class="active"';
  3. ?>

Ale w takiej sytuacji, gdy zmienna show przychodzi z zewnątrz, musisz kontrolować wcześniej jej zawartość, czyli sprawdzać czy jest liczbą z odpowiedniego zakresu.
Go to the top of the page
+Quote Post
InosU31
post
Post #6





Grupa: Zarejestrowani
Postów: 221
Pomógł: 14
Dołączył: 11.03.2009
Skąd: Lubaczów

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


to mi wyglada na cos takiego ;-)

http://pl.wikibooks.org/wiki/PHP/Instrukcja_switch


Wiec chyba switch ;-)

Pozdrawiam
Go to the top of the page
+Quote Post
blooregard
post
Post #7


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Poza tym chodzi o klasy CSS dla lina aktywnego/nieaktywnego, tak?
Więc tak naprawdę całą tę rzeźbę można zastąpić:
  1. $show = (integer)$_GET['show'];
  2.  
  3. ...
  4.  
  5. <li><a class="<?php ($show == 3)? echo 'active' : 'inactive'  ; ?> " href="?page=info&show=3">cos3</a></li>
  6. <li><a class="<?php ($show == 4)? echo 'active' : 'inactive'  ; ?> " href="?page=info&show=4">cos4</a></li>
  7. ...


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
Spawnm
post
Post #8





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




ani switch ani if, teraz jest kwestia 4 pytań,
ale co jeśli by trzeba 100 warunków wykonać ?
ręcznie byś wklepywać 100 if questionmark.gif

//edit
blooregard-> w twoim wypadku to warto by dać <li>/html w pętle smile.gif

Ten post edytował Spawnm 11.03.2009, 21:40:33
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 Aktualny czas: 20.08.2025 - 09:20