PHP prakticky/Výběr článku z databáze
Z Wikiknih
Abychom mohli vybírat z databáze, potřebujeme samozřejmě databázi a tabulku; tabulka bude obsahovat jen základní údaje, poté ji můžete rozšířit.
CREATE TABLE `clanky` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `nazev` VARCHAR( 255 ) NOT NULL , `popis` TEXT NOT NULL , `clanek` TEXT NOT NULL , ) ENGINE = MYISAM ;
[editovat] Připojení k DB
Vytvoříme si soubor, je jedno jak ho pojmenujete, já zvolím connect.php, budeme ho používat k připojení do databáze.
<?php $db_server = "localhost"; // server do kterého se budeme připojovat $db_jmeno = "user"; //jméno pro připojení $db_heslo = "password"; //heslo pro připojení $db_vyber = "test"; //databáze mysql_connect($db_server, $db_jmeno, $db_heslo) or die("Nepodařilo se připojit do databáze."); mysql_select_db($db_vyber) or die("Nepodařilo se vybrat databázi"); ?>
[editovat] Výběr a zpracování databáze
Ve zkratce tento skript funguje tak, že příkazem include připojíme ke zpracování i dříve vytvořený soubor connect.php. Následně se z globálního pole $_GET načte identifikace hledaného článku, pole $_GET obsahuje všechny informace předávané v adresním řádku prohlížeče. Tedy tento soubor pro výběr článku s identifikačním číslem 1 by měl podobu: http://nejaka.adresa.cz/vyber_clanku.php?adresa=číslo_článku. Dále se příkazem $id=(int)$adresa přetypuje a znovu uloží identifikační číslo článku do proměnné $id.
Na řádku 5 zjišťujeme pomocí funkce isset(), zda je nastavena proměnná $id (zde je příklad uvedený tak, že proměnná bude nastavena vždy), pokud bude, tak budeme pokračovat s vykonáváním souboru. Na řádku 6 uložíme do proměnné $dotaz SQL dotaz v podobě SELECT id, nazev, popis, clanek FROM clanky WHERE id=" . $id . " LIMIT 1. Tento dotaz nám z tabulky clanky vytáhne sloupce id, nazev, popis a clanek, vytáhne pouze jediný (LIMIT 1) a to ten, který je určený proměnnou $id.
Na dalším, sedmém, řádku zpracujeme pomocí funkce mysql_query() dotaz uložený v proměnné $dotaz a výsledek uloží do proměnné $sql, tuto potom na dalším řádku použijeme jako parametr funkce mysql_fetch_array(), která nám zpracovaný dotaz uloží do jmenného pole s proměnnou $ok. V tomto příkladu zcela chybně testujeme na desátém řádku zda je v poli $ok položka s klíčem nazev, pokud ano, tak na dalších řádcích vypíšeme text, pokud ne, tak napíšeme chybovou hlášku.
-
<?php -
include "connect.php";
-
$adresa = $_GET['clanek'];
-
$id=(int)$adresa; //Přetypování
-
if(isset($id)){ //zpracuje pokud je vybráno ID v URL adrese
-
$dotaz = "SELECT id, nazev, popis, clanek FROM clanky WHERE id=" . $id . " LIMIT 1"; -
$sql = mysql_query($dotaz); //vybereme z databáze, s podmínkou pokud se id z databáze rovná -
//id v URL a olimitujeme na jeden článek -
$ok = mysql_fetch_array($sql); //naplníme pole článkem -
if($ok['nazev']){ //pokud je pole naplňeno dostaneme výsledek kterž zpracujeme -
echo "Název: " . $ok['nazev'] . "<br>" . -
"Popis: " . $ok['popis'] . "<br>" . -
"Článek: " . $ok['clanek']; -
} -
else{ -
echo "Takový článek neexistuje!"; //pokud pole není naplněno vypíšeme text o neexistenci -
//článku -
} -
} -
else{
-
echo "Pokus o narušení bezpečnosti!";//pokud přijde někdo na tuto stránku bez ?clanek= pokouší
-
//se někdo zlobit -
} -
?>
Příklad je dostatečně okomentován, snad to dostatečně pochopíte.