Forum FAQForum FAQSearchSearch MemberlistMemberlist Forum ignore listForum ignore list RegisterRegister ProfileProfile Log in to check your private messagesLog in to check your private messages Log inLog in
Ima li tko ideju.... [tečajna lista]

 
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    mi3dot.org Forum Index -> Server-side
View previous topic :: View next topic  
Author Message
edgar



Joined: 28 Dec 2003
Posts: 916
Location: Pred monitorom

PostPosted: 31.08.2004 14:22    Post subject: Ima li tko ideju.... [tečajna lista] Add user to your forum ignore list Reply with quote

... ili gotovu skriptu za parsiranje tečajne liste HNB-a?

Hvala.

_________________
Digital Genetics | Koote | Nuspojava
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
retro_one



Joined: 16 Sep 2003
Posts: 880
Location: DUBRAVA.

PostPosted: 31.08.2004 14:33    Post subject: Add user to your forum ignore list Reply with quote

u kojem jeziku?

_________________
Just your average eccentric programmer.
Back to top
View user's profile Send private message
edgar



Joined: 28 Dec 2003
Posts: 916
Location: Pred monitorom

PostPosted: 31.08.2004 14:40    Post subject: Add user to your forum ignore list Reply with quote

php.

palo mi je na pamet da učitam nekako (stream?) stranicu u buffer i parsam je preko regular expressionsa... može li se to?

i ako da, jel to najbolji nacin?

_________________
Digital Genetics | Koote | Nuspojava
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
retro_one



Joined: 16 Sep 2003
Posts: 880
Location: DUBRAVA.

PostPosted: 31.08.2004 14:49    Post subject: Add user to your forum ignore list Reply with quote

hm evo ti moja funkcija...sprema ti file u cache na serveru...i vraca ti array sa tecajevima
e da, i prvo otvara html stranicu da bi iz nje iscupao filename trenutne tecajne liste.
Code:
function tecajna_lista()
{
   
   $file = "http://www.hnb.hr/tecajn/hvazeca.htm";
   $check = @fopen($file, "r");
   if(!$check)
   {
      $fp = fopen("cache/tecajna.dat", "r");
      $tecajna = fread($fp, filesize("cache/tecajna.dat"));
      fclose($fp);
   }
   else
   {
      $fp = fopen($file, "r");
      do {
         $data = fread($fp, 8192);
         if (strlen($data) == 0) {
            break;
         }
         $file .= $data;
      } while(true);
      fclose($fp);

      preg_match("/\.\/([[:alnum:]]+)\.dat/", $file, $file);
      //echo $file[0];
      $file = substr($file[0], 2);
      $file = "http://www.hnb.hr/tecajn/".$file;
      $fp = fopen($file, "r");
      do {
         $data = fread($fp, 8192);
         if (strlen($data) == 0) {
            break;
         }
         $tecajna .= $data;
      } while(true);
      fclose($fp);
      $fp = fopen("cache/tecajna.dat", "w+");
      fwrite($fp, $tecajna);
      fclose($fp);
   }         
   $tecajna = explode("\n", $tecajna);
   $tecaj['datum'] = substr($tecajna[0], 11, 8);
   $tecaj['datum'] = substr($tecaj['datum'], 0, 2).".".substr($tecaj['datum'], 2, 2).".".substr($tecaj['datum'], 4, 4).".";
   unset($tecajna[0]);
   foreach($tecajna AS $valuta)
   {
      $valuta = explode("      ", $valuta);
      $name = substr($valuta[0], 3, 3);
      $jedinica = substr($valuta[0], 6, 3);
      if(substr($jedinica, 0, 2) == "00")
      {
         $jedinica = substr($jedinica, 2);
      }
      $tecaj['valute'][$name]['kupovni'] = trim($valuta[1]);
      $tecaj['valute'][$name]['srednji'] = trim($valuta[2]);
      $tecaj['valute'][$name]['prodajni'] = trim($valuta[3]);
      $tecaj['valute'][$name]['jedinica'] = $jedinica;
   }
array_pop($tecaj['valute']);
return $tecaj;
}

_________________
Just your average eccentric programmer.
Back to top
View user's profile Send private message
edgar



Joined: 28 Dec 2003
Posts: 916
Location: Pred monitorom

PostPosted: 31.08.2004 15:05    Post subject: Add user to your forum ignore list Reply with quote

hvala lijepa.

_________________
Digital Genetics | Koote | Nuspojava
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
edgar



Joined: 28 Dec 2003
Posts: 916
Location: Pred monitorom

PostPosted: 31.08.2004 18:40    Post subject: ispravak za PHP 5 Add user to your forum ignore list Reply with quote

Kako ova skripta ne radi na PHP-u 5, evo izmijenjena verzija koja radi.
Nije baš savršeno vjerojatno; potrebno je cijelu skriptu drugačije prepisati, ali ovo sad radi, a kako je vremena malo...

