Autor Zpráva
crooner
Profil *
Až já jednou to php pochopím tak u mě máte všichni pivo. Prosím o pomoc. Dělám rozsáhlý web kde používám funkci include pro vkládání obsahu do stránek. mám na to tento kod
<?php 
  $path = './html/main.php';
if (!empty($_REQUEST['id'])) {
    $name = $_REQUEST['id'];
    $name = preg_replace('~[^a-z0-9\-_+]+~i', '-', $name); // odstraníme znaky které by mohly způsobit nějaký problém
    if (file_exists('./html/' . $name . '.php')) {
        $path = './html/' . $name . '.php';
    } else {
        $path = './html/404.php'; // chybová stránka pokud uživatel leze na stránku která neexistuje
    }
}
include $path;

?> 
a takto odkazy href="index.php?id=nabidka"

jenže jsem se dostal do problému když zrovna na stránce nabídka potřebuji include použít znovu a to hned několikrát (pro výpis náhledů produktů a dále pro jednotlivé detaily. Jenže mi dojde k zacyklení a stránka se kopíruje x-krát. Poradíte mi prosím co a jak změnit, abych mohl použít v podstatě include v již includované stránce a navíc mohl postupovat v adresářové struktuře např. html/nabidka a pak dale /sekceproduktů atd...
Předem děkuji
Micruss
Profil
Tak to napište úplně na začátek toho souboru

href="index.php?id=nabidka"

a ten soubor v html/nabidka.php

<?php
// zase include na jen tak rychle třeba toto
if(isset($_GET['produkt'])) {
$id = intval($_GET['produkt']);
if($_GET['produkt']==$id) {


// Obsah produktu


    }
}
else {

// VSTUP SKRIPTU normal nabidka.php..

}
Tori
Profil
crooner:
Jenže mi dojde k zacyklení a stránka se kopíruje x-krát.
A kde k tomu dochází - ve vnořeném skriptu includujete znova ten hlavní, nebo jak?

na stránce nabídka potřebuji include použít znovu a to hned několikrát (pro výpis náhledů produktů a dále pro jednotlivé detaily
A oboje má na starosti stejný soubor?

co a jak změnit, abych [...] mohl postupovat v adresářové struktuře např. html/nabidka a pak dale /sekceproduktů atd
Můžete to trochu upřesnit, jak jste to myslel? To se ještě týká include, anebo překladu pěkné URL na id=názevStránky?
crooner
Profil *
Děkuji za skript, bohužel z něj nejsem moc chytrý. Zkusím to vysvětlit lépe. Mám nějakou podobu stránek s x kategoriemi, kde je hlavní menu. Z hlavního menu odkazuji do spodního layoutu(divu) stránky uložené ve složce html. Jedna z těch kategorií je nabídka mnoha produktů. kdy načtu další vertikální menu pro přehled v nabídce, a toto menu je uloženo v nabidka.php. Takže mam levy a pravy layout a abych nemusel načítat znovu a znovu celou stránku, tak chci includovat do praveho layoutu. v němž se budou zobrazovat jednotlivé náhledy a když na něj kliknu tak ve stejném okně jeho detail. a jelikož těch kategorií produktů je mnoho, rád bych si je vnořoval do adresářové struktury html/nabídka/ .... html/nabídka/les.... html/nabídka/zahrada atd...

K zacyklení došlo při zadání skriptu a změnění pouze cesty. jenže když sem změnil ještě tuto část takto
if (!empty($_REQUEST['nabidka/id'])) {
    $name = $_REQUEST['nabidka/id'];
místo
if (!empty($_REQUEST['id'])) {
    $name = $_REQUEST['id'];

tak sice neumím na daný soubor odkazovat, ale základní, který je stanoven v prvním řádku (viz. kod prvni prispevek) tak funguje


teď to po sobě čtu a moc dobře jsem to nevysvětlil, takže jen v rychlosti strana index: horní layout, spodní hlavní layout (načítám do něj zprvu úvodní stranu, dále všechny další z hlavního menu onas, kontakt, nabidka atd...); nyní strana nabídka: horní layout (stálý neměnný pro celý web), spodní hlavní layout(nyní je v něm vložena strana nabidka) a hlavní spodní layout je rozdělen na levy layout, který obsahuje menu a pravy, do kterého se budou načítat náhledy. cele karty produktů po kliknutí na náhled rovněž do tohoto pravého layoutu.
crooner
Profil *
jak by měl prosím vypadat odkaz na tento další include? href="index.php?id=nabidka+id=les ???? vůbec nevím jak by se to mělo poskládat.
tiso
Profil
crooner: parametre v URL môžu byť pole, pre tvoj príklad by to vyzeralo takto: href="index.php?id[]=nabidka&id[]=les
Spôsob, ako to celé dávaš dokopy nie je správny, robí sa to inak.
crooner
Profil *
děkuji za radu
tiso:
Spôsob, ako to celé dávaš dokopy nie je správny, robí sa to inak.
Mohu se zeptat na nástřel jak by to mělo býti správně skládané? Žil jsem v tom, že include stránky urychlí, či se na něj mam vykašlat a každou stránku načítat celou?
tiso
Profil
crooner: „Mohu se zeptat na nástřel jak by to mělo býti správně skládané?
No veď to, na toto neviem presne sformulovať odpoveď. Ale mali by ťa zaujímať pojmy ako MVC, šablóny, routing, autoloading, typy stránok.

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: