Autor Zpráva
Jont
Profil *
Asi ptám na úplně základní věc, ale teď si čtu knihu PHP 5 a MySQL 5 Hotová řešení a je tam příklad portálu pro publikaci článků. Udělal jsem vše podle instrukcí (tzn. hlavně naplnění databáze tabulkami a údaji) a všechno funguje, až na podstatný detail.

Když chci zobrazit konkrétní článek, v prohlížeči se mi napíše, že soubor http://localhost/PHPkniha/zabava/clanek.php?ID=2 nebyl nalezen (chyba 404). U rubriky to stejné, jen se nenajde soubor http://localhost/PHPkniha/k16/portal2.php?IR=. Nějak se asi nepředá ten identifikátor, který se tvoří tím auto_increment.
Ten odkaz se tvoří takto:

$data .= "<a href=\""."/PHPkniha". $záznam["cesta"]
. "clanek.php?ID=". $záznam["id_clanku"]. "\">";

Vše ostatní funguje (přidání, editace článku, přihlášení autora). Už nad tím sedím půl dne a pomalu mě to přestává bavit. Ta kniha se mi vůbec zdá nějaká divná...

Tak bych se chtěl zeptat, co je špatně? Ještě nechápu, jak se ta stránka s novým článkem vlastně vytvoří. V adresáři je jen soubor clanek.php a tak ten článek je tedy v databázi asi, ale jak ten odkaz pozná, že se má podívat do databáze? Snad mi někdo odpovíte. Dík.
Joker
Profil
Kdyby se nepředal identifikátor, nevyhodilo by to 404 (teda, asi).
Existují ty soubory na disku?
Jont
Profil *
No ne, vždyť by ani neměly, ne? Ve složce je jen clanek.php.
Jont
Profil *
Joker: Nevíš teda co s tím?
Joker
Profil
Jak neměly?
/PHPkniha/zabava/clanek.php
/PHPkniha/k16/portal2.php

Tyhle dva soubory by existovat měly (pokud se nepoužívá nějaký poměrně ujetý mod_rewrite)
Jont
Profil *
Jo takhle, tys myslel jen ty základní soubory. Ten clanek.php tam je, ale portal2.php ne. Takže ten Lacko v tom má pěkný bordel (ty kódy josu z přiloženého CD). Každopádně bych ještě teda chtěl vědět, proč nefunguje ten článek a taky jaký je princip vytvoření té nové stránky (to clanek.php?ID=2). Dík moc.
Jont
Profil *
Nikdo? Chápu, že to je docela nesmyslné, ale aspoň ten princip byste mi někdo mohl vysvětlit (jak se vytvoří ten nový článek např. clanek.php?ID=2). Dík
Kajman_
Profil *
A knížku máte dočtenou dokonce? Pokud ano, tak to asi nebyla správná volba a zkuste knížku, kde vysvětlují i základy.

jak se vytvoří ten nový článek např. clanek.php?ID=2
Článek se vytvoří jeho uložením do databáze.
Jont
Profil *
No jo, mám ji přečtenou, jen to nějak nechápu. Jak se z toho clanke.php stane nějaký jiný? Teď nemyslím, jak se tam předá ten obsah, ale jak se vytvoří prostě ta stránka, kterou uživatel vidí. A je mi 17, takže to vykání asi není na místě :).
Jont
Profil *
To mi to opravdu nik¨do neumí vysvětlit? Nerad otravuji, ale pro mě je to dost důležité.
Jont
Profil *
Lidi, prosím vás.
Otázka ještě jednou: V databázi mám článek s ID=1, na disku clanek.php. Jak udělat, aby se po zadání odkazu ve tvaru clanek.php?ID=1 objevila stránka s odkazem v tomto tvaru a s nějakým obsahem? Mě to tuto stránku (doma na lokální instalaci) nenalézá. Už jsem z toho zoufalý...
Pozn.: Mám php 5 a mysql 4 a ty jsou z balíku PHP Web Server.
Joker
Profil
A samotný clanek.php to najde (bez ID)?

Jinak to závisí na tom, jak vypadá ten skript.
Jont
Profil *
Tak jo, až teď jsem našel ten problém. Byl v rubrice a v poli cesta. Když zadám do adresního řádku přesnou cestu k souboru clanek.php a dám za to to ?ID=1, tak to funguje, tvar adresy je localhost/phpkniha/k16/clanek.php?ID=1 Ale když je tne odkaz s uvedením kategorie, tudíž nevede k umístění clanek.php, tak se nic nenajde. To je případ localhost/PHPkniha/zabava/clanek.php?ID=2.

Jelikož bych ty kategorie chtěl používat, tak bych se ještě chtěl zeptat, jak to zprovoznit. V databázi je cesta ve tvaru /rubrika/, takže např. /zabava/ a ten nefunkční odkaz je ve tvaru:
<a href=\""."/PHPkniha". $záznam["cesta"]
. "clanek.php?ID=". $záznam["id_clanku"]. "\">název článku</a>. A nešlo by to bez toho PHPkniha? Kdybych dělal nějaký web a poté ho stěhoval na hosting, tak bych to asi musel přepisovat.

Ještě jednou díky za trpělivost všech a třeba mi i někdo odpovíte.

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:

0