Autor Zpráva
reetu
Profil
Zdravím všechny ochotné pomoci.
Podle návodu serveru "polopatě" jsem složil skriptík, který bude do jedné stránky vkládat proměnlivý obsah.
V adresáři je soubor "index.php" a podadresář "obsah". Ten obsahuje "galerie.php", "kniha.php" atd.
Poprvé se skript provede, tzn. načte se obsah souboru "uvod".
Pokud ale chci kliknout na "galerii", již se neprovede.
Podle mě je to tím, že vyhodnotí, že soubor "galerie" neexistuje.
Asi je nějaká chyba v zadávání cesty, protože, když ji zadám natvrdo (viz. další řádek aktuálně upravený jako komentář), tak mi to "galerii.php" vloží. Co jsem udělal špatně?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <title></title>
  </head>
  <body>
        <p>Hlavička</p>
        <li><a href"index.php">Home</a></li>
        <li><a href"index.php?str="galerie">Galerie</a></li>
        <li><a href"index.php?str="odkazy">Odkazy</a></li>
        <li><a href"index.php?str="kniha">Kniha</a></li>
        

<?php
        $stranka = $_GET['str'];
        
        if (!isset($_GET['str'])) {
        $stranka = "uvod";
        } else {
        $stranka = $_GET['str'];
        }
        
$soubor = "obsah/".$stranka.".php"; // k názvu připojíme cestu do adresáře zepředu a příponu zezadu
//$soubor = "obsah/galerie.php"; // k názvu připojíme cestu do adresáře zepředu a příponu zezadu
if (!file_exists($soubor)) {
$soubor = "obsah/uvod.php";
} // pokud neexistuje soubor, který chceme includovat, budeme vkládat soubor uvod.php 
        
        include ($soubor);
?>
<p>Patička</p>
  </body>
</html>

Moderátor Davex: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
panther
Profil
reetu:
nevím, jestli je to chyba tady či nikoliv, ale fungují ti ty odkazy? Chybí tam rovnítko za „href“. Změní se skutečně adresa v prohlížeči?
reetu
Profil
Jo díky, to byla stupidní chyba.
Ale ještě tam musí být něco. Dodělal jsem rovnítka. Startovací soubor se jmenuje pokus2.php
Poprvé to opět proběhne. Pokud kliknu znova např nagalerii, tak se do adresy načte pouze
http://localhost/stranky6/pages/pokus2.php?str=
a skript nic neprovede.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com">
  <title></title>
  </head>
  <body>
        <p>Hlavička</p>
        <li><a href="pokus2.php">Home</a></li>
        <li><a href="pokus2.php?str="galerie">Galerie</a></li>
        <li><a href="pokus2.php?str="odkazy">Odkazy</a></li>
        <li><a href="pokus2.php?str="kniha">Kniha</a></li>
        

<?php
        $stranka = $_GET['str'];
        
        if (!isset($_GET['str'])) {
        $stranka = "uvod";
        } else {
        $stranka = $_GET['str'];
        }
        
$soubor = "obsah/".$stranka.".php"; // k názvu připojíme cestu do adresáře zepředu a příponu zezadu
//$soubor = "obsah/galerie.php"; // k názvu připojíme cestu do adresáře zepředu a příponu zezadu
if (!file_exists($soubor)) {
$soubor = "obsah/uvod.php";
} // pokud neexistuje soubor, který chceme includovat, budeme vkládat soubor uvod.php 
        
        include ($soubor);
?>
<p>Patička</p>
  </body>
</html>


Moderátor Davex: Obarven výpis kódu
Davex
Profil
Kromě chybného uzavření druhého elementu <meta>(chyba zdejšího fóra) jsou chyby v konstrukci odkazů - kromě chybějícího rovnítka za href jsou tam přebytečné uvozovky v hodnotě parametru. Správně má být:
 <li><a href="index.php?str=galerie">Galerie</a></li>
reetu
Profil
Díky.
Hledal jsem celou dobu zádrhele v PHP, protože ho dnes vidím poprvé a udělal jsem nesmysle v HTML, to vidím asi popátý. :-)
Vyřešeno.
Ps: hlavičku generuje celou pspad.
reetu
Profil
PPS: S tím vkládáním kódů mezi značky se polepším. Všimnul jsem si té poznámky až teď.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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