Autor Zpráva
8vm8
Profil
Čau, učím se php a přemýšlím nad tím, jak se dá po kliknutí na odkaz získat požadovaná data z mysql. Mám index.php a v něm je menu např. s těmito odkazy : "Tipy a triky" a "Návody". Po kliknutí na " Návody " chci, aby se mi zobrazily všechny návody, které mám v databázi. Tady mám první problém. Návody mohou být vcelku obsáhlé, a mohou obsahovat i obrázky apod., tak se chci zeptat, odkud je lepší tato data načítat a jak? Dále teda, když se mi načtou všechny návody nevím, jak mám ten skript napsat tak, aby třeba po kliknutí např. na "1.návod" načetl data prvního návodu, po kliknutí na "2.návod druhého, aby jsem ten skript nemusel psát pro každý návod zvlášť.
Zechy
Profil
Podmínky, které ti budou ověřovat zda v adrese existuje příslušný parametr, podle kterého určíš stránku, v té podmínce pak tedy můžeš volat připojení k mysql a spouštět dotaz který vybere tu stránku nebo návod který má.
Čili by si měl něco jako:
<?php
if(!isset($_GET["pg"]))
{
    // Index
}
else if(isset($_GET["pg"]))
{
    if($_GET["pg"] == "tipy")
    {
        // Dotaz na MySQL co vydoluje obsah stránky
    }
}
?>

A co se týče obsahu jednotlivých stránek, tak to lze ukládat třeba jako to dělají redakční systému - HTML kod do databáze.
mimochodec
Profil
Zechy:
K čemu je ten if na 6. řádku?
Zechy
Profil
mimochodec:
Je fakt, že by tam stačil else, ale když tam bude víc možností jak může vypadat první get? :)
8vm8
Profil
Takže mi stačí jeden php skript, který bude vyhledávat návod, který obsahuje tu a tu podmínku? Já se teď sháněl po tom co jsi napsal, takže tedy stačí když budu mít v návodu obsaženo asi toto:
<html>
<head>
<title>Tohle je první návod</title>
</head>
<body>
<?php //tady by měla být ta podmínka?
 ?>
Tohle je text prvního návodu
</body>
</html
Zechy
Profil
Přesně, tu podmínku si vložíš tam kde chceš mít vypsanej obsah, takže klidně třeba i nějaký div s obsahem.
8vm8
Profil
A ten skript, bude v databázi hledat tu podmínku. Jakmile ji najde, tak ten obsah, který obsahuje tu podmínku, vypíše na místo, kde bude uveden ten skript. Já se teda ještě musím zeptat, jak by ta podmínka měla vypadat protože na netu jsem to nenašel, nebo spíše našel ale nepochopil.
Zechy
Profil
Záleží o to jak bys v databázi rozlišoval jednotlivé stránky, nejjednodušší je jim dávat ID, v tom případě by sis stránky i v adrese rozlišoval dle čísla, který bys pak předal mysql dotazu.
Takže například asi nějak takhle:
<?php
mysql_query("SELECT nadpis, obsah FROM stranky WHERE id = $_GET[pg]");
?>
mimochodec
Profil
8vm8:
A ten skript, bude v databázi hledat tu podmínku. Jakmile ji najde, tak ten obsah, který obsahuje tu podmínku, vypíše na místo, kde bude uveden ten skript. Já se teda ještě musím zeptat, jak by mohla ta podmínka vypadat protože na netu jsem to nenašel, nebo spíše našel ale nepochopil.

Nebývá úplně běžné, že by v databázi ležely celé stránky. Nebo skoro celé stránky, jak to máš naznačeno ty. Běžné je, že podle toho $_GET["pg"] se vkládá nějaká kostra stránky pomocí include. Takže máš pod sebou řekněme 5x podobný if nebo lépe nějaký switch a v kažé jeho větvi je include nějaké postránky. Takže v index.php je jen začátek stránky (to, co pak tvoří řekněme záhlaví) a její konec. Samotný obsah jednotlivých includovaných stránek se pak řeší až v nich.
Toto je jen jedno z několika řešení a možná jsem úplně neodpověděl na to, na co se ptáš. U hodně jednoduchých webíků se bez tohoto dá obejít a celé stránky v databázi mít můžeš. je to ale spíš výjimka.

Zechy:
Je fakt, že by tam stačil else, ale když tam bude víc možností jak může vypadat první get?

Ten isset je buď true nebo false, jiná možnost není.
Zechy
Profil
mimochodec:
Ten isset je buď true nebo false, jiná možnost není.
Jasný, ale pokud je třeba odlišit obsah pomocí několika getů? Například jestli bude PG, subpage, show, atd. atd. tak tam si else if místo najde ne? Potřebuješ nějak zjistit jakej GET je zrovna použit.
8vm8
Profil
Dík všem:). Teď jsem si to zkusil a funguje mi to. Udělal jsem to tak, že jsem vložil html kód s textem do tabulky. Sice je výpis trošku kostrbatý ale to se napraví:).

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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