Redakční systém v PHP (3.díl)
Publikováno 02 Červenec 2007, Petr Láslo
Dobrý den, přináším 3.díl seriálu o tvorbě v PHP. V dnešním díle naplníme databázi zkušebními daty, vytvoříme dynamické menu a provedeme první SEO.
Naplnění databáze
V tomtou seriálu již předpokládám základní znalost PHP a MySQL. Tyto příkazy vložíme do databáze pomocí phpMyAdmin.
1. Vytvoření administrátorského účtu
INSERT INTO `uzivatele` ( `id` , `jmeno` , `prijmeni` , `nick` , `email` , `heslo` , `id_opravneni` )
VALUES (’1′ , ‘Petr’, ‘Láslo’, ‘admin’, ‘laslo.petr(a)seznam.cz’, ‘e10adc3949ba59abbe56e057f20f883e’, ‘1′
);
2. Vytvoříme druhy oprávnění
INSERT INTO `opravneni` ( `id` , `nazev` )
VALUES (’1′, ‘Administrator’), (’2′, ‘Redaktor’), (’3′, ‘Uzivatel’);
3. Vytvoříme testovací rubriky
INSERT INTO `rubriky` ( `id` , `nazev` )
VALUES (
‘1′, ‘PHP’
), (‘1′, ‘name’, ‘BlogerCMS’), (
‘2′, ’slogan’, ‘Redakcni system pro Vas web’
);INSERT INTO `nastaveni` ( `id` , `nazev` , `hodnota` )
VALUES (
‘3′, ‘keywords’, ‘BlogerCMS CMS redakcni system blog tvorba www php seo xhtml css i-extra.net merlin.php-pro.cz Petr Láslo’
), (
‘4′, ‘description’, ‘Redakcni system pro Vas web’
);INSERT INTO `nastaveni` ( `id` , `nazev` , `hodnota` )
VALUES (
‘5′, ‘zarazeni’, ‘CMS’
), (
‘6′, ‘autor’, ‘Petr Laslo’
);INSERT INTO `nastaveni` ( `id` , `nazev` , `hodnota` )
VALUES (
‘7′, ‘copyright’, ‘(c) Petr Laslo 2007′
), (
‘8′, ‘email’, ‘laslo.petr(a)i-extra.net’
);YINSERT INTO `nastaveni` ( `id` , `nazev` , `hodnota` )
VALUES (
‘9′, ‘limit’, ‘20′
), (
‘10′, ‘datum’, ‘d.F Y G:i’
);
5. Rozšíření a naplnění datábáze o tabulku odkazy
V tomto kroku rozšířím databázi o tabulku odkazy. Do této tabulky budeme ukládat odkazy na naše oblíbené weby, které budeme zobrazovat v levém menu pod rubrikami.
CREATE TABLE `odkazy` (
`id` INT( 20 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nazev` VARCHAR( 255 ) NOT NULL ,
`odkaz` VARCHAR( 255 ) NOT NULL
);INSERT INTO `odkazy` ( `id` , `nazev` , `odkaz` )
VALUES (
‘1′, ‘Merlin Forum’, ‘http://merlin.php-pro.cz’
), (
‘2′, ‘Extra NET’, ‘http://i-extra.net’
);
6. Vložíme testovací článek
INSERT INTO `clanky` ( `id` , `nazev` , `id_rubriky` , `anotace` , `textl` , `shlednuto` , `schvaleno` )
VALUES (
‘1′, ‘Promene v PHP’, ‘1′, ‘Prace s promenymi v PHP’, ‘Prace s promenymi v PHP’, ‘0′, ‘1′
);
Teď máme naplněnou databázi daty. Pustíme se do dalšího úkolu dnešního dne. Vytvoříme si novou adresářovou strukturu. Vytvoříme složku “includes”(do této složky budeme ukládat všechny includované soubory) a přemístíme do ní soubor config.php. Do souboru heaf přidáme inclůd s config.php. Viz ukázka:
<?php
…
include ‘includes/config.php’;
?>
…
Nyní využijeme možností PHP 5 a naprogramujeme první třídu. Třída se bude jmenovat Menu a bude se starat o zobrazení Rubrik na hlavní stránce. Otevřeme si náš oblíbený editor a vytvoříme nový soubor. Ten pojmenujeme classMenu.php a uložíme do naší složky includes. Obsah souboru by měl vypadat takto:
<?php
class Menu{
public $dotaz;
public $vyber;//konstruktor
function __construct($dotaz){
$this -> vyber = mysql_query($dotaz) or die (mysql_error());
}function zobrazdb(){
return mysql_fetch_array($this -> vyber);
}
}
?>
Na prvním místě nastavíme proměnné dotaz a vyber na veřejné. Dále pokračuji s nastavením kostruktoru. Konstruktor provede dotaz. Další věc je metoda zobrazdb(). Tato metoda uloží výsledky z MySQL do asociativního pole. Tento seriál nemá za úkol vysvětlovat Objektově orientované programování v PHP. Pokud chcete rozšířit své obzory znalosti PHP určitě se podívejte na Interval.cz.
Teď opět upravíme soubor head.php. Přidáme další inclůd, tentokrát includujeme naši třídu.
<?php
…
include ‘includes/config.php’;
//objekty
include ‘includes/classMenu.php’;
?>
…
Soubor uložíme a zavřeme. Nyní musíme menu zobrazit na naší stránce. V našem editoru otevřeme soubor leve_menu.php a vložíme script pro zobrazení mena.
…
<ul class=”sidemenu”>
<?php
$vyber = new Menu(”SELECT * FROM rubriky”);
while($radek = $vyber -> zobrazdb()){
echo “<li><a href=\”index.html\”>”.$radek[nazev].”</a></li>”;
}
?></ul>
…
Tento kód přijde namísto původního statického menu. Teď Vám script popíši. Do proměnné $vyber uložíme instanci třídy Menu. Vytzvoříme cyklus while a necháme jeho pomocí vypsat menu. Do parametrů cyklu uložíme proměnnou, do ktere inicializujeme metodu $vyber -> zobrazdb(). A nakonec menu vypíšeme zápisem:
echo “<li><a href=\”index.html\”>”.$radek[nazev].”</a></li>”;
Tak první třídu máme hotovou. Ani to nebolelo, co? Nyní opět odbočím od programování v PHP a udělám pár věcí pro SEO.
SEO = Search Engine Optimalization(optimalizace pro vyhledávače)
Takže v prvním kroku si vytvoříme soubor .htaccess, do kterého budeme ukládat příkazy pro přepis URL.
1. Musíme se rozhodnout zda budeme používat adresu s WWW nebo bez WWW. Pro Google Page Rank jsou to totiž 2 rozdílné adresy a všechny zpětné adresy by se dělily
a) Zápis pro verzi bez WWW
RewriteEngine On
Options+FollowSymlinks
RewriteCond %{HTTP_HOST}^ www.web.cz
RewriteRule (.*)http://web.cz/$1 [R=301,QSA,L]
b) Zápis pro verzi bez WWW
RewriteEngine On
Options+FollowSymlinks
RewriteCond %{HTTP_HOST}^ web.cz
RewriteRule (.*)http://www.web.cz/$1 [R=301,QSA,L]
Zvolenou metodu uložíme do souboru .htaccess a uložíme. Název domény www.web,cz a web.cz můžete změnit na svou.
2. Z adresy http://web.cz/index.php uděláme adresu http://web.cz/
RewriteRule ^index\.php$ /$1 [R=301]
Pro dnešek by to bylo již vše. Těším se na Vás zase u dalšího dílu seriálu. Pokud budete mít nějaké problémy, pište prosím na naše fórum.
Linkuj.cz! | Vybrali.sme.sk | | MediaBlog.cz | Del.icio.us





Srpen 29th, 2007 v 12.19
Srpen 29th, 2007 v 12.25
SQL dotazy mam overene v phpMyadmin. Pomuzu kdyz mi nejlepe ofotite chybu co to hlasi
Srpen 29th, 2007 v 13.39
Srpen 29th, 2007 v 13.39
VALUES (?1? , ?Petr?, ?Láslo?, ?admin?, ?laslo.petr(a)seznam.cz?, ?e10adc3949ba59abbe56e057f20f883e?, ?1?
); v tem je problem
Srpen 29th, 2007 v 13.42
VALUES (’1′ , ‘Petr’, ‘Láslo’, ‘admin’, ‘aslo.petr(a)seznam.cz’, ‘e10adc3949ba59abbe56e057f20f883e’, ‘1′
);
TO hodíš do php my admin
tak jak si tam vložil tabulky
Srpen 29th, 2007 v 13.53
Srpen 29th, 2007 v 13.55
VALUES (?1? , ?Petr?, ?Láslo?, ?admin?, ?laslo.petr(a)seznam.cz?, ?e10adc3949ba59abbe56e057f20f883e?, ?1?
); ne ?
Srpen 29th, 2007 v 13.58
Srpen 29th, 2007 v 14.01
Srpen 29th, 2007 v 14.04
INSERT INTO `uzivatele` ( `id` , `jmeno` , `prijmeni` , `nick` , `email` , `heslo` , `id_opravneni` )
VALUES (
?1?, ?Boris?, ?Maxian?, ?dzala?, ?dzala(
at
)roct.eu?, ?djsummer?, ?1?
)
MySQL hlási: Dokumentácia
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘roct.euâ??, â??djsummerâ??, â??1â??
)’ at line 2
Srpen 29th, 2007 v 14.05
Leden 2nd, 2008 v 20.51
to merlin: opravdu obdivuji vasi trpelivost vysvetlovat tyhle veci, podivejte lidi, pokud ani netusite co je phpMyAdmin, nevite co je SQL atp. uz chcete vyvijet podle tutu nejaky CMS? Mrzi me jesli nekoho urazim, ale proc si prvne neprostudujete nejake clanky kde vysvetluji alespon zakladni synstaxe SQL, praci s PMA, a alespon praci s promennyma v php…
Leden 9th, 2008 v 16.36
SQL-dotaz:
INSERT INTO `uzivatele` ( `id` , `jmeno` , `prijmeni` , `nick` , `email` , `heslo` , `id_opravneni` )
VALUES (
?1?, ?Petr?, ?Láslo?, ?admin?, ?laslo.petr(
a
)seznam.cz?, ?e10adc3949ba59abbe56e057f20f883e?, ?1?
)
MySQL hlásí: Dokumentace
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ’seznam.cz?, ?e10adc3949ba59abbe56e057f20f883e?, ?1?
)’ at line 2
Leden 9th, 2008 v 16.39
Sakra je takovej problém aby někdo kdo to umí opravil tu syntaxi vzoru, která je očividně špatně aby sme to my lamy mohli použít!
Leden 9th, 2008 v 18.37
Sakra proč tam všichni rvete otaznbiky místo apostrofů? Dyť to tam mam uvedené správně.
Leden 9th, 2008 v 19.21
Protože to má v tom návodu blbě. Otazníky se tam hodí když to dáváš přes Ctrl+C protože ty druhý uvozovky jsou nestandartní nebo co.
INSERT INTO `uzivatele` ( `id` , `jmeno` , `prijmeni` , `nick` , `email` , `heslo` , `id_opravneni` )
VALUES (’1′, ‘aaaaa’ , ‘aaaaa’ , ‘admin’ , ‘aaaaa(a)seznam.cz’ , ‘aaaaa’ , ‘1′);
Leden 9th, 2008 v 19.36
Jde tp chce to jiný uvozovky, ted zas nechápu proč mi nejdou rubriky, asi si tu bichli o PHP nakonec stejně budu muset přečíst celou
SQL-dotaz:
INSERT INTO `rubriky` ( `id` , `nazev` )
VALUES (
‘1′, ‘PHP’
), (
‘1′, ‘name’, ‘BlogerCMS’
), (
‘2′, ’slogan’, ‘Redakcni system pro Vas web’
)
MySQL hlásí: Dokumentace
#1136 - Column count doesn’t match value count at row 2
Leden 9th, 2008 v 20.11
INSERT INTO ‘nastaveni’ ( ‘id’ , ‘nazev’, ‘hodnot’ )
VALUES (
?1?, ?PHP?
), (
?1?, ?name?, ?BlogerCMS?), (
?2?, ?slogan?, ?Redakcni system pro Vas web?
);
omlouvam se moje chyba nemaj to byt rubriky ale nastaveni :-[
Leden 10th, 2008 v 20.48
Pořád ne-e, někde je chyba.
SQL-dotaz:
INSERT INTO `nastaveni` ( `id` , `nazev` , `hodnot` )
VALUES (
‘1′, ‘PHP’
), (
‘1′, ‘name’, ‘BlogerCMS’
), (
‘2′, ’slogan’, ‘Redakcni system pro Vas web’
)
MySQL hlásí: Dokumentace
#1136 - Column count doesn’t match value count at row 1
Leden 21st, 2008 v 12.39
Proboha to da rozum ze je nekde chyba kdyz mas ID jako auto_increment lol
INSERT INTO `nastaveni` ( `id` , `nazev` , `hodnot` )
VALUES (”,’1′, ‘PHP’), (”, ‘name’, ‘BlogerCMS’), (”, ’slogan’, ‘Redakcni system pro Vas web’);
nebo :
INSERT INTO `nastaveni` ( `nazev` , `hodnot` )
VALUES (’1′, ‘PHP’), (’name’, ‘BlogerCMS’), (’slogan’, ‘Redakcni system pro Vas web’);
jak jednoduche ze
Leden 21st, 2008 v 15.20
V phpadmin mi funguje bohužel zadání id cisla i pres auto_increment, zduraznuji kommentare resici to ze nejde myadmin uz resit nebudu. Cilem serialu neni naucit deolat s phpmyadmin.
Červen 23rd, 2008 v 14.09
Cafec, tohle je dobry TUT, jenze ma hodne chyb, coz me stve !
:(
:(
Prosinec 28th, 2008 v 11.16
Kdyby jste byli líní jako já, tak si napíšete za 1 minutu skript, který Vám nahradí v textu ?, ? tímto ‘, ‘ .Co je na tom tak složitého?
Prosinec 28th, 2008 v 11.26
A když tam bude otázka?