Uglavnom: sad funkcija vraća niz objekata klase listaC s potrebnim informacijama.
Malo je improvizirano uglavnom...

Code:

//##################################
//
// Tecajna lista v1.0 (for PHP5)
// Original code by retro_one,
// modification by dg
//
//##################################
function tecajna_lista()
{

   $file = "http://www.hnb.hr/tecajn/hvazeca.htm";
   $check = @fopen($file, "r");
   if(!$check)
   {
      $fp = fopen("cache/tecajna.dat", "r");
      $tecajna = fread($fp, filesize("cache/tecajna.dat"));
      fclose($fp);
   }
   else
   {
      $fp = fopen($file, "r");
      do {
         $data = fread($fp, 8192);
         if (strlen($data) == 0) {
            break;
         }
         $file .= $data;
      } while(true);
      fclose($fp);

      preg_match("/\.\/([[:alnum:]]+)\.dat/", $file, $file);
      //echo $file[0];
      $file = substr($file[0], 2);
      $file = "http://www.hnb.hr/tecajn/".$file;
      $fp = fopen($file, "r");
      $tecajna="";
      do {
         $data = fread($fp, 8192);
         if (strlen($data) == 0) {
            break;
         }
         $tecajna .= $data;
      } while(true);
      fclose($fp);
      $fp = fopen("cache/tecajna.dat", "w+");
      fwrite($fp, $tecajna);
      fclose($fp);
   }
   $tecajna = explode("\n", $tecajna);
   $tecaj['datum'] = substr($tecajna[0], 11, 8);
   $tecaj['datum'] = substr($tecaj['datum'], 0, 2).".".substr($tecaj['datum'], 2, 2).".".substr($tecaj['datum'], 4, 4).".";
   unset($tecajna[0]);
   
   class listaC
   {
      var $c_jed;
      var $c_name;
      var $c_kup;
      var $c_sred;
      var $c_prod;
   }
   
   $vratiEnd = array();
   
   foreach($tecajna AS $valuta)
   {
      $valuta = explode("      ", $valuta);
      $name = substr($valuta[0], 3, 3);
      
      $jedinica = substr($valuta[0], 6, 3);
      
      if(substr($jedinica, 0, 2) == "00")
      {
         $jedinica = substr($jedinica, 2);
      }
      
      $strukt = new listaC();
      $strukt->c_jed =$jedinica;
      $strukt->c_name = $name;
      
      @$strukt->c_kup = trim($valuta[1]);
      @$strukt->c_sred = trim($valuta[2]);
      @$strukt->c_prod = trim($valuta[3]);
      
      array_push($vratiEnd,$strukt);
      unset($strukt);      
   }
   
   return $vratiEnd;
}
//##################################################


Primjer korištenja:

Code:
$rezultat = tecajna_lista();
   foreach ($rezultat as $valuta)
   {
      if($valuta->c_name!="") //zbog null vrijednosti na kraju (trenutno ne'am pojma zasto :) )
      {
         echo "<br />Valuta: ".$valuta->c_name." || ";
         echo "Jedinica: ".$valuta->c_jed." || ";
         echo "Kupovni: ".$valuta->c_kup." || ";
         echo "Srednji: ".$valuta->c_sred." || ";
         echo "Prodajni: ".$valuta->c_prod."<br />";
      }
   }

_________________
Digital Genetics | Koote | Nuspojava
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
maxy



Joined: 07 Sep 2003
Posts: 894
Location: Zagreb

PostPosted: 31.08.2004 21:25    Post subject: Add user to your forum ignore list Reply with quote

imam 2 pitanja samo:

- zasto prvotna funkcija ne radi na php 5?

- zasto pisati klasu koja ne sadrzi metode?
Back to top
View user's profile Send private message
edgar



Joined: 28 Dec 2003
Posts: 916
Location: Pred monitorom

PostPosted: 31.08.2004 22:04    Post subject: Add user to your forum ignore list Reply with quote

maxy wrote:
imam 2 pitanja samo:

- zasto prvotna funkcija ne radi na php 5?


nemam blagog pojma.. ali ne radi. na php4 radi na php 5 ne radi. Možda je cak i do IIS-a, ali nisam imao vremena provjeravat.
Sad mi je bilo bitno da funkcija radi.

Provjerim kasnije.

Quote:

- zasto pisati klasu koja ne sadrzi metode?


eh gle.. to mi je prvo palo na pamet.. zapravo to sam koristio kao tip podataka od kojeg radim array.. bilo mi je jednostavnije nego sve podatke trpat u array i onda pretrazivat sto je sto i gdje. Ovako imam array objekata koji imaju svoje membere, a svaka valuta je jedan objekt.

Nisam gledao, mozda php ima strukture, ali kako mi se klasa cinila ok trenutno za to, lijepo sam se rijesio problem.

