Autor Zpráva
doby92
Profil *
Dobrý den

Nevím si rady jak sloučit 2 kódy do jednoho.

Klasické načítání php soborů (url index.php?page="hlavni")
<?php
if (isset($_GET["page"]) && substr_count($_GET["page"], "/") < 1)
    $page = $_GET["page"];
else
    $page = "hlavni.php";
                            
$soubor = "$page.php";
if (file_exists($soubor))
    include $soubor;

else 
    include "404.php";                       
?>

Načítání obsahu (článků) z databáze
<?php
if ($_GET["url"] == "") {
    $row = mysql_query('SELECT * FROM article');
    echo $row;
} else {
    $url = mysql_real_escape_string($_GET["url"]);
    $row = mysql_fetch_assoc(mysql_query("
        SELECT * 
        FROM article 
        WHERE url = '$url'
    "));
    echo $row;
    if (!$row) {
    echo "Tento článek neexistuje.";
    }
}

                         
?>

Upravil jsem i .htaccess, kvůli přepisu na přátelské URL
RewriteEngine on
Options +FollowSymlinks
RewriteCond %{REQUEST_URI} ^(.*)
RewriteRule ^(.*) index.php?page=$1 [nc,L,QSA]

Moje celková představa jak by to mělo fungovat je taková, že v hlavním menu budou odkazy zapsány stylem

<a href="/neco"></a>

však se tam budou objevovat i odkazy na články a ty by měli mít odkaz formou

<a href="/clanky/nejake-url-ziskane-treba-z-nadpisu">

Snad mě chápete, předem děkuji za reakci :))
peta
Profil
V cem vidis problem?
V pripade, ze soubor neexistuje, tak se pokusis najit clanek. Nebo opacne. Pokud neexistuje clanek, pokusis se otevrit soubor.
Tori
Profil
doby92:
Můžete si URL požadavku rozdělit na jednolivé části, a pak s nimi pracovat jak potřebujete:
// index.php
$url = explode('/', trim($_GET['page'], ' /'));
if (empty($url)) {
    $soubor = 'hlavni.php';
} else {
    $soubor = $url[0].'.php';
}

if (file_exists($soubor)) {
    include $soubor; 
} else {
    include "404.php";
}

// clanky.php
if (empty($url[1]))  {
  // .. všechny články
} else {
  // .. url článku je pod $url[1]
}
doby92
Profil *
Tori:
index.php funguje dobře jen ze to píše varovnou hlášku

Undefined index: page in C:\ComplexWebServer\http_docs\www\index.php on line 2

a ještě jedna věc, když upravím .htaccess tak mi to přestane includovat hlavni.php předpokládám, že je to tím, že jsem změnil vlastnosti adresáře. Co s tím?
Tori
Profil
doby92:
Undefined index: page
Nevím, jak máte teď udělaný .htaccess. $_GET['page'] jsem použila kvůli tomuto: RewriteRule ^(.*) index.php?page=$1 [nc,L,QSA], jestli máte teď ten parametr pojmenovaný jinak, přepište si to v kódu ode mne.

když upravím .htaccess
Jak?
doby92
Profil *
je to úplně stejný jako předtím

RewriteEngine on
Options +FollowSymlinks
RewriteCond %{REQUEST_URI} ^(.*)
RewriteRule ^(.*) index.php?page=$1 [nc,L,QSA]
Tori
Profil
Aha, tak asi takhle:
$url = empty($_GET['page']) ? array() : explode('/', trim($_GET['page'], ' /'));
doby92
Profil *
Perfektní šlape to parádně :) mockrát děkuji :) jen mám ještě otázku co myslíš tímhle komentářem

// .. url článku je pod $url[1]
Tori
Profil
Když chcete mít adresu článku takovouhle: /clanky/nejake-url-ziskane-treba-z-nadpisu, tak se rozebere na pole

array(
  [0] => clanky
  [1] => nejake-url-ziskane-treba-z-nadpisu
)
- předpokládala jsem, že do DB si ukládáte jen tu druhou část (nejake-url...).
doby92
Profil *
paráda, už tomu plně rozumím :) děkuji mnohokrát :)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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