Dnes si povíme, jak natáhnout data z obyčejného textového souboru a vytažená data z TXT souboru upravit v HTML souboru.
Dnes si povíme, jak natáhnout data z obyčejného textového souboru a vytažená data z TXT souboru upravit v HTML souboru.
Formát textového souboru
První, co musíme udělat, je naplánovat si tvar textového souboru (v našem případě to bude soubor info.txt, který si uložíme mimo adresář typu
DOCUMENT_ROOT), odkud budeme data tahat. Skriptem načteme každý řádek ze souboru zvlášť, ale na jednom řádku budeme mít X údajů jako
je titulek, popis, URL odkaz, a jiné věci. Abychom mohli toto rozlišit, potřebujeme si určit nějaký oddělovač
(--), kterým řekneme, kde jaká sekce začíní
(titulek, popis, URL odkaz, …), a kde končí.
Do proměnné $InfoSoubor načteme řádek po řádku a pomocí oddělovače "--" tak získáme jednotlivé sekce (sloupce), v našem případě to jsou rok, měsíc, den, url odkaz, titulek a popis. Pokud tedy napíšeme @Info, pak z řádku získáme hodnotu roku, atd. (viz tabulka)
@Info = split (/--/, $InfoSoubor);
vzor řádku TXT souboru:
ROK--MESIC--DEN--URL_ODKAZ--TITULEK--POPIS
příklad řádku TXT souboru:
1999--01--20--http://www.urlodkaz1.cz--titulek1--popis k titulku 1
HTML kód
Nyní si musíme říct, jak výstup z CGI skriptu chceme formátovat. Řekněme si, že chceme, aby výstup ze skriptu vypadal například takto:
<FONT FACE=Arial SIZE=+1><B> <A HREF="URL_ODKAZ">TITULEK</A> </B></FONT><BR>
<FONT FACE=Arial SIZE=-1><I>POPIS</I></FONT><BR>
<FONT FACE=Arial SIZE=-2> [ Datum zverejneni: DEN.MESIC.ROK ] </FONT><P>
CGI skript s popisem
CGI skript uložte do C:/Program Files/Apache Group/Apache/cgi-bin/cgi6.cgi ($HOME/apache/share/cgi-bin/cgi6.cgi) , z pohledu serveru je to adresář http://localhost/cgi-bin/cgi6.cgi
#!/perl/bin/perl.exe
# zde vložte část kodu CGI skriptu cgi5.cgi
# označené jako POPIS1 az POPIS3 z prechazejiciho
# clanku, Apache a CGI skripty V - metoda GET
print "Content-type: text/html\n\n";
print "<HTML><HEAD>";
print "<TITLE>CGI 6: clanek $promena{'dalsi'} az $promena{'další'} + 10</TITLE>";
print "</HEAD><BODY BGCOLOR=#FFFFFF>";
# otevreni TXT souboru
open (INFO_SOUBOR, "../dbase/info.txt");
# nastavení proměné pro aktualní hodnotu +10
$dalsich10 = $promena{'dalsi'} +10;
# od jakého řádku se mají odkazy (clanky) zobrazovat
$cislo_radek10 = $promena{'dalsi'};
$cislo_radek = 0;
# Načtení souboru od začátku do konce po řádcích
while ($InfoSoubor = <INFO_SOUBOR>) {
# Zobrazí se pouze ty řádku, které vyhovují podmínce
if (($cislo_radek < $dalsich10) && ($cislo_radek >= $promena{'dalsi'})) {
# rozdělení řádku po sloupcích podle oddělovače --
@Info = split (/--/, $InfoSoubor);
print "<FONT FACE=Arial SIZE=+1><B> ";
print " <A HREF=\"$Info[3]\">$Info[4]</A> </B></FONT><BR>";
print "<FONT FACE=Arial SIZE=-1><I> $Info[5] </I></FONT><BR>";
print "<FONT FACE=Arial SIZE=-2> [ Datum zverejneni: ";
print " $Info[2].$Info[1].$Info[0] ";
print " ] </FONT><P>\n";
# konec podmínky if
}
# připočítání jedničky k proměným, které zajištují
# zobrazení data do HTML stránky
++$cislo_radek;
++$cislo_radek10;
# konec cyklu while
}
# uzavření souboru s identifikátorem INFO_SOUBOR
close (INFO_SOUBOR);
# odkaz pro dalších 10 článků (odkazů)
print "<A HREF=/cgi-bin/info.cgi?dalsi=$dalsich10>dalsi 10 clanku</A>";
# konec CGI skriptu
exit;
Příště si ukážeme, jak vytvořit jednoduchý reklamní banner a zápis údajů o uživateli, který na reklamní banner kliknul. Pokud máte jakékoliv dotazy či připomínky, zasílejte jej na adresu
erik@email.cz