Autor Zpráva
Ghosting
Profil
Zdravím chtěl bych se zeptat na jednu polopatickou věc.

Mám dejme tomu PHP kód:

<?php 
echo Ahoj; //Akce 1
echo Nazdar; //Akce 2
?> 



Je uložen v test.php

Šel by script udělat tak aby při vyvolání stránky:
test.php?=akce-1 se vypsal text "Ahoj" a
test.php?=akce-2 vypsat "Nazdar"?

Jde mi o sjednocení PHP scriptů, doteď je mám roztroušené a includuji do každé stránky jednotlivě.

Díky za případnou odpověď.
EDIT: Prosím opravte nadpis, díky.
vynalezce
Profil
adresa: test.php?akce=1

php
$akce=$_GET["akce"];
if($akce=="1"){echo "ahoj";}
if($akce=="2"){echo "nazdar";}

snad to funguje

vice zde http://www.linuxsoft.cz/article.php?id_article=192
Ghosting
Profil
Jé, díky moc :)
gmvasek
Profil
Lepší je použít switch:
<?php
switch((int) $_GET['akce'])
{
   case 1:
    // do something
    return;
  
   case 2:
    // do something else
    return;

   default:
    // default action
    return;
}
?>
Ghosting
Profil
gmvasek
Já si říkal že něco podobného to bude.
A čím je to lepší? Má to nějaké výhody?
blizz_boz
Profil
Ghosting

nema
Majkl578
Profil
blizz_boz
ale ma. jednak je to prehlednejsi a druhak je to rychlejsi pri delsim seznamu moznosti.
pri vertikalne dlouhem switchi a jeho moznostech by se mohla vyplatit i konvence typu:
switch(...) {
  case 1: {
    ........
  } break;
  case 2: {
    .......
  } break;
}

ktera sice neni uplne idealni, ale slozene zavorky zvysi prehlednost v kodu (za predpokladu, ze pouziji IDE se zvyraznovanim paru zavorek)

jen bych podotkl, ze:
[#1] je spatne syntakticky
[#2] nema osetrenou neexistenci klice
[#4] by melo byt break namisto return, jelikoz return ukonci bezici script pokud tento kod neni umisten ve funkci.
blizz_boz
Profil
Majkl578

Prehladné je to možno v Object Pascale kde má príkaz case naozaj zjednodušujúcu syntax:

case Number of
   1: ...;
   2: ...;
   3: ...;
end;


ale toto:

switch($Number) {
  case 1: {
    ........
  } break;
  case 2: {
    .......
  } break;
  case 3: {
    .......
  } break;
}


sa mi nezdá byť moc prehladné
Majkl578
Profil
blizz_boz
nic nenaminam na to, ze switch neni moc hezky udelany. nicmene s temi {} je to dle meho prehlednejsi kdyz mas treba case o 100 radcich, tak jednodussi nez hledat nejblizsi zapis dalsiho case je jednodussi oznacit si zavorku a dostat se k jejimu konci.
osobne switche pouzivam minimalne (ale casteji nez vyhodnocovani pomoci elseif). :)
Ghosting
Profil
Takže takhle?
<?php
switch((int) $_GET['akce'])
{
   case 1:
    // do something
    break;
  
   case 2:
    // do something else
    break;

   default:
    // default action
    break;
}
?>

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: