Základy algoritmizace a programování
1
Základy programování v PHP
Programovací jazyk PHP (Hypertext preprocessor) je skriptovací jazyk, který běží na straně
serveru. Server posílá do vašeho počítače pouze výsledky. Používá se pro tvorbu webových
aplikací – dynamických stránek. Je postaven na základech jazyka C. Skriptovací jazyk PHP je
neustále velmi rychle vyvíjen. Je to nejčastěji používaný modul na internetových serverech.
Výhody jazyka PHP:










PHP je jazyk, který je relativně jednoduchý na pochopení
PHP má syntaxi velmi podobnou jazyku C a je tedy většině vývojářů dost blízký
PHP podporuje širokou řadu souvisejících technologií, formátů a standardů
Je to otevřený projekt s rozsáhlou podporou komunity
Dá se najít velké množství již hotového kódu k okamžitému použití nebo funkční PHP
aplikace
Podstatná část z hotového kódu je šířena pod nějakou svobodnou licencí a dá se použít
ve vlastních projektech
PHP si dobře rozumí s webovým serverem Apache i IIS
PHP snadno komunikuje s databázemi, jako je MySQL, PostgreSQL atd.
PHP je multiplatformní a lze jej provozovat s většinou webových serverů a na většině
dnes existujících operačních systémů
PHP podporuje mnoho existujících poskytovatelů webhostingových služeb
Nevýhody jazyka PHP:

PHP je interpretovaný, ne kompilovaný jazyk
Interpretovaný jazyk je překládán až za běhu programu. Je pomalejší, ale nemá tak velké
formální požadavky. Překládají se interpretrem, ten instrukce zároveň při překladu provádí
a to vše na straně serveru.
Kompilovaný jazyk je nejdříve celý přeložen a až potom může být spuštěn. Je rychlejší než
jazyk interpretovaný, má však vyšší nároky na formální správnost kódu. Překládá se
kompilátorem, výsledkem překladu je (většinou) .exe soubor.



Kdokoli má přímý přístup k serveru, může nahlédnout do vašich PHP skriptů
Podpora objektového programování není v PHP na moc dobré úrovni.
Protože je PHP aktivně vyvíjen, v budoucích verzích jazyka se mohou některé funkce
změnit nebo se mohou chovat jinak než dosud.
Mezi nejčastější aplikace psané v PHP patří například:
- diskusní fóra
- chaty
- internetové obchody
- informační systémy
- redakční systémy
-firemní prezentace
- dynamické osobní stránky
- vyhledávače a katalogy
1
Základy algoritmizace a programování
- drobnosti typu počitadla, ankety a mnoho dalších
1.1
Princip PHP
PHP skriptovací jazyk, který běží na serveru. Typický PHP skript obsahuje jednak kusy
normálního HTML (XHTML) kódu, a jednak kusy programového kódu PHP. Když webový server
obdrží požadavek na zpracování takového skriptu, všechny kusy HTML kódu přeskočí a zpracuje
pouze PHP programový kód. Výsledky ze zpracování programového kódu vloží do HTML kódu.
Všechny příklady musí být pro svou funkčnost vloženy na internetový server.
Příklad:
Kód bez PHP
<?//xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="description" content="... obsah dokumentu.." />
<meta name="Author" content="vaše jméno" />
<title>Úvod do PHP</title>
<link rel="stylesheet" href="styl.css" type="text/css" />
</head>
<body>
<p>Stránka bez PHP. Nevím kolik je hodin.</p>
</body>
</html>
U prvního řádku vložte před značku xml dvě lomítka. Tím zajistíte, že se tento řádek nebude
zpracovávat v interpreteru PHP. Použitá sekvence znaků <? značí začátek xml kódu, ale také to
může být začátek PHP kódu. Dvě lomítka pro PHP znamenají poznámku a tento řádek přeskočí.
2
Základy algoritmizace a programování
Pokud si zobrazíte v prohlížeči zdrojový kód stránky (pomocí pravého tlačítka myši a volby
zobrazit zdrojový kód), uvidíte, co přesně do vašeho prohlížeče server poslal.
Kód s PHP
<?//xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="description" content="... obsah dokumentu.." />
<meta name="Author" content="vaše jméno" />
<title>Úvod do PHP</title>
<link rel="stylesheet" href="styl.css" type="text/css" />
</head>
<body>
<p>Stránka s PHP. Vím, že právě je <?echo Date("G:i")?> hodin.</p>
</body>
</html>
Při kontrole poslaného kódu serverem, si všimněte, že server z PHP příkazu vložil do HTML pouze
výsledek – 13:26. Prohlížeč nemá sebemenší tušení, co všechno se na serveru dělo než mu byl
výstup odeslán, vidí jen samotný výsledek.
Části PHP kódu se do skriptů vkládají pomocí speciálních značek:
<? a ?> nebo <?php a ?>
Celý soubor může být jeden dlouhý PHP kód. Pak začíná a končí znaky <? a ?>. V souboru může
být kód PHP jen na jednom určitém místě nebo na více místech. V souboru také žádný PHP kód
3
Základy algoritmizace a programování
být nemusí. Může se tvářit jako php skript, ale ve skutečnosti je to normální HTML soubor a PHP
kód v něm vůbec není.
Při uložení PHP souboru musí mít soubor příponu php (nebo další povolené přípony na serveru).
Každý programový řádek (ukončená funkce) musí končit znakem středník (;).
Programový kód můžete psát v libovolném editoru bez formátování. Naprosto nevhodný je
například Word. Jeden z nejlepších programů je český program PSPad (neplacený). Je to program
pro tvorbu souborů v různých formátech.
Výhody použití programu PSPad:












