Php v praxi – diel prvý: Ako si urýchliť ukladanie údajov

Rasťo Turek  /  14. 10. 2003, 00:00

Vítam Vás pri prvej časti seriálu, v ktorom Vám budem pomaly predstavovať aplikácie využiteľné v skutočných situáciách. Aby pochopili problematike, ktorú tu budeme rozoberať, potrebujete zvládnuť základy, o ktorých tu písal už Lukáš Ďurjan. Dnes v prvom diely sa budeme venovať napísaniu aplikácie, ktorá si načítava údaje z txt súboru a zapisuje si ich priamo do určenej databázy.

Prvým krokom je prihlásenie sa do databázy a následný výber databázy. Je to jednoduché, stačí použiť už dlho používaný kúsok kódu. Volajme ho napríklad config.php. Kompletný zdrojový kód aj s popisom si vypíšeme nižšie.

<?php
// config.php – spojenie s databázou
@$spojenie = MySQL_Connect("localhost","meno","heslo");
 // takto vyvoláme spojenie s MySQL (implicitne MySQL beží na localhost)
if(!$spojenie):
 // ak sa nám nepodarí spojiť s databázou, vypíšeme chybové hlásenie
 echo "Nedá sa spojiť s databázou!";
    exit;
else:
 MySQL_Select_DB("databáza");
 // vyberieme databázu, do ktorej budeme zapisovať/čítať
endif;
?>

Ak si tento kúsok kódu pozriete bližšie zistíte, že je skutočne úplne jednoduchý a ja ho mam vždy v roote serveru.

MySQL_Connect vyvolá spojenie so zadaným serverom podľa zadaného prístupu, teda potrebujete tieto tri parametre. Kde beží služba MySQL, implicitne to býva localhost, no napríklad vasadomena.sk alebo host.sk majú takéto: db.vasadomena.sk a db.host.sk používa sa aj ip servera. Zistíme, či bolo spojenie naviazané a vypíšeme chybu, ak sa nám nepodarilo spojiť s MySQL. Ak sme sa spojili, tak vyberieme databázu, do ktorej budeme zapisovať či čítať. Už poznáte všetky časti kódu a teraz o použití v iných stránkach.

Aby sme nemuseli všade vkladať celý tento kód, použijeme výborné funkcie a to include alebo require. Tieto dve funkcie načítavajú externé časti ako napríklad config.php do ďalšej stránky. Príklad tohto použitia využijeme už v samotnej aplikácii na ukladanie dát z txt do databázy. Volajme dokument napríklad read.php.

<?php
include ("config.php");  // načítame si externe predošlý script z config.php do tejto stránky
$subor = "subor.txt"; // vyberieme si textový dokument, z ktorého budeme čítať príkazy
$file = fopen("$subor","r")or die('nedá sa otvoriť súbor<br>\n'); // otvoríme súbor na čítanie, alebo vypíšeme chybu
while($riadok = fgets($file, 4096)){ // do cyklu si načítame každý riadok a takto prejdeme až na koniec súboru
$riadok = trim($riadok); // orežeme si medzery na začiatku a na konci riadku (MySQL by inak vypísalo chybu)
mysql_query($riadok)or die ('query zlyhala'); // a vykonáme príkaz do databázy, ak sa nepodarilo,
mysql_error();  // vypíšeme chybu
}
fclose($file); // uzavrieme súbor, aby sa s ním dalo ďalej pracovať a aby nezaťažoval zbytočne server
?>

Takže poďme si kód znovu postupne vysvetliť: Najprv si načítame config.php do stránky, to znamená, že prenesieme kompletné config.php do read.php pomocou už spomínaného include. Otvoríme si txt súbor s príkazmi. Tu pozor, lebo subor musí ležať v tom istom priečinku ako aj txt dokument a to isté platí aj o config.php. Inak musíme zadať inú adresu - napríklad priklady/configuracia/config.php alebo subory/nacitanie/subor.txt a dá sa aj vychádzať zo súborov o priečinok vyššie, napríklad ../configuracia/config.php. Na toto pozor, inak sa nám nepodarí urobiť žiadny zápis. Poďme si ukázať, ako bude vyzerať txt súbor, ktorý volajme subor.txt a ktorý bude obsahovať dané príkazy pre MySQL.

Obsah súboru subor.txt:
CREATE TABLE inet (id int(8) auto_increment, meno varchar(250) NOT NULL, heslo varchar(10) NOT NULL, PRIMARY KEY id(id))TYPE=MyISAM;
INSERT INTO inet VALUES (‘’,’lammer’,’inet’);
INSERT INTO inet VALUES (‘’,’vlado’,’kralik’);
INSERT INTO inet VALUES (‘’,’janko’,’statnik’);

A takto môžete pridať tisícky záznamov. Samozrejme pozor, ľahko môžete pri veľkom množstve preťažiť server.

Použitie
Tento kratučký a veľmi užitočný script môžete používať všade tam, kde Vám Vaša hostingová spoločnosť nedovolí používať dnes často používaný a kvalitný PhpMyAdmin napísaný v php práve pre prácu s databázou.

Vylepšenia
Samozrejme, že aj tento script sa dá vylepšiť, ale ja ho v takejto podobe používam asi tri roky a nikdy som to nepotreboval meniť. Ale asi by sa zišlo pri úspešnom zápise vypísať správu o úspechu a v config.php vypisovať chybu, ktorá nastala pomocou príkazu mysql_error();.

Upozornenia
Dávajte si pozor na prázdne riadky a každý príkaz musí byť na samostatnom riadku a končiť ;. Ak toto všetko dodržíte, tak si myslím, že môžete tento script využívať dlhé obdobie.

Ja mám dobrú skúsenosť so zdrojákmy, takže si ich tu môžete priamo stiahnuť kliknutím na tento odkaz. Zdrojáky sú zazipované.

Ďakujem za Vašu priazeň a teším sa na ďalšie stretnutie pri druhom dieli, ktorý bude o tom, ako si vytvoriť vlastný formulár na odoslanie emailu. Vaše postrehy a pripomienky mi prosím píšte do diskusie pod článkom, rád Vám odpoviem na Vaše otázky. Do ďaľšieho utorka!


Rastislav Turek, break.sk

Neprehliadnite: