Mysql 5 – Perl vs. PHP

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.

Klepněte pro větší obrázek

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>

Klepněte pro větší obrázek

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!
Diskuze (29) Další článek: Microsoft obviněn z krádeže technologie

Témata článku: Software, Programování, PHP, Print, Perl, Head, DSN, Split, Root, Login, MySQL, Mys


Určitě si přečtěte

Vodafonu se zhroutila kabelovka. Síť bývalého UPC má výpadky
Lukáš Václavík
VodafoneUPC
Superinteligenci nedokážeme ovládat a nejspíše se nedozvíme, že už tam někde je

Superinteligenci nedokážeme ovládat a nejspíše se nedozvíme, že už tam někde je

** Firmy i organizace včetně EU připravují etické kodexy pro A.I. ** Vědci z Madridu zkoumali, jestli je budeme moci aplikovat na A.I. 2.0 ** A je tu háček, superinteligence pro nás totiž bude neuchopitelná

Jakub Čížek | 84

Jakub Čížek
Umělá inteligence
Konec modrých obrazovek smrti? Microsoft vydává mimořádnou aktualizaci pro Windows 10
Karel Kilián
Windows UpdateAktualizaceWindows 10
Google není jen vyhledávač: 15 užitečných funkcí, o kterých možná ani nevíte

Google není jen vyhledávač: 15 užitečných funkcí, o kterých možná ani nevíte

** Google umí kromě vyhledávání i spoustu dalších věcí ** Vybrali jsme více než 15 užitečných funkcí a schopností ** Stačí zadat do vyhledávače ta správná klíčová slova

Karel Kilián | 22

Karel Kilián
TipyVyhledávačeGoogle
26 užitečných rozšíření pro Chrome: Naučte prohlížeč nové věci

26 užitečných rozšíření pro Chrome: Naučte prohlížeč nové věci

** Prohlížeč Chrome obsahuje širokou škálu funkcí, neumí ale všechno ** Jeho schopnosti můžete rozšířit pomocí rozšíření ** Vybrali jsme pro vás zajímavé a užitečné doplňky

Karel Kilián | 47

Karel Kilián
Doplňky do prohlížečeChromeProhlížeče