Autor Zpráva
Anonymní
Profil *
Ahoj.
Nenapsal byste mi někdo <?php .....?> jehož pomocí by se načítala jakákoli stránka. Zkrátka, aby po kliknutí na tlačítko galerie se objevili fotky v oblasti, kterou mám nazvanou #hlavni a pak třeba po kliknutí na tlačítko ostatní objevilo se v #hlavni jiná stránka, kterou bych měl danou pod tímto tlačítkem.
Casero
Profil
include??...nebo jak to myslíš??
Anonymní
Profil *
Pokusím se to lépe popsat. Je to určitě jednoduché. Je to téměř na každé stránce určitě.
Řekněme pro jednoduchost dvousloupcový layout.
Mám menu
<div id="menu">
<a href...................................>Galerie fotek</a>
<a ...................................................................... >lkajf</a>
</div>
To vše mám nastylované a velikost nepodstatná, ale budiž 230x400.
A ten druhý sloupec #hlavni
<div id="hlavni>
a tady by se měli měnit informace či fotky ap. dle toho co se zvolí za tlačítko v menu.
</div>
Casero
Profil
dej tam třeba stránka.php?page=fotky


a pak include $_GET["clanek"].".php" v tom hlavním a už jen vytvoř stránky fotky.hp, v čem bude obsah obsahu...:-D
koudi
Profil
Anonymní
Jen tak pro upřesnění - nefunguje to jako iframe, že se načítá jen #hlavni, ale musíš znova načíst celou stránku.
Anonymní
Profil *
Takže takhle nějak?
<div id="menu">
<a href="fotky.php?page=fotky">Galerie fotek</a>
</div>
<div id="hlavni">
include$_GET["fotky"].".php"
</div>
Joker
Profil
Není to tak těžké...

a tady by se měli měnit informace či fotky ap. dle toho co se zvolí za tlačítko v menu.
- tohle si vždycky vyndejte do zvláštních souborů (bez hlavičky, jenom ten "vnitřek"- třeba příslušný <div>)

No a potom použijte funkci include(), která vloží daný soubor na dané místo.

Jak na to:
Budete mít stránku řekněme index.php. To bude ta kostra. Všechny odkazy z tlačítek menu uděláte na index.php s nějakým parametrem, třeba:
index.php?stranka=hlavni
index.php?stranka=novinky
index.php?stranka=fotky
...

No a v index.php pak budete mít:

*začátek html, hlavička a tak, potom začátek těla stránky, hlavička, menu a tak*
<div id="hlavni">
<?php
switch($_GET["stranka"]){
case "hlavni":
include("hlavni.php");
break;
case "novinky":
include("novinky.php");
break;
case "fotky":
include("fotky.php");
break;

default: //cokoliv jiného
echo('Neznámá stránka. Vyberte prosím stránku z menu vlevo');
break;
}
?>
</div>
*patička stránky, zakončení HTML*


Funkce toho skriptu je doufám zřejmá... do menu dáte odkazy s parametrem třeba ta stranka, do PHP si potom dáte switch($_GET["stranka"]) a jednotlivé položky case se musí shodovat s tím, jaké hodnoty toho parametru stranka posíláte z menu. No a dovnitř těch souborů si naskládáte HTML kód, který má být uvnitř toho <div id="hlavni">

Zkusil jsem to napsat co nejjednoduššeji, je tam spousta místa pro zlepšování, já třeba začínal s něčím podobným a už to vylepšuju asi tři roky :o))))
Joker
Profil
Takže takhle nějak?
<div id="menu">
<a href="fotky.php?page=fotky">Galerie fotek</a>
</div>
<div id="hlavni">
include$_GET["fotky"].".php"
</div>


No, skoro jo, akorát ten řádek s PHP má být:
<?php include($_GET["page"].".php"); ?>

Nicméně určitá nevýhoda tohohle řešení je, že ten skript umožňuje zobrazit defacto jakýkoliv soubor s příponou php, který máte na webu, takže pokud si nedáváte pozor, může se nějaký "zlý" návštěvník za pomoci speciálně sestavené adresy dostat i k něčemu, co by neměl vidět.
Možná by stačilo pro ty vkládané soubory používat nějakou zvláštní příponu.
No a neprůstřelné řešení je udělat to přes ten switch jak jsem psal já, tam máte pod kontrolou, jaké stránky zobrazíte. Ale zase je víc práce s přidáváním nových položek do menu.
Anonymní
Profil *
<div id="menu>
<a href="index.php?stranka=fotky">Galerie fotek</a>
</div>
<div id="hlavni">
<?php
switch($_GET["stranka"]){
case "fotky":
include("fotky.php");
break;
?>
</div>

Je to správně takhle?
Joker
Profil
Jo, mělo by být. Vyzkoušejte ;-)

