Editor knih (vypnout)

PHP prakticky/Výběr článku z databáze

Z Wikiknih

Přejít na: navigace, hledání

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.

  1. <?php
    
  2. include "connect.php";
    
  3. $adresa = $_GET['clanek'];
    
  4. $id=(int)$adresa; //Přetypování
    
  5. if(isset($id)){ //zpracuje pokud je vybráno ID v URL adrese
    
  6.     $dotaz = "SELECT id, nazev, popis, clanek FROM clanky WHERE id=" . $id . " LIMIT 1";
    
  7.     $sql = mysql_query($dotaz); //vybereme z databáze, s podmínkou pokud se id z databáze rovná 
    
  8.                                 //id v URL a olimitujeme na jeden článek
    
  9.     $ok = mysql_fetch_array($sql); //naplníme pole článkem
    
  10.     if($ok['nazev']){ //pokud je pole naplňeno dostaneme výsledek kterž zpracujeme
    
  11.       echo "Název: " . $ok['nazev'] . "<br>" .
    
  12.            "Popis: " . $ok['popis'] . "<br>" .
    
  13.            "Článek: " . $ok['clanek'];
    
  14.     }
    
  15.     else{
    
  16.     echo "Takový článek neexistuje!"; //pokud pole není naplněno vypíšeme text o neexistenci
    
  17.                                       //článku
    
  18.     }
    
  19.   }
    
  20.   else{
    
  21.   echo "Pokus o narušení bezpečnosti!";//pokud přijde někdo na tuto stránku bez ?clanek= pokouší
    
  22.                                        //se někdo zlobit
    
  23.   }
    
  24. ?>
    

Příklad je dostatečně okomentován, snad to dostatečně pochopíte.