Imas neku primjedbu? komentar? savjet?

_________________
Digital Genetics | Koote | Nuspojava
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
liban0n



Joined: 10 Feb 2004
Posts: 128
Location: Dubrovnik, Zagreb

PostPosted: 01.09.2004 07:55    Post subject: Add user to your forum ignore list Reply with quote

Evo na brzaka nesto moje sklepano :


Code:


$link = "http://www.hnb.hr/tecajn/f010904.dat";

$fp = fopen($link, "r");
    $data = '';
    while (true) {
        @$datas = fread($fp, 4096);
        if (strlen($datas) == 0) {
            break;
        }
        $data .= $datas;
    }
    @fclose($fp);
   
   
    $dijeljeno = explode("\n",$data);
   
 $zemlje = array(
 "AUD" => "Australija",
 "USD" => "SAD",
 "CAD" => "Canada",
 "CZK" => "Češka Republika",
 "DKK" => "Danska",
 "HUF" => "Mađarska",
 "JPY" => "Japan",
 "NOK" => "Norveška",
 "SKK" => "Slovačka Republika",
 "SIT" => "Slovenija",
 "SEK" => "Švedska",
 "CHF" => "Švicarska",
 "GBP" => "Velika Britanija",
 "EUR" => "EMU",
 "PLN" => "Poljska"
 );
    
    $count = count($dijeljeno);
    


while (list ($x, $y) = each ($zemlje)) {

   for ($i = 1; $i < $count; $i++) {
   
   if (eregi($x,$dijeljeno[$i])) {
   
       $jopet = explode("       ", $dijeljeno[$i]);
       $joopet = explode($x, $jopet[0]);
      

       $zemlja = $y;
       $jedinica = $joopet[1];
       $kupovni = $jopet[1];
       $srednji = $jopet[2];
       $prodajni = $jopet[3];
      
$izvjestaj = "Zemlja :".$zemlja." jedinica :".$jedinica." kupovni :".$kupovni." srednji :".$srednji."
 prodajni :".$prodajni;
 echo $izvjestaj."<br>";
         
         }
   }      
}


_________________
mount -t swap /dev/brain /mnt/head
look'n for a job
Back to top
View user's profile Send private message Visit poster's website
edgar



Joined: 28 Dec 2003
Posts: 916
Location: Pred monitorom

PostPosted: 01.09.2004 08:31    Post subject: Add user to your forum ignore list Reply with quote

maxy wrote:
imam 2 pitanja samo:

- zasto prvotna funkcija ne radi na php 5?


Vjerojatno mu smeta trodimenzionalni array kod returna.. tu sam dobivao greske pri izvodenju, i smetalo mu je ono dodavanje na nedefiniranu varijablu $varijabla.=....

Čini mi se da je nešto i kod foreach petlje kod PHP-a 5 drugačije, s obzirom da mi je originalna skripta na drugom računalu s četvorkom radila skroz ok; ovdje sam dobivao uvijek jedan prazni rezultat više nego što je elemenata u arrayu i redovito greške o nedefiniranim varijablama i nepostojećim indeksima.
Kasnije cu provjerit o čemu je točno riječ. Možda i u manualu ako su ga updejtali ima o tome...

_________________
Digital Genetics | Koote | Nuspojava
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
budha



Joined: 02 Mar 2004
Posts: 1377
Location: Osijek

PostPosted: 01.09.2004 08:47    Post subject: Add user to your forum ignore list Reply with quote

edgar wrote:

Možda je cak i do IIS-a, ali nisam imao vremena provjeravat...


hm Confused

_________________
I hate to advocate drugs, alcohol, violence, or insanity to anyone, but they've always worked for me.
Back to top
View user's profile Send private message Visit poster's website
edgar



Joined: 28 Dec 2003
Posts: 916
Location: Pred monitorom

PostPosted: 01.09.2004 09:04    Post subject: Add user to your forum ignore list Reply with quote

budha wrote:
edgar wrote:

Možda je cak i do IIS-a, ali nisam imao vremena provjeravat...


hm Confused


Ma da.. IIS zajebava na nekim mjestima. Nemam nigdje Apache pa nisam provjerio, al netko od vas tu bi mogao;) Iako vjerujem da radi sasvim uredno na Apache+PHP4 jer je autor rekao da radi...

_________________
Digital Genetics | Koote | Nuspojava
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
budha



Joined: 02 Mar 2004
Posts: 1377
Location: Osijek

PostPosted: 01.09.2004 09:08    Post subject: Add user to your forum ignore list Reply with quote

ma, probao sam jednom vrtit php&iis...
puno stvari je neobjasnjivo ne-radilo Smile)

_________________
I hate to advocate drugs, alcohol, violence, or insanity to anyone, but they've always worked for me.
Back to top
View user's profile Send private message Visit poster's website
maxy



