Autor Zpráva
pavuk
Profil
Pokouším se měnit dynamicky <title> ve stránce. Používám k tomu konstrukci
<title>
  <?php
  if (!isset($_GET['str'])) {
                        $str = "uvod";
                        } else {
                        $str = $_GET['str'];
                        };
  switch($_GET['str']):
  case 'uvod': echo('Modely - úvod'); break;
  case 'rada': echo('Modely - modelová řada'); break;
  case 'zetor': echo('Zetor'); break;
  case 'case': echo('Case'); break;
  atd...;
  endswitch;
  ?>
  </title>

Problém nastává ve chvíli, kdy zavolám jen index.php bez proměnné ("index.php?str=něco"), skript vypíše na místě <title> chybovou hlášku Undefined index: str in E:\php\martasovo_sbirka\index.php on line 8
Nerozumím tomu, protože podle mojí úvahy pokud proměnná $str chybí pak se podle řádku č.4 rovná "uvod" a tudíž by neměla být nedefinovaná. Kde dělám chybu?
panther
Profil
pavuk:
Kde dělám chybu?
na ř. 8, píše ti to i chybová hláška.

Sice existuje proměnná $str, ale $_GET['str'] na ř. 8 stále neexistuje… proměnnou $str nikde nevyužíváš, přestože sis jí naplnil.

switch($str):
pavuk
Profil
Vím že chyba byla na řádku č.8, jen jsem nevěděl jaká (viz příspěvek).
Proměnnou $str používám dál v menu a podobně; pokud nechám ve skriptu jen switch ($str):, vypíše skript Use of undefined constant str - assumed 'str' in E:\php\martasovo_sbirka\index.php on line 8
Jak jí tedy definuji? Už jsem z toho až příliš zmaten, pokouším se na to přijít přes různý konstrukce několik hodin a nemyslí mi to (což je zřejmě dostatečně patrné)
edit: únava je děsná, už jsem to vyřešil, díky za pomoc a "nákop". Stačilo předřadit řádku 8 $_GET['str'] = $str;
Tori
Profil
pavuk:
Use of undefined constant str
Určitě ta proměnná začínala dolarem??

edit: k editu ↑ :) Nevím, jestli je dobrý nápad editovat superglobal.pole místo opravy překlepu.
pavuk
Profil
ano, začínala, ale jak jsem zeditoval výš, už to mám
pavuk
Profil
Nerozumím který překlep máš na mysli a kde, ten dolar na začátku promněnné? Ten tam skutečně je...
Tori
Profil
Ano, to jsem myslela. Zkoušela jsem ten váš kód, a jediná situace kdy vyhodil stejnou chybu byla při odmazání dolaru od proměnné (mimo řetězec). Ale třeba to fakt bylo něčím jiným.
__construct
Profil
pavuk:
Viem že Ti to už funguje, ale keď vidím to riešenie tak mi nedá - nebolo by lepšie si nazačiatku definovať nejaké pole, napr.:
<?php
    $uri = (isset($_GET['str'])) ? $_GET['str'] : '';
    $page = array();
    switch($uri)
    {
        case 'uvod':
            $page['title'] = 'Úvod';
            $page['description'] = 'Lorem ipsum…';
            break;
        default:
            $page['title'] = 'Titulok';
            $page['description'] = 'Lorem ipsum…';        
    }
?>
<html>
<head>
    <title><?php echo $page['title']; ?></title>
    <meta name="description" content="<?php echo $page['description']; ?>">
</head>
<body>

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: