Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak wydajniej rozwiąć pewniem problem
Forum PHP.pl > Forum > Przedszkole
DR.GhostRider
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?
blooregard
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 ?
Spawnm
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
Foxx
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.
InosU31
to mi wyglada na cos takiego ;-)

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


Wiec chyba switch ;-)

Pozdrawiam
blooregard
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. ...
Spawnm
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
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.