Po menší odmlce je tu opět náhled na využití MySQL v praxi. Tentokrát se zaměříme na srovnání zpracování dat v Perlu a PHP a sami uvidíte, která možnost je jednodušší a která lepší. Jako návdavek si nastíníme využití JavaScriptu při tvorbě vstupního HTML formuláře a ošetřování jeho výstupu; ukážeme si také relativně neobvyklé užití kompletního CSS stylu a pozadí u prvků formuláře.
Úvodní vstup dat
Nejprve si pro předeslané názorné ukázky vytvoříme vstupní formulář. Náš příklad zaměříme na registraci uživatelů diskuse do databáze, kdy uživatel vyplní a odešle osobní data a ta se zapíší do databáze pro další používání. Tento
HTML dokument se bude pro PHP a Perl lišit pouze v odkazu na skript, ale na to ještě upozorním v připojeném komentáři u zdrojového kódu.
Takto vypadá náš formulář.
Samotné porovnání PHP a Perlu
Vzhledem k tomu, že vysvětlení všech základních principů jazyka Perl by bylo v rámci našeho seriálu již neúnosné a nelze pojmout tak jednoduše jako třeba v případě PHP, příkladu zpracování dat Perlem se budeme věnovat pouze velmi sporadicky několika základními popisky a procesy si vysvětlíme přesněji až u následujícího skriptu PHP – tím se totiž budeme ještě několikrát zabývat.
Zaregistrovat.pl
#!/usr/bin/perl
use DBI; // nejprve definujeme cestu k interpretu a použijeme modul DBI //
########################################################
# Připojení k databázi MySQL
########################################################
$database = "Diskuse";
$driver ="mysql";
$dsn = "DBI:$driver:database=$database;$options";
$dbh = DBI->connect($dsn,"Diskuse","root","heslo") or die "Chyba při připojení k databázi."; // sestavíme propojovací řetězec //
%vstupPOST = cistVstupPost(); // zavoláme funkci cistVstupPost() a analyzujeme jí dvojici název=hodnota pomocí tzv. hešovací funkce (vytvoří hešovací tabulku, kde se uchovají hodnoty ve tvaru název=hodnota)//
$Jmeno = $vstupPOST{`Jmeno`}; // pro zpřehlednění si převedeme proměnné vrácené funkcí cistVstupPost() do proměnných //
$Email = $vstupPOST{`Email`};
$Login = $vstupPOST{`Login`};
$Heslo = $vstupPOST{`Heslo`};
$dbh->do("INSERT INTO Uzivatele VALUES(NULL, `$Jmeno`, `$Email`, `$Login`, `$Heslo`)"); // přidání proměnných do databáze //
$dbh->disconect; // odpojení od databáze a uvolnění systémových prostředků //
########################################################
# Podprogram k získání informací a jejich uložení do asociativního pole
#########################################################
sub cistVstupPost{ // funkce pro rozdělení vstupu na server na asociativní pole //
my (%hledanePole, $buffer, $dvojice, @pary);
if ($ENV{`REQUEST_METHOD`} eq `POST`){
read(STDIN, $buffer, $ENV{`CONTENT_LENGTH`});
@pary = split(/&/, $buffer);
foreach $dvojice(@pary){
($nazev, $hodnota) = split(/=/, $dvojice);
$hodnota =~ tr/+/ /;
$hodnota =~ s/%([a-fA-f0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$nazev =~ tr/+/ /;
$nazev =~ s/%([a-fA-f0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$hledanePole{$nazev} = $hodnota;
}
}
return (%hledanePole);
}
print "Content-Type: text/html\n\n"; // vytvoření výstupní HTML stránky //
print "<html><head><title>Registrace byla úspěšná!!</title></head>";
print "<body>Děkujeme Vám za registraci. Proběhla v pořádku.</body>";
print "</html>";
Zaregistrovat.php
<? // začátek kódu PHP //
@$spojeni = MySQL_Connect("localhost",“root“,“heslo“); // připojení k serveru MySQL //
if(!$spojeni): // pokud se nepovede spojení //
echo "Chyba v připojení k MySQL."; // vypíše se chyba //
endif;
@$spojeni2 = MySQL_Select_DB("Diskuse"); // zvolení databáze //
if(!$spojeni2): // pokud se nepovede zvolit //
echo "Chyba v připojení k databázi."; // vypíše se chyba //
endif;
$query=MySQL_Query("INSERT INTO Uzivatele VALUES(NULL, `$Jmeno`, `$Email`, `$Login`, `$Heslo`)"); // SQL příkaz, proměnné není nutné získávat přes asociativní pole, v PHP je vytvořen model proměnná=hodnota automaticky //
?> // konec PHP, začátek HTML //
<html>
<head>
<title>Registrace byla úspěšná!!</title>
</head>
<body>
Děkujeme Vám za registraci. Proběhla v pořádku.
</body>
</html>
Kdo je lepší?
Pokud vám na základě tohoto krátkého příkladu srovnání PHP a Perlu bude jeden z jazyků připadat jednodušší, máte pravdu. A právě v této jednoduchosti je síla PHP, protože se s ním díky relativně jednoduchému formulováním všech funkcí v závislosti na těch již hotových pracuje vcelku snadno a základy PHP a MySQL nejsou výjimkou; o tom nás přesvědčí i další díl série článků o praktickém používání MySQL. Tentokrát začneme pracovat na aplikaci praktického využití, totiž našem vlastním diskusním fóru!