Pomocí protokolu FTP možnost práce přímo na internetovém serveru
Velmi jednoduchá a intuitivní práce
Neomezená délka editovaného textu
Možnost otevření více dokumentů současně
Záznam maker s možností uložení na disk a ruční editace
Práce s projekty
Hledání a nahrazování v souborech
Nalezení rozdílů v textových souborech (porovnání verzí)
Zvýraznění syntaxe
Automatické rozpoznání syntaxe podle typu souboru s možností manuální
změny
Volitelné zobrazení čísel řádků, podbarvení aktuálního řádku, pravítko
Převody velikosti písmen (malá, velká, první písmena velká)
Program velice dobře zvýrazňuje syntaxi různých jazyků. Po spuštění si nastavte syntaxi pro PHP.
Pokud vytvořený PHP soubor uložíte na lokální a potřebujete vyzkoušet jeho funkčnost, musíte ho
nahrát na internetový server. To můžete provést například pomocí programu Total Commander.
Postup:
1. Spusťte Total Commander
2. Zvolte ikonu FTP
3. Zvolte tlačítko Nové připojení
4. Zadejte Relaci (soscb)
5. Zadejte hostitele (soscb.cz)
4
Základy algoritmizace a programování
6. Zatrhněte funkci Použít pasivní režim
7. Zadejte OK a pak Připojit
8. Po odeslání zadejte přístupové jméno
9. Zadejte přístupové heslo
10. Soubory se nakopírujte do vašeho adresáře
11. Spusťte php skript - např.: www.soscb.cz/vyuka/vaše jméno/pokus.php
Další možností je nakonfigurovat si v lokálním počítači webový server Apache a podporu pro php.
Zjištění funkčnosti PHP
Pokud se vám zdá, že vaše programy nejsou funkční, je dobré nejdříve zkontrolovat, zda je na
serveru nainstalován modul PHP.
Vytvořte soubor s následující funkcí a uložte ho na server (nezapomeňte na příponu souboru - php):
<?
phpinfo ();
?>
Pokud je vše v pořádku a PHP je nainstalován, zobrazí se podrobný výpis nastavení PHP.
Jak jste již četli, jednotlivé instrukce se oddělují středníkem. Pokud to neprovedeme, dojde
k syntaktické chybě a systém zobrazí v prohlížeči:
Výhodou je, že nám systém oznámí, na kterém řádku se uvedená chyba vyskytuje. Dejte pozor,
pokud je funkce na více řádcích, může být chyba nad uvedeným řádkem.
Špatně
<?
echo "První řádek"
echo "Druhý řádek"
?>
Správně:
<?
echo "První řádek" ;
echo "Druhý řádek" ;
?>
5
Základy algoritmizace a programování
1.2
Komentáře
Pokud píšete delší program, používejte v programovém kódu komentáře. Tím zajistíte, že se v kódu
vyznáte i po několika měsících či letech. Komentář je něco, co program při zpracování ignoruje a
slouží tedy pouze uživateli.
Komentáře mohou být v PHP jednořádkové nebo víceřádkové.
// - (dvě dopředná lomítka) – jednořádkový komentář
# - (mřížka) – jednořádkový komentář
dvojice /* a */ (lomítko+hvězdička a hvězdička+lomítko) – víceřádkový kometář
<?
// skriptu je jedno, co tady napíšu
# skriptu je úplně jedno, co tu bude
?>
<?
/*
Nevím, jestli to, co napsáno v tomto skriptu bude fungovat.
Ještě se na to budu muset podívat.
*/
?>
Víceřádkovým komentářem můžete zakomentovat celý blok textu velice rychle, a také velice
špatně. Pamatujte, že víceřádkové komentáře nelze vnořovat. První sekvence ’*/’ totiž celý
komentář ukončí. Následující kód tedy skončí chybou:
<?
/*
Chci to zakomentovat.
To by přece nemělo vadit.
/*
Ale díky "vnořenému" víceřádkovému komentáři
... už to vadí
*/
*/
?>
1.3
Příkaz echo
Příkaz echo vytiskne jeden nebo více řetězců.
<?
echo "Dnes svítí sluníčko";
?>
<?
echo "Dnes svítí sluníčko ", "Zítra bude pršet ", "Pozítří bude oblačno";
?>
6
Základy algoritmizace a programování
Víceřádkový řetězec
Budete-li chtít vytisknout víceřádkový řetězec, můžete provést něco jako:
<?
echo "Tohle bude první řádek
Tohle bude druhý řádek
Tohle bude třetí řádek"
?>
Rovnocenný zápis bude i zápis s tzv. speciální sekvencí znaků – \n.
<?
echo "Tohle bude první řádek\nTohle bude druhý řádek\nTohle bude třetí řádek"
?>
\n je jednou z tzv. escape sekvencí.
1.4
Escape sekvence
Pomocí speciálních zápisů můžeme zobrazit znaky, které by jinak PHP zpracoval jako součást
příkazu.
Sekvence
Význam
\n
\"
\r
\t
\\
\$
Nový řádek
Uvozovky
Přechod na začátek řádku
Tabelátor
Zpětné lomítko
Dolar
Takže, budete-li chtít donutit příkaz echo, aby ve výstupu zobrazil skutečnou uvozovku, můžete
napsat něco jako:
<?
echo "PHP už \"běžně\" programuji" ;
?>
Pokud jste si zkoušeli uvedený příklad s řádky a máte pocit, že tam cosi nehraje, máte pravdu.
V prohlížeči totiž budou všechny údaje na jednom řádku. Musíte si uvědomit, jak prohlížeč
předané informace zobrazuje.
Když pošlete prohlížeči požadavek na skript uvedený výše a necháte si zobrazit zdrojový kód
stránky která dorazí, zjistíte, že tam ty konce řádku opravdu jsou. HTML ale nezalamuje řádek
tehdy, když je znak konce řádku v kódu, HTML má k tomu značku <br />. Je samozřejmě možné
vložit značku HTML do řetězce v PHP, třeba takto:
<?
echo "Tohle bude první řádek<br />Tohle bude druhý řádek<br />Tohle bude třetí řádek" ;
?>
7
Základy algoritmizace a programování
Prohlížeč obdrží následující kód:
Tohle bude první řádek<br />Tohle bude druhý řádek<br />Tohle bude třetí řádek" ;
Pokud budete chtít být bezchybní a mít validní kód, můžete napsat kód i takto:
<?
echo "Tohle bude první řádek<br />\nTohle bude druhý řádek<br />\nTohle bude třetí řádek" ;
?>
Prohlížeč obdrží následující kód:
Tohle bude první řádek<br />
Tohle bude druhý řádek<br />
Tohle bude třetí řádek" ;
1.5
Spojování řetězců
Spojování řetězců se prování pomocí operátoru . (tečka).
<?
echo "Klidně si spojím jméno " ."s příjmením";
?>
Tečka zde vede ke spojení, zřetězení řetězců. Je rovněž možné spojit více než dva řetězce.
1.6
Proměnné v PHP
Každý programovací jazyk pracuje s nějakými hodnotami. To, do čeho se tyto hodnoty ukládají, se
nazývá proměnné.
Každá proměnná má:
- název (někdy se mu říká identifikátor)
- hodnotu (někdy se označuje termínem literál)
V každém okamžiku je hodnota proměnné v programu jednoznačně daná, během programu se však
může měnit
Typy proměnných
Typ
Logický typ
Název v PHP
Boolean
Celočíselný typ
Integer
8
Popis
Uchovává hodnotu "pravda" nebo "nepravda".
Zapisuje se jako TRUE a FALSE
Uchovává celá kladná i záporná čísla (a nulu)
(-2 bilióny až + 2 bilióny)
Základy algoritmizace a programování
Desetinné číslo
Float nebo Real
Řetězec
String
Uchovává desetinná čísla s přesností obyčejně
na 14 desetinných míst (velikost čísla má 308
nul).
Uchovává texty neboli řetězce. Řetězec je znak
nebo sada znaků, v PHP prakticky neomezené
délky.
- Každá proměnná musí mít jednoznačný název. Ten v PHP začíná znakem dolaru ($) a následuje
(bez mezery) nějakým pojmenováním.
- První znak toho pojmenování musí být buď písmeno a-z nebo podtržítko. Nesmí to být číslo ani
nic jiného.
- Názvy proměnných v PHP rozlišují mezi malými a velkými písmeny, takže pozor na to. Praxe
bývá většinou taková, že se proměnné píší malými písmeny.
- Desetinná čísla se zadávají s tečkou, ne s čárkou.
- Řetězce se uzavírají do uvozovek nebo do apostrofů.
Ukázky proměnných
<?
//logický typ
$mam_malo_penez = TRUE;
//celočíselný typ
$plat = 10000;
//desetinné číslo
$disketa = 3.5;
//řetězec
$prohlaseni = "Příští měsíc budou prázdniny." ;
//Proměnné vypíšete opět příkazem echo.
echo $mam_malo_penez."<br />";
echo $plat."<br />";
echo $disketa."<br />";
echo $prohlaseni."<br />";
?>
Běžné chyby v proměnných
<?
// tohle bude špatně. Proměnná nesmí začínat číslem
$3sestry = "tři sestry" ;
// tohle sice projde, ale nic to nevypíše (velikost písmen v názvu)
$rok = 2004;
echo $Rok;
?>
9
Základy algoritmizace a programování
1.7
Operátory
Operátor se používá k zjištění hodnoty pomocí provedení procedury.
OPERÁTOR
+
*
/
%
OPERACE
Sčítání
Odečítání
Násobení
dělení
zbytek (modulo)
PŘÍKLAD
1+2
2–1
2*1
3/2
3%2
==
<
>
<=
=>
!=
<>
Rovnost
Menší
Větší
menší nebo rovno
větší nebo rovno
Nerovnost
Nerovnost
$a == $b
$a < $b
$a > $b
$a <= $b
$a => $b
$a != $b
$a <> $b
1.8
POPIS
součet 1 a 2 = 3
rozdíl 2 a 1 = 1
součin 2 a 1 = 2
podíl 3 a 2 = 1.5
počítá zbytek celočíselného
dělení = 1
$a a $b mají stejnou hodnotu
$a je menší než $b
$a je větší než $b
$a je menší nebo rovno $b
$a je větší nebo rovno $b
$a se nerovná $b
$a se nerovná $b
Proměnná typu Pole
V PHP je kromě základních datových typů (celá čísla, desetinná čísla, logické hodnoty a řetězce)
k dispozici i datový typ pole. To je speciální struktura, která může v jedné proměnné obsahovat
sadu hodnot. Pole má prvky; každý prvek má index nebo klíč a hodnotu.
Definice pole
<?
$jmeno[1]="Petr";
$jmeno[2]="Pavel";
$jmeno[3]="Maruška" ;
$jmeno[4]="Eva";
$jmeno[5]="Roman";
?>
Tímto zápisem vznikne proměnná $jmeno (pole), která obsahuje pět prvků, z nichž každý má svůj
index (například trojku) a hodnotu (Maruška). Z toho vidíte, že pole se v PHP zapisují jako každá
jiná proměnná, pouze za názvem mají v hranatých závorkách index. Toto pole je indexované.
Někdy může ale být šikovnější rozlišit od sebe prvky pole řetězcem, čímž vznikne tzv. asociativní
pole.
<?
$pocet_lidi["Praha"]=1000000;
$pocet_lidi ["Ústí nad Labem"]=100000;
$pocet_lidi ["Horní Lhota"] = 350;
?>
Obecně může být asociativní pole užitečné v případě, kdy budete chtít rozlišovat prvky podle
něčeho jiného než podle čísel.
10
Základy algoritmizace a programování
Index pole můžeme vynechat a PHP jej dosadí za nás. Také můžete zadat první hodnotu, od které
se bude index odvíjet. Další možnost je použít v PHP funkci array, která provede totéž.
<?
$jmeno[]="Petr";
$jmeno[]="Pavel";
$jmeno[]="Maruška" ;
$jmeno[]="Eva";
$jmeno[]="Roman";
?>
nebo pomocí funkce array, což je ještě kratší a je to naprosto rovnocenný zápis:
<?
$jmeno=Array("Petr", "Pavel", "Maruška" , "Eva", "Roman");
?>
Pamatujte, že PHP standardně čísluje pole od nuly, ne od jedničky.
Aby příklad skutečně fungoval jako ten úvodní, musíte do prvního indexu zadat číslo 1.
<?
$jmeno[1]="Petr";
$jmeno[]="Pavel";
$jmeno[]="Maruška" ;
$jmeno[]="Eva";
$jmeno[]="Roman";
?>
nebo
<?
$jmeno=Array(1=>"Petr", "Pavel", "Maruška" , "Eva", "Roman");
?>
Příklad: Z definovaného pole vypište první a poslední záznam
<?
$jmeno[]="Petr";
$jmeno[]="Pavel";
$jmeno[]="Maruška" ;
$jmeno[]="Eva";
$jmeno[]="Roman";
?>
echo $fronta[0];
?>
<br />
<?
echo $fronta[4];
?>
11
Základy algoritmizace a programování
1.9
Výrazy, konstanty
Výrazem je v PHP cokoliv, co má nějakou hodnotu. Konstanta je v PHP něco jako proměnná, ale
během programu svou hodnotu nemění. Konstanty se definují pomocí funkce define a zapisují se
velkými písmeny.
<?
define ("BROWSER", "IE 9");
define ("OS", "Windows 7");
echo "Váš browser je " .BROWSER." a Váš systém je " .OS;
?>
1.10
Inkrementace, dekrementace, postinkrementace, preinkrementace
Inkrementace – při inkrementaci se hodnota proměnné zvýší o 1.
<?
$a = 10;
$b = ++$a;
echo $b;
?>
Dekrementace – při dekrementaci se sníží hodnota proměnné o 1.
<?
$a = 10;
$b = --$a;
echo $b;
?>
Postinkrementace
<?
$a = 10;
$b = $a++;
echo $a. "<br />";
echo $b;
?>
Při postinkrementaci se v tomto příkladu výraz $a++ nejdříve vyhodnotí, jeho hodnota se přiřadí
proměnné b. Následně je inkrementována proměnná a.
Proměnná a má hodnotu 11 a proměnná b má hodnotu 10.
Preinkrementace
<?
$a = 10;
$b =++ $a;
echo $a. "<br />";
echo $b;
?>
12
Základy algoritmizace a programování
Při preinkrementaci se v tomto příkladu nejdříve inkrementuje proměnná a. Následně je výraz ++$a
vyhodnocen - jeho hodnota přiřazena proměnné b.
Proměnná a má hodnotu 11 a proměnná b má hodnotu 11.
1.11 Příkazy
Příkazy jsou kostrou celého programu. Udělují programům základní schopnost rozhodování, která
je zapotřebí pro většinu početních úloh.
1.11.1 Příkazy pro větvení programů
Tyto příkazy rozhodují o tom jaký blok kódu se provede a za jakých podmínek.
V PHP jsou dvě podmíněné konstrukce. První je if...elseif...else a druhá switch...case.
Příkaz if
<?
// Jan se vypíše, jen pokud bude $jmeno Jan
if ($jmeno == "Jan") echo ("Jan");
?>
<?
// Jméno a příjmení se vypíše pouze tehdy, pokud jméno bude Jan a příjmení Novák
if ($jmeno == "Jan" AND $prijemni == "Novák") {
echo ("Jan");
echo ("Novák");
}
?>
PHP také umožňuje používat rozvětvené podmínky. Pomocí klíčového slova else můžete určit blok
kódu, který se provede, pokud je daná podmínka nepravdivá. Také máte klíčové slovo elseif, který
vám v případě nesplnění hlavní podmínky umožňuje testovat alternativní podmínky.
<?
//testuje se zadané číslo v proměnné $i
$i=0;
if ($i < 0) {
echo ("Záporné");
}
elseif ($i == "0") {
echo ("Nula");
}
else {
echo ("Kladné");
}
?>
13
Základy algoritmizace a programování
Příkaz switch
Příkaz switch se používá, pokud testujeme jednu proměnnou s více možnými hodnotami.
<?php
//testuje se jaký řetězec je v proměnné $stat
$stat="sk";
switch ($stat) {
case "cz":
echo "Česká republika";
break;
case "sk":
echo "Slovenská republika";
break;
default:
echo "Odjinud";
}
?>
Příkaz switch porovnává hodnotu proměnné $stat s každou hodnotou klauzule case. Pokud nalezne
odpovídající hodnotu, provede příkazy spojené s touto volbou až do příkazu break.
1.11.2 Cykly
Cykly nám umožňují provádět určitou část kódu opakovaně až do nastaveného počtu nebo splnění
podmínky. V PHP jsou dva typy cyklů.
While - provede znovu daný kód jen v případě že je splněna daná podmínka.
For – tomuto cyklu dopředu zadáte, kolikrát má daný kód provést.
Příkaz while
Výpis čísel od 1 do 10
<?
$i = 0;
while ($i <= 9) {
$i++;
echo $i;
}
?>
Výpis čísel od 1 do 10 do tabulky
<table>
<tr><td>Číslo</td></tr>
<?
$i=1;
while ($i<=10) {
echo "<tr><td>".$i."</td></tr>\n";
$i++;
}
?>
</table>
14
Základy algoritmizace a programování
Nekonečné smyčky
Při nepozornosti může vzniknout nekonečná smyčka – program nikdy nebude mít konec. Na
serveru bývá většinou zapnuta ochrana a program se po 30 sekundách násilně ukončí. V opačném
případě by mohlo dojít k zahlcení serveru.
<?
$i=1;
while ($i=1) $i++;
echo $i;
?>
Příkaz for
<table>
<tr><td>Číslo</td></tr>
<?
for ($i=1; $i<=10; $i++)
echo "<tr><td>".$i."</td></tr>";
?>
</table>
Vnořené smyčky
(malá násobilka)
<table>
<?
for ($radek=1; $radek<=10; $radek++):
echo "<tr>";
for ($sloupec=1; $sloupec<=10; $sloupec++):
echo "<td>".$radek*$sloupec."</td>";
endfor;
echo "</tr>";
endfor;
?>
</table>
Příkazy break a continue
Smyčky nemusejí probíhat vždy řádně celým cyklem. Někdy může být výhodné provádění cyklu
přerušit. K tomu slouží příkaz break.
break
Úprava předchozího příkladu tak, aby vracel pouze čísla do padesáti.
<table>
<?
for ($radek=1; $radek<=10; $radek++):
echo "<tr>";
15
Základy algoritmizace a programování
for ($sloupec=1; $sloupec<=10; $sloupec++):
if ($radek * $sloupec>50) break; // to je ten přidaný řádek
echo "<td>".$radek*$sloupec."</td>";
endfor;
echo "</tr>";
endfor;
?>
</table>
Continue
Úprava předchozího příkladu tak, aby vracel pouze čísla větší než padesát.
<table>
<?
for ($radek=1; $radek<=10; $radek++):
echo "<tr>";
for ($sloupec=1; $sloupec<=10; $sloupec++):
if ($radek * $sloupec<50) continue; // to je ten přidaný řádek
echo "<td>".$radek*$sloupec."</td>";
endfor;
echo "</tr>";
endfor;
?>
</table>
1.11.3 Funkce (procedury)
Funkce jsou v PHP nezbytným programovacím prostředkem. Procedury i funkce se v PHP definují
klíčovým slovem function.
Procedura
Procedura je jednoduše řečeno kus kódu, který se může volat samostatně. Většinou se do procedury
umisťují ty části kódu, které se v programu opakují nebo se procedury používají pro větší
přehlednost.
<?
function tabulka()
{
?>
<table>
<tr><td>1</td><td>2</td></tr>
<tr><td>3</td><td>4</td></tr>
</table>
<?
}
?>
16
Základy algoritmizace a programování
Použití procedury tabulka
<?
echo "Toto je první tabulka";
tabulka();
echo "Toto je druhá tabulka";
tabulka();
?>
Funkce
<?
function dvaplusdva()
{
return 2+2;
}
?>
Výraz, který je uveden za return se vrátí jako výsledná hodnota a provádění funkce tím končí.
cokoli, co je uvedeno jako příkaz za klíčovým slovem return už se neprovede.
Funkce může mít více vstupních parametrů. Ty se pak oddělují čárkou. Funkce v PHP mohou být
rekurzivní. To znamená, že funkce může volat sebe samu. Funkce nemůže vracet více než jeden
výstupní parametr. Ale může vracet pole, takže se to dá obejít. Jedna uživatelská funkce může volat
jinou. Na pořadí, v jakém jsou uvedeny ve skriptu, přitom nezáleží.
1.11.4 Vkládání souborů
Funkce pro vkládání souborů použijete při vkládání částí kódu do webové stránky - záhlaví, zápatí,
kontaktní informace, vložení počítadla, vložení často používaných částí kódu apod.
Výhodou je úspora místa ne serveru a daleko snazší úprava určité funkce nebo části opakujícího se
kódu.
K tomuto účelu se používají příkazy require a include. Příkaz zadaný soubor vloží na místo, kde
se tento příkaz nachází.
require "soubor.php"; // požadovat
require ("soubor.php"); // volání ve tvaru fce
include "soubor.php"; // vložit
include ("soubor.php"); // volání ve tvaru fce
require - při neexistenci souboru se skript ukončí s fatální chybou
include - při neexistenci souboru zahlásí varování a pokračuje dále
U vkládaných souborů můžeme použít libovolnou příponu. Často se používá přípona .inc. Tím lze
bezpečně poznat, že daný soubor je určen pro vložení do jiného souboru a ne pro přímé volání.
Tento způsob znamená však velké bezpečnostní riziko. Soubory s příponou .inc nejsou zpracovány
serverem, takže kdokoliv, kdo zná jeho jméno si může zobrazit celý text. Používejte standardní
přípony pro php.
17
Základy algoritmizace a programování
Ukázka webové stránky
HTML tvořící webovou stránku
<!-- začátek hlavičky -->
<?//xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="description" content="... obsah dokumentu.." />
<meta name="Author" content="vaše jméno" />
<title>Úvod do PHP</title>
<link rel="stylesheet" href="styl.css" type="text/css" />
</head>
<!-- konec hlavičky -->
<!-- začátek úvodu -->
<body>
<div style="background-color: #FFFF00">
<h2 align="center">Střední odborná škola veterinární a mechanizační a
zahradnická<br />a Jazyková škola s právem státní jazykové zkoušky</h2>
</div>
<div><p>Rudolfovská 92, 372 16&nbsp; České Budějovice, telefon: 387 924 111,
e-mail: <a href="mailto:[email protected]">[email protected]</a></p><br /><hr />
</div>
<!-- konec úvodu -->
<!-- začátek obsahu -->
<p><b><a href="http://www.soscb.cz/mech.htm">Obor: MECHANIZACE A SLUŽBY</a></b></p>
<p><b><a href="http://www.soscb.cz/vet.htm">Obor: VETERINÁŘSTVÍ</a></b>
<p><b><a href="http://www.soscb.cz/zah.htm">Obor: ZAHRADNICTVÍ</a></b>
<!-- konec obsahu -->
<!-- začátek patičky -->
<p>&nbsp;</p><hr /><p><b>IČ:</b> 60075911<br /><b>DIČ:</b> CZ60075911</p>
</body>
</html>
<!-- konec patičky -->
18
Základy algoritmizace a programování
PHP tvořící tu samou stránku jako v předchozí ukázce. K tomuto souboru náleží další tři soubory –
hlavicka_inc.php, uvod_inc.php a paticka_inc.php.
<?
include "hlavicka_inc.php";
include "uvod_inc.php";
?>
<!-- konec úvodu -->
<!-- začátek obsahu -->
<p><b><a href="http://www.soscb.cz/mech.htm">Obor: MECHANIZACE A SLUŽBY</a></b></p>
<p><b><a href="http://www.soscb.cz/vet.htm">Obor: VETERINÁŘSTVÍ</a></b>
<p><b><a href="http://www.soscb.cz/zah.htm">Obor: ZAHRADNICTVÍ</a></b>
<!-- konec obsahu -->
<?
include "paticka_inc.php";
?>
hlavicka_inc.php
<?//xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="description" content="... obsah dokumentu.." />
<meta name="Author" content="vaše jméno" />
<title>Úvod do PHP</title>
<link rel="stylesheet" href="styl.css" type="text/css" />
</head>
uvod_inc.php
<body>
<div style="background-color: #FFFF00">
<h2 align="center">Střední odborná škola veterinární a mechanizační a
zahradnická<br />a Jazyková škola s právem státní jazykové zkoušky</h2>
</div>
<div><p>Rudolfovská 92, 372 16&nbsp; České Budějovice, telefon: 387 924 111,
e-mail: <a href="mailto:[email protected]">[email protected]</a></p><br /><hr />
</div>
paticka_inc.php
<p>&nbsp;</p><hr /><p><b>IČ:</b> 60075911<br /><b>DIČ:</b> CZ60075911</p>
</body>
</html>
19
Základy algoritmizace a programování
Práce se soubory
Soubory se používají pro ukládání dat pro pozdější použití. Dalším a lepším způsobem jak ukládat
data je použití databáze.
Abychom mohli zapisovat do souboru, musíte:
1. Otevřít soubor - pokud neexistuje, tak ho vytvořit
2. Zapsat do souboru
3. Zavřít soubor
Otevření souboru
K otevření souboru použijete funkci - fopen(název_souboru, mód), Otevřený soubor musíme vždy
uzavřít funkcí fclose (jméno proměnné, do které jste soubor otevřeli).
$fp = fopen("text.txt", "w");
Módy:
r
čtení od začátku
r+
čtení a zápis od začátku
w
zápis (pokud soubor existuje, smaže se jeho obsah)
w+
zápis a čtení od začátku
a
doplňování (zápis) od konce
a+
doplňování a čtení od konce
Přečtení souboru
readfile ("text.txt");
Pokud soubor nebude existovat, vydá varovné hlášení: Warning: readfile(text.txt)
[function.readfile]: failed to open stream: .....
Čtení ze souboru po řádcích
fgets() -
přečte vždy jeden řádek, dokud nenarazí na znak nové řádky
<?
$fp = fopen ("text.txt", "r");
$cti = fgets ($fp, 100);
echo $cti;
fclose ($fp); //uzavření souboru
?>
Čtení ze souboru po řádcích - výpis všech řádků
<?
$fp = fopen ("text.txt", "r");
while ($fp)
{
$cti = fgets ($fp, 100);
echo $cti;
}
fclose ($fp);
?>
Tato konstrukce zahlásí chybu, protože jsme neurčili, kdy má čtení skončit.
20
Základy algoritmizace a programování
Kdy zastavit čtení
feof() - Vrátí true, pokud ukazatel ukazuje na konec souboru (File End OF File)
<?
$fp = fopen ("text.txt", "r");
while (!feof($fp))
{
$cti = fgets ($fp, 100);
echo $cti."<br />";
}
fclose ($fp);
?>
Zápis do souboru
Zápis do souboru provedete příkazem fwrite.
<?
$fp = fopen ("text.txt", "a+");
fwrite ($fp, "Hedvika"."\n");
fclose ($fp);
$fp = fopen ("text.txt", "r");
while (!feof($fp))
{
$cti = fgets ($fp, 100);
echo $cti."<br />";
}
fclose ($fp);
?>
Pohyb uvnitř souboru
rewind() - nastaví pozici ukazatele na začátek souboru
ftell() - oznámí, jak daleko se ukazatel dostal v souboru (v bytech)
fseek() - nastaví ukazatel na libovolné místo v souboru (v bytech)
Smazání souboru
unlink()
např.: unlink ("text.txt");
Primitivní počítadlo
<?//xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="description" content="... obsah dokumentu.." />
<meta name="Author" content="vaše jméno" />
<title>Úvod do PHP</title>
<link rel="stylesheet" href="styl.css" type="text/css" />
</head>
21
Základy algoritmizace a programování
<body>
<?
$file = fopen ("text.txt","r+");
$pocet = fgets ($file) + 1;
rewind ($file); //nastavení na začátek souboru
fwrite ($file, $pocet);
fclose ($file);
?>
<h1>Stránka s počítadlem</h1>
<p>Jste <? include ("text.txt"); ?>. návštěvník této stránky</p>
</body>
</html>
Ověřování existence souboru
<?
if (file_exists ("text.txt"))
echo "Soubor existuje - spouštím počítadlo";
else
{
echo "Soubor neexistuje - založím ho!";
$file = fopen ("text.txt","w");
fclose ($file);
}
$file = fopen ("text.txt","r+");
$pocet = fgets ($file) + 1;
rewind ($file);
fwrite ($file, $pocet);
fclose ($file);
?>
1.11.5 Formátování řetězců
Ořezávání řetězců
chop() - ořízne prázdné znaky na konci
ltrim() - ořízne prázdné znaky vlevo
trim() - ořízne prázdné znaky na začátku a na konci
$name=trim($name)
Změna velikosti písmen
strtoupper - všechna písmena velká
strtolower - všechna písmena malá
ucfirst - první písmeno v řetězci velké
ucwords - první písmena všech slov velká
<?
$text = "aHoj pavLe<br />";
echo strtoupper($text). "<br />";
22
Základy algoritmizace a programování
echo strtolower($text) . "<br />";
echo ucfirst($text) . "<br />";
echo ucwords($text);
?>
Funkce pro spojování a dělení řetězců
implode(separátor, pole) - spojí řetězce daným separátorem
explode(separátor, řetězec) - vytvoří pole, roztrháním řetězce dle daného separátoru
substr(řetězec, začátek, konec) - umožní pomocí počátečního a koncového znaku získat podřetězec
z řetězce
implode
Ukázka spojení dvou řetězců z pole
<?
$jmeno = Array("Roman", "Blábolil");
$celejmeno = implode (" ", $jmeno);
echo $celejmeno;
?>
explode
Ukázka oddělení jména od domény u e-mailové adresy
<?
$email = ("[email protected]");
$pole = explode ("@", $email);
echo $pole[0]."<br />";
echo $pole[1];
?>
Vyhledávání řetězců
strstr(řetězec, hledaný řetězec) - vyhledá daný řetězec nebo znak
stristr(řetězec, hledaný řetězec) - nerozlišuje velikost písmen
1.12
Regulární výrazy
Regulární výrazy se používají k popsání vzoru uvnitř textu. Například řetězec "škola" odpovídá
regulárnímu výrazu "škola", ale také "škol", "kol" apod. V regulárním výrazu můžete použít
speciální znaky, které nám pomohou popsat vlastnosti hledaného výrazu.
23
Základy algoritmizace a programování
^ označuje začátek řetězce
( ^abc vyhovuje každý řetězec začínající "abc")
$ označuje konec řetězce
(abc$ vyhovuje každý řetězec končící "abc", ^abc$ vyhovuje pouze řetězec "abc")
"." zastupuje libovolný znak
(^.luh$ vyhovují řetězce "pluh", "dluh")
"*" označuje opakování předcházejícího znaku nula- a vícekrát
(^ab*$ vyhovují řetězce "a", ab", abb", abbb")
"+" označuje opakování předcházejícího znaku jednou- a vícekrát
(^ab+$ vyhovují řetězce ab", abb", abbb", [a-z]+ nejméně jeden znak z povolených znaků)
"?" označuje opakování předcházejícího znaku nula- nebo jedenkrát
(^ab?$ vyhovují pouze řetězce "a", ab")
"{2,4}" označuje opakování předchozího znaku 2 až 4-krát
(^ab{2-4}$ vyhovují řetězce "abb", "abbb" a "abbbb")
{2,} označuje opakování předchozího znaku alespoň 2-krát
[] zastupuje jeden znak ze seznamu v závorkách
"^" na začátku seznamu znamená negaci (tedy závorky zastupují jeden znak, který není na
seznamu)
(^[^0-9] vyhovují řetězce nezačínající číslicí)
"|" má význam logického OR
(^(b|cd)ef$ vyhovují řetězce "bef" a "cdef")
"()" kulaté závorky slouží k seskupení řetězce. Opakovací značky (*, +, ?) se pak vztahují na
celý obsah závorky, ne pouze na jeden znak.
(^(abc)*$ vyhovují řetězce "", "abc", "abcabc", abcabcabc")
"\." označuje znak ".", "\\" označuje znak "\"
(\. Vyhovuje libovolný řetězec obsahující alespoň jednu tečku)
Množiny a třídy znaků
[a-z] - množina povolených znaků
[aeiouy] - množina povolených znaků
[a-zA-Z] - množina povolených znaků (velká i malá písmena)
[^a-z] - množina nepovolených znaků
24
Základy algoritmizace a programování
Příklad:
Chceme zjistit, zda je zadaná e-mailová adresa ve správném tvaru a korektní.
jmé[email protected]éna.národní_doména
jméno - může obsahovat velká i malá písmena, číslice, podtržítko, pomlčku a tečku, minimálně
jeden znak
@
- povinný znak
doména - může obsahovat velká i malá písmena, číslice a pomlčku, minimálně jeden znak
.
- povinný znak
národní_doména - může obsahovat velká i malá písmena, číslice, pomlčku a tečku, minimálně
jeden znak
^[a-zA-Z0-9_.-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9.-]+$
Pomlčka a tečka musí být "ocejchovaná" obráceným lomítkem, aby nebyla chápána například jako
spojovník.
Vyhledávání řetězce pomocí regulárních výrazů
ereg(podřetězec, řetězec, pole) - prochází řetězec a pátrá po zadaném podřetězci. Nalezený řetězec
se může uložit do pole
eregi(podřetězec, řetězec, pole) - nerozlišuje velikost písmen
Otestování e-mailové adresy
<?
$email = "[email protected]";
if (eregi("^[a-zA-Z0-9_.-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9.-]+$", $email))
{
echo "Adresa ". $email. " je platná";
exit;
}
echo "Adresa ". $email. " není platná. Zadejte ji zvovu";
?>
1.13 Datum a čas
date() - funkce k získání a naformátování data a času
echo date ("j. m. Y");
Formátovací kódy pro funkci date
a
A
B
- am, pm
- AM, PM
- univerzální formát času
25
Základy algoritmizace a programování
d
D
F
g
G
h
H
i
j
l
m
M
n
s
U
w
y
Y
z
- den v měsíci (01-31)
- den v týdnu (Mon - Sun)
- celé jméno daného měsíce
- hodina (1-12)
- hodina (0-23)
- hodina (01-12)
- hodina (00-23)
- minuty (00-59)
- den v měsícu (1-31)
- den v týdnu (Monday - Sunday)
- číslo měsíce (01-12)
- jméno měsíce (Jan - Dec)
- číslo měsíce (1-12)
- vteřiny (00-59)
- celkový počet vteřin od 1. ledna 1970 - UNIXová časová známka
- den v týdnu jako číslo (0-6)
- rok jako doumístné číslo
- rok jako čtyřmístné číslo
- číslo dne v roce (0-365)
UNIXová časová známka
Druhým parametrem funkce date() je unixová časová známka. Je to číslo obsahující počet vteřin od
1. ledna 1970.
Tato známka je používána jako formát pro práci s časem.
Pro převod datumu a času na časovou známku, můžeme použít funkci mktime().
mktime (hodiny, minuty, sekundy, měsíc, den, rok)
1- nastavujeme pokud je, 0 - nastavujeme pokud není
<?
echo date ("j. m. Y"). "<br />";
$casovaznamka = mktime();
echo $casovaznamka;
?>
Výpočet věku uživatele
<?
$den = 13;
$mesic = 10;
$rok = 1965;
$znamkanarozeni = mktime (0, 0, 0, $mesic, $den, $rok);
$znamkadnesek = mktime();
$vekvteriny = $znamkadnesek - $znamkanarozeni;
//výsledek je ve vteřinách, musíme to převést na roky
$vek = ($vekvteriny / (60*60*24*365));
echo $vek;
?>
26
Základy algoritmizace a programování
Výpočet věku uživatele se zadávacím formulářem a přepočtem na dny a měsíce
(v příkladu je použita matematická funkce – floor pro zaokrouhlování)
<?//xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Úvod do PHP</title>
</head>
<body>
<table bgcolor="#c0c0c0" border="0" cols="2" width="350px" align="center">
<form action="uvod.php" method="post">
<tr><td><h3>&nbsp;Výpočet věku</h3></td></tr>
<tr>
<td>&nbsp;Den narození:(číslo)</td>
<td><input type="text" name="den" size="2"></td></tr>
<tr>
<td>&nbsp;Měsíc narození: (číslo)</td>
<td><input type="text" name="mesic" size="2"></td></tr>
<tr>
<td>&nbsp;Rok narození:</td>
<td><input type="text" name="rok" size="2"></td>
<tr>
<td><input type="submit" name="vypocet" value="Vypočítej">
<input type="reset" name="reset" value="Reset"></td></tr>
</form>
<?
$narozeni=mktime(0,0,0,$_POST["mesic"],$_POST["den"],$_POST["rok"]);
$dnes=mktime();
$sec=$dnes-$narozeni;
$vypocet=($sec/(60*60*24*365));
if ($_POST["vypocet"]=="Vypočítej"){
echo "<tr><td><h3>Tvůj věk je: ".$vypocet."</h3></td></tr></table>";
echo "<table id='vek' bgcolor='#c0c0c0' border='0' align='center' width='auto'>";
$roky= floor ($vypocet);
echo "<tr><td><h3>".$roky." let</h3></td>";
$mesice=(($vypocet-$roky)*365)/30;
$mesice1= floor ($mesice);
echo "<td><h3>".$mesice1." měsíců</h3></td>";
$dny=($mesice-$mesice1)*30;
$dny1= floor ($dny);
echo "<td><h3>".$dny1." dnů</h3></td>";
$hodiny=($dny-$dny1)*24;
$hodiny1= floor ($hodiny);
echo "<td><h3>".$hodiny1." hodin</h3></td>";
$minuty=($hodiny-$hodiny1)*60;
$minuty1= floor ($minuty);
echo "<td><h3>".$minuty1." minut</h3></td>";
$sekundy=($minuty-$minuty1)*60;
$sekundy1= floor ($sekundy);
echo "<td><h3>".$sekundy1." sekund</h3></td></tr>";
}
else {
echo "<tr><td><h3>Zadejte požadované údaje prosím.</h3></td></tr>";}
?>
</table>
</body>
</html>
27
Základy algoritmizace a programování
1.14 Připomínková kniha
Příklad: Vytvoření jednoduché připomínkové knihy s využitím formuláře a databáze MySQL
1. soubor – 1chat.php
<?//xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="content-language" content="cs" />
<meta name="Author" content="Blabolil" />
<link rel="stylesheet" type="text/css" href="styl.css" />
<title>Chat</title>
</head>
<body>
<h3>Připomínková kniha - vložení záznamu</h3>
<form method="POST" action="1chat.php">
<h4>Zadej jméno: <input type="text" name="jmeno"></h4>
<h4>Zadej zprávu: <textarea name="zprava" rows="4" cols="50"></textarea>
<br /><br />
<input type="submit" value="Odeslat!">
<input type="reset" value="Vymaž">
</form>
<?
// Filtrování údajů z formulářového pole proti vložení programového kódu
$jmeno=htmlspecialchars ($_POST["jmeno"]);
$zprava=htmlspecialchars ($_POST["zprava"]);
// Kontrola údajů. Pokud nebude vyplněno vstupní pole, vypíše se zpráva a znovu se vypíše kniha
if ($jmeno=="" or $zprava==""){
echo "<h2>Pozor musí být zadané všechny údaje</h2><br />";
include ("3chatvypis.php");
exit;
}
// Pokud je vše vyplněno, vloží se údaje do databáze a kniha se vypíše
include ("2chatvloz.php");
include ("3chatvypis.php");
?>
</body>
</html>
2. soubor – 2chatvloz.php
<?
// Otevření databáze vyuka
$pripojeni=mysql_connect("soscb.cz", "vyuka", "xxxx") or die (mysql_error());
mysql_select_db("vyuka") or die (mysql_error());
// Převzetí údajů z formuláře
$jmeno=$_POST["jmeno"];
$zprava=$_POST["zprava"];
$jmeno2=$_POST["jmeno2"];
$zprava2=$_POST["zprava2"];
// Vložení údajů do tabulky blab
$vloz="insert into blab value (null, '$jmeno', now(), '$zprava', '$jmeno2', '$zprava2')";
28
Základy algoritmizace a programování
$hotovo=mysql_query($vloz);
// Uzavření databáze
mysql_close($pripojeni);
?>
3. soubor – 3chatvypis.php
<?
// Otevření databáze vyuka
$pripojeni=mysql_connect("soscb.cz", "vyuka", "akuyv") or die(mysql_error());
mysql_select_db("vyuka") or die (mysql_error());
// Zvolení údajů pro výpis
$dotaz="select * from blab order by id desc limit 0,50";
$dotazhotovo=mysql_query($dotaz);
echo "<table bgcolor=\"silver\" border=\"0\">";
// Výpis údajů
while ($zaznam=mysql_fetch_array($dotazhotovo)){
$id=$zaznam["id"];
$jmeno=$zaznam["jmeno"];
$datum=$zaznam["datum"];
$zprava=$zaznam["text"];
$jmeno2=$zaznam["jmeno2"];
$zprava2=$zaznam["text2"];
echo "<tr>";
echo "<td width='500px'>".$jmeno."</td> <td>".$datum."</td> "."<td><a
href=\"4chatvymaz.php?id=".$zaznam["id"]."\">x</a>";
echo "<a href=\"5chatodpoved.php?id=".$zaznam["id"]."\">o</a></td></tr>";
echo "<tr><td colspan='3'>".$zprava."</td></tr>";
// Výpis odpovědí
echo "<tr><td colspan='3'><font style=color:green>".$jmeno2."</font></td></tr>";
echo "<tr><td colspan='3'><font style=color:green>".$zprava2."</font><hr /></td></tr>";
}
echo "</table>";
// Uzavření databáze
mysql_close($pripojeni);
?>
4. soubor – 4chatvymaz.php
<?
// Otevření databáze vyuka
$pripojeni=mysql_connect ("soscb.cz", "vyuka", "akuyv");
mysql_select_db ("vyuka");
// Výběr čísla záznamu
$id=$_GET["id"];
// Výmaz záznamu
$vymaz="delete from blab where id='$id'";
mysql_query ($vymaz);
// Uzavření databáze
mysql_close($pripojeni);
require ("1chat.php");
?>
29
Základy algoritmizace a programování
5. soubor – 5chatodpoved.php
<?//xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="content-language" content="cs" />
<meta name="Author" content="Blabolil" />
<link rel="stylesheet" type="text/css" href="styl.css" />
<title>
Odpověď
</title>
</head>
<body>
<h3>Připomínková kniha - odpověď</h3>
<form method="POST" action="5chatodpoved.php">
<h4>Zadej jméno: <input type="text" name="jmeno2"></h4>
<h4>Zadej odpověď: <textarea name="zprava2" rows="4" cols="50"></textarea>
<input type="hidden" name="id2" value="<? echo $_GET["id"]?>">
<br /><br />
<input type="submit" value="Odeslat!">
<input type="reset" value="Vymaž">
</form>
<?
$jmeno2=htmlspecialchars ($_POST["jmeno2"]);
$zprava2=htmlspecialchars ($_POST["zprava2"]);
$id2=$_POST["id2"];
$pripojeni=mysql_connect("soscb.cz", "vyuka", "akuyv") or die(mysql_error());
mysql_select_db("vyuka") or die(mysql_error());
$vloz2="UPDATE `blab` SET jmeno2='$jmeno2', text2='$zprava2' WHERE id='$id2'";
$vlozhotovo2=mysql_query($vloz2);
mysql_close($pripojeni);
if ($jmeno2=="" or $zprava2==""){
echo "<h3 style=color:red> Je nutno zadat všechny údaje</h3>";
exit;
}
include("3chatvypis.php");
?>
</body>
</html>
30
Download

1 Základy programování v PHP