Akorát ještě bych tam nechal tu část "default", kde by se vložila třeba hlavní stránka... prostě cokoliv, co se zobrazí, když někdo zadá jen index.php anebo zadá třeba index.php?stranka=blabla
No a další stránky přidáte tak, že přidáte odkaz do menu a novou "case" položku do toho switche:
case "neco":
include("neco");
break;
Anonymní
Profil *
Díky mockrát. Tož bych vám za totok aj kupil pivo :)
Ale ještě jedna otázečka, reakce nakoudiho
Jen tak pro upřesnění - nefunguje to jako iframe, že se načítá jen #hlavni, ale musíš znova načíst celou stránku.
což způsobuje problik stránky že? To je další problém, který nevím jak vyřešit.
Joker
Profil
To je pravda. V Tom iframe se může načíst jen stránka obsažená v iframe, kdežto takhle je všechno jedna stránka a načítá se dohromady.
Ale pokud nemáte hodně velký kód stránky, tak ta prodleva není zas tak dramatická.

Jinak existují technologie, pomocí kterých jde aktualizovat jen některé části stránky (AJAX), ale pro začátek bych se držel trochu víc při zemi ;-)
Anonymní
Profil *
Mám další problémek.
Vše funguje OK, ale pokud zadám adresu a najede mi web tak je tam napsaná chyba, což chápu, jelikož není dána úvodní strana. Až po kliknutí se objeví daný obsah. Jak ale udělat, aby při vstupu bylo v <div id="hlavni"> Vítejte</div>? pokud to vložím pomocí include zůstane to tam pevně. Takže když kliknu na galerii fotek tak se sice ukážou fotky ale nad tím je napsáno vítejte. Jak tedy udělat, aby to bylo jen na začátku a pak už ne?
Anonymní
Profil *
<div id="hlavni">
<?php
switch($_GET["stranka"]){
case "hlavni":
include("hlavni.php");
break;
case "novinky":
include("novinky.php");
break;
case "fotky":
include("fotky.php");
break;

default: //cokoliv jiného
echo('Neznámá stránka. Vyberte prosím stránku z menu vlevo');
break;
}
?>
</div>

Nevím jak mám udělat, aby se hlavni.php ukázalo jako úvodní stránka.
Casero
Profil
třeba podmínka, if ení clanek, tak tam dej hlavni
Anonymní
Profil *
Poraďte prosím jak to mám udělat a kam to mám vložit.
Anonymní
Profil *
Pomozte prosím já nevím co s tím if, jak to mám udělat. :(
Anonymní
Profil *
tu hlavni.php napiš do defautu, nějak:

<?php
switch($_GET["stranka"]){
case "novinky": $otevri = 'novinky.php'; break;
case "fotky": $otevri = 'fotky.php'; break;
default: $otevri = 'hlavni.php'; break;
}
include ($otevri);
?>
havs
Profil
ale ty máš všechno v jednom adresáři, asi by stačilo:

<?php
$url=$_GET['$stranka'].".php";
if (file_exists($url)) { include ($url); }
else { include ("hlavni.php"); }
?>

a odkazovat: index.php?stranka=jmeno_bez_koncovky

... jé, nějak se mi odhlásila Opera - posl. anonym = já
Joker
Profil
Jak ale udělat, aby při vstupu bylo v <div id="hlavni"> Vítejte</div>?
Dyť jsem vám to už dvakrát psal!
Dejte do do části default!

poprvé:
default: //cokoliv jiného
echo('Neznámá stránka. Vyberte prosím stránku z menu vlevo');
break;

podruhé:
Akorát ještě bych tam nechal tu část "default", kde by se vložila třeba hlavní stránka... prostě cokoliv, co se zobrazí, když někdo zadá jen index.php anebo zadá třeba index.php?stranka=blabla
Joker
Profil
Jo, jestli nevíte, co tam vložit, tak to echo('neco'); prostě vypíše do stránky text "neco".
No anebo to echo smažte a místo něj tam vražte stejně jako u těch ostatních include("hlavni.php");
tiso
Profil
<?php

if(!isset($_GET["stranka"])){include("hlavni.php");}
else{
switch($_GET["stranka"]){
case "hlavni":
include("hlavni.php");
break;
case "novinky":
include("novinky.php");
break;
case "fotky":
include("fotky.php");
break;
default: //cokoliv jiného
echo('Neznámá stránka. Vyberte prosím stránku z menu vlevo');
//break; - break sa za default nedava
}//switch
}//else
?>
Anonymní
Profil *
tiso

Přesně to, co jsem potřeboval. :)
Díky moc všem za ochotu.
Toto téma je uzamčeno. Odpověď nelze zaslat.