Joined: 07 Sep 2003
Posts: 894
Location: Zagreb

PostPosted: 01.09.2004 12:11    Post subject: Add user to your forum ignore list Reply with quote

imam samo prijedlog - ako vec radis klasu onda je poanta klase da se sve funkcije i varijable strpaju na 1 mjesto. stoga bi bilo bolje da napravis klasu zajedno sa retroovom funkcijom i svojim varijablama pa da imas sve na 1 mjestu a ne na 2 kao do sad.

btw. php + iis = s0x Smile

www.apache.org, juz it :>
Back to top
View user's profile Send private message
retro_one



Joined: 16 Sep 2003
Posts: 880
Location: DUBRAVA.

PostPosted: 01.09.2004 12:21    Post subject: Add user to your forum ignore list Reply with quote

sto se kombinacije iis-a i phpa tice...sad sam se sjetio kak se rjesava vecina problema treba se samo iskljuciti error reporting...jer javljaju se fakat debilni errori...a sto se petice tice...jos mi je malcice prerano za koristenje...kad dodje do 5.3 onda mozda Very Happy

_________________
Just your average eccentric programmer.
Back to top
View user's profile Send private message
edgar



Joined: 28 Dec 2003
Posts: 916
Location: Pred monitorom

PostPosted: 01.09.2004 15:05    Post subject: Add user to your forum ignore list Reply with quote

maxy wrote:
imam samo prijedlog - ako vec radis klasu onda je poanta klase da se sve funkcije i varijable strpaju na 1 mjesto. stoga bi bilo bolje da napravis klasu zajedno sa retroovom funkcijom i svojim varijablama pa da imas sve na 1 mjestu a ne na 2 kao do sad.

Da, naravno. Pa to je na TODO listi, zapravo jos nije na redu s obzirom da imam prišnijih stvari za napravit... Kako već rekoh, bude to sve komapktno, robusno itd.. al sad je bilo bitno da radi.
Osim toga, opet će mi treba ova klasa kao struktura za objekt tipa valutaStanje ili tako nesto. Ne znam kakav je PHP kad se priča o OOP-u, ali vidjet ćemo... Petica je navodno bolja tu od četvorke...

Quote:

btw. php + iis = s0x Smile

Ma da.. al mi je bilo simple instalirat njega nego se zahebavat s Apacheom dodatno. IIS je vec bio tu na Ghostu Wink

_________________
Digital Genetics | Koote | Nuspojava
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
el8



Joined: 22 Sep 2003
Posts: 6

PostPosted: 02.09.2004 22:51    Post subject: Add user to your forum ignore list Reply with quote

Evo jos jedan jednostavn i efikasan nacin:
Code:

<?PHP
   # cacheiraj lokalno
   if (
      ( date("md") > date("md", @filectime('tecaj.tmp')) ) &&
      ( date("w") > 1 )
   ) {
      $filec = file_get_contents('http://www.hnb.hr/tecajn/f'.date("dmy").'.dat');
      # note: chmod +w na dir
      if ($handle = fopen('tecaj.tmp', 'w')) {
         fwrite($handle, $filec);
      }

   }
   
   $lines = file ('tecaj.tmp');
   
   foreach ($lines as $line_num => $line) {
   
      if (strlen($line) > 23) {
         $array[substr($line,3,3)] = array((substr($line,6,3)+0),str_replace(",",".",substr($line,9,14)),str_replace(",",".",substr($line,24,14)),str_replace(",",".",substr($line,39,14)));
      }

   }

echo 'Jedinica: '.$array['GBP'][0];
echo 'Kupovni'.round($array['GBP'][1],2);
echo 'Srednji'.round($array['GBP'][2],2);
echo 'Prodajni'.round($array['GBP'][3],2);

?>



ja ovo koristim zajedno sa JS pa mi je bio potreban ovakav array posto ga moram pretvorit u JS array
Back to top
View user's profile Send private message
Silverlight



Joined: 12 Oct 2008
Posts: 6
Location: Zadar, HR

PostPosted: 17.12.2008 21:06    Post subject: Add user to your forum ignore list Reply with quote

Žao mi je jer otvaram staru temu, ali imam dobar razlog...

Naime, ove scripte nerade (da da, nerade Crying or Very sad )
i pošto sam ja početnik u PHP-u, bili mi netko mogao poslati preko PM ili ovdje postati Scriptu HNB Tečajne liste, ako je moguće da bude step by step šta treba napraviti jer sam noob za PHP
Jezik: PHP5, jer neke mi scripte nerade na serveru ako je jezik PHP4

_________________
Developer is a machine that converts coffee into code.
Back to top
View user's profile Send private message Send e-mail MSN Messenger
Display posts from previous:   
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies.    mi3dot.org Forum Index -> Server-side All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group