Gå til innhold

Hjelp med oppsett av aksjeportefølje med PHP


Anbefalte innlegg

Vi har tideligere hatt en aksjeportefølje på nettsiden http://ha-invest.dk/ver2/?page_id=26 den klarer dessverre ikke å hente kurs data lenger da Yahoo har gjort endringer på sine nettsider. Jeg har kommet frem til et php script, som klarer å hente ut kurser, men får det ikke til å fungere sammen med vårt gamle system. Har ikke altfor mye kompetanse rundt dette, så trenger litt hjelp. En liten belønning fås hvis du klarer å sette det opp, send meg gjerne en melding. Det er mulig det bare er noen små greier som må portes over fra scripte som fungerer til det orginale...

 

Her er et script som fungerer:

 

&--#60;?php


function getQuote($symbol)
{
$symbol  = urlencode( trim( substr(strip_tags($symbol),0,7) ) );
$yahooCSV = "http://finance.yahoo.com/d/quotes.csv?s=$symbol&f=sl1d1t1c1ohgvpnbaejkr&o=t";

$csv = fopen($yahooCSV,"r");
if($csv)
{
 list($quote['symbol'], $quote['last'], $quote['date'], $quote['timestamp'], $quote['change'], $quote['open'],
$quote['high'], $quote['low'], $quote['volume'], $quote['previousClose'], $quote['name'], $quote['bid'],
$quote['ask'], $quote['eps'], $quote['YearLow'], $quote['YearHigh'], $quote['PE']) = fgetcsv($csv, ',');

 fclose($csv);

 return $quote;
}
else
{
 return false;
}
}
$gQuote = getQuote("DNB.OL"); //Returns an array of stock information
echo  "DNB ASA \t".$gQuote['last']."&--#60;br/&--#62;";
?&--#62;

 

 

 

 

 

 

Her er det gamle oppsette som fungerte før:

 

&--#60;p&--#62;Kursene er opptil 20 minutter forsinket &--#60;/p&--#62;
&--#60;?
include('connectDB.php');

// first, get the external data from yahoo! finance

$hente_query = mysql_query("select kode from portefolje_ny order by id");

$sporring = ('http://finance.yahoo.com/d/quotes.csv?f=sl1&e=.csv&s=');
while ($row  =  mysql_fetch_array($hente_query))
{
 $ticker=$row["kode"];
 $sporring .= ('+');
 $sporring .= $ticker . ".OL";
}
$lines = http_getFileAsArray($sporring);
echo count($lines);
$kurs_array = Array();
for ($i=0; $i&--#60;count($lines); $i++)
{
 $line = $lines[$i];
 $line = str_replace('"', '', $line);
 $line = str_replace('.OL', '', $line);

 list($symbol, $price) = split(',',$line);
 $kurs_array[strtoupper($symbol)] = $price;
}

//funksjon for å hente en fil ved hjelp av http
function http_getFileAsArray($url)
{
 $server ="finance.yahoo.com";
 $file = strstr($url,"/d");
 $port = 80;
 $fp = fsockopen($server, $port);

 if ($fp)
 {
  fputs($fp,"GET http://$server$file HTTP/1.0\nHost: $server\n\n");
  $lines = array();
  while ($line = fgets($fp, 4096))
$lines[] = $line;

  fclose($fp);
 }

 if ($html == "" || !$fp)
 {  // try fopen()
  $fp = fopen($url, "r");
  if ($fp)
  {
$lines = array();
while ($line = fgets($fp, 4096))
 $lines[] = $line;

fclose($fp);
  }
 }

 return $lines;
}
?&--#62;
&--#60;table cellspacing="0" style="font-size:9px;font-family:arial;text-align:center;line-height:10px;width:600px;"&--#62;
 &--#60;tr&--#62;
  &--#60;td&--#62;&--#60;strong&--#62;Selskap&--#60;/strong&--#62;&--#60;/td&--#62;
  &--#60;td&--#62;&--#60;strong&--#62;Kjøpsdato&--#60;/strong&--#62;&--#60;/td&--#62;
  &--#60;td&--#62;&--#60;strong&--#62;Volum&--#60;/strong&--#62;&--#60;/td&--#62;
  &--#60;td&--#62;&--#60;strong&--#62;Kjøpskurs&--#60;/strong&--#62;&--#60;/td&--#62;
  &--#60;td&--#62;&--#60;strong&--#62;Kurs sist torsdag&--#60;/strong&--#62;&--#60;/td&--#62;
  &--#60;td&--#62;&--#60;strong&--#62;Kurs&--#60;/strong&--#62;&--#60;/td&--#62;
  &--#60;td&--#62;&--#60;strong&--#62;Endring fra sist&--#60;/strong&--#62;&--#60;/td&--#62;
  &--#60;td&--#62;&--#60;strong&--#62;Avkastning i kroner&--#60;/strong&--#62;&--#60;/td&--#62;
  &--#60;td&--#62;&--#60;strong&--#62;Avkastning i prosent&--#60;/strong&--#62;&--#60;/td&--#62;
  &--#60;td&--#62;&--#60;strong&--#62;Verdi&--#60;/strong&--#62;&--#60;/td&--#62;
 &--#60;/tr&--#62;
  &--#60;?php  
$query = mysql_query("SELECT * FROM portefolje_ny ORDER BY Navn ASC");

while ($array = mysql_fetch_array($query)){
 $navn = $array['Navn'];
 $kode = $array['Kode'];
 $volum = $array['Volum'];
 $kjopskurs = $array['Kjopskurs'];		
				$kjopsdato = $array['Kjopsdato'];
 $torsdag = $array['Torsdag'];
 $kurs = $kurs_array[strtoupper($kode)];
  ?&--#62;
 &--#60;tr&--#62;
  &--#60;td&--#62;&--#60;?php echo $navn; ?&--#62;&--#60;/td&--#62;
  &--#60;td&--#62;&--#60;?php echo $kjopsdato; ?&--#62;&--#60;/td&--#62;
  &--#60;td&--#62;&--#60;?php echo $volum; ?&--#62;&--#60;/td&--#62;
  &--#60;td&--#62;&--#60;?php echo $kjopskurs; ?&--#62;&--#60;/td&--#62;
  &--#60;td&--#62;&--#60;?php echo $torsdag; ?&--#62;&--#60;/td&--#62;
  &--#60;td&--#62;&--#60;?php echo $kurs; ?&--#62;&--#60;/td&--#62;
  &--#60;td&--#62;&--#60;?php
 if( $kurs != 0)
 {  
  $endringFraSist = round(((($kurs - $torsdag)/$kurs) * 100),2);
  if($torsdag != 0)
  {
   echo $endringFraSist . "%";
  }
  else
  {
   echo "0%";
  }
 }
 else{
  echo "0%";
 }
?&--#62;
  &--#60;/td&--#62;
  &--#60;td&--#62;
&--#60;?php
 $avkastnIKroner = round(($volum*$kurs)-($volum*$kjopskurs),2);
 echo $avkastnIKroner;
?&--#62;
  &--#60;/td&--#62;
  &--#60;td&--#62;
&--#60;?php
 $avkastningIProsent = round((($kurs - $kjopskurs) * 100)/$kjopskurs,2);
 if ($kjopskurs != 0){
  echo $avkastningIProsent . "%";
 }
 else{
  echo "0";
 }
?&--#62;
 &--#60;/td&--#62;
 &--#60;td&--#62;&--#60;?php echo $verdi= (round($volum * $kurs, 2)); ?&--#62;&--#60;/td&--#62;
 &--#60;/tr&--#62;

 &--#60;?php
		$samletVerdi+=$verdi;
  }
 ?&--#62;
&--#60;/table&--#62;
&--#60;br /&--#62;
&--#60;p&--#62;Porteføljen har en samlet verdi på &--#60;?php echo round($samletVerdi,2) ?&--#62; kroner.&--#60;/p&--#62;
&--#60;?php if (current_user_can("manage_options")) : ?&--#62;
   &--#60;a href="http://ha-invest.dk/ver2/wp-content/*************/settInn.php" target="_blank"&--#62;Endre/Legg til&--#60;/a&--#62;
&--#60;a href="http://ha-invest.dk/ver2/wp-content/*************/torsdag.php" target="_blank"&--#62;Sett "Kurs sist torsdag"&--#60;/a&--#62;
&--#60;?php endif; ?&--#62;

 

 

 

settinn.php:

 

&--#60;?php
include ('connectDB.php');

if (isset($_POST["SendInn"]))
{
 $navn = $_POST["navn"];
 $kode = $_POST["kode"];
 $volum = $_POST["volum"];
 $kjopskurs = $_POST["kjopskurs"];
 $kjopsdato = $_POST["kjopsdato"];

 $settInnSporring = mysql_query("INSERT INTO portefolje_ny (Navn, Kode, Volum, Kjopskurs, Kjopsdato) VALUES ('$navn', '$kode', '$volum', '$kjopskurs', '$kjopsdato')");

 if (!$settInnSporring)
 {
  echo "Det har skjedd en feil.";
 }

 else{
  echo "Selskap er lagt til i porteføljen.";
 }

}

if (isset($_GET["name"])){
 $navnSlett = $_GET["name"];
 mysql_query("DELETE FROM portefolje_ny WHERE Navn='$navnSlett'");

}
?&--#62;
&--#60;form method="POST" action="settInn.php"&--#62;
 &--#60;table&--#62;
  &--#60;tr&--#62;
&--#60;td&--#62;Navn&--#60;/td&--#62;
&--#60;td&--#62;&--#60;input type="text" name="navn"&--#62;&--#60;/td&--#62;
  &--#60;/tr&--#62;
  &--#60;tr&--#62;
&--#60;td&--#62;Kode&--#60;/td&--#62;
&--#60;td&--#62;&--#60;input type="text" name="kode"&--#62;&--#60;/td&--#62;
  &--#60;/tr&--#62;
  &--#60;tr&--#62;
&--#60;td&--#62;Volum&--#60;/td&--#62;
&--#60;td&--#62;&--#60;input type="text" name="volum"&--#62;&--#60;/td&--#62;
  &--#60;/tr&--#62;
  &--#60;tr&--#62;
&--#60;td&--#62;Kjøpskurs&--#60;/td&--#62;
&--#60;td&--#62;&--#60;input type="text" name="kjopskurs"&--#62;&--#60;/td&--#62;
  &--#60;/tr&--#62;
  &--#60;tr&--#62;
&--#60;td&--#62;Kjøpsdato(dd.mm.åå)&--#60;/td&--#62;
&--#60;td&--#62;&--#60;input type="text" name="kjopsdato"&--#62;&--#60;/td&--#62;
  &--#60;/tr&--#62;
  &--#60;tr&--#62;
&--#60;th colspan="2"&--#62;&--#60;input type="submit" name="SendInn" value="Legg til"&--#62;&--#60;/td&--#62;
  &--#60;/tr&--#62;
 &--#60;/table&--#62;
&--#60;/form&--#62;
&--#60;table border=2&--#62;
&--#60;?php
$sporring = mysql_query("SELECT * FROM portefolje_ny ORDER BY Navn ASC");

while($array = mysql_fetch_array($sporring)){
 $navn = $array['Navn'];
 $kode = $array['Kode'];
?&--#62;

&--#60;tr&--#62;&--#60;td&--#62;&--#60;?php echo $navn;?&--#62;&--#60;/td&--#62;&--#60;td&--#62;&--#60;a href="settInn.php?name=&--#60;?php echo $navn; ?&--#62;" &--#62;Slett&--#60;/a&--#62;&--#60;/tr&--#62;

&--#60;?php
}
?&--#62;
&--#60;/table&--#62;

 

 

torsdag.php:

 

&--#60;?php
include('connectDB.php');

$hente_query = mysql_query("select kode from portefolje_ny order by id");

$sporring = ('http://finance.yahoo.com/d/quotes.csv?f=sl1&e=.csv&s=');
while ($row  =  mysql_fetch_array($hente_query))
{
 $ticker=$row["kode"];
 $sporring .= ('+');
 $sporring .= $ticker . ".OL";
}

$lines = http_getFileAsArray($sporring);
$kurs_array = Array();
for ($i=0; $i&--#60;count($lines); $i++)
{
 $line = $lines[$i];
 $line = str_replace('"', '', $line);
 $line = str_replace('.OL', '', $line);

 list($symbol, $price) = split(',',$line);

 $kurs_array[strtoupper($symbol)] = $price;
}

//funksjon for å hente en fil ved hjelp av http
function http_getFileAsArray($url)
{
 $server ="finance.yahoo.com";
 $file = strstr($url,"/d");
 $port = 80;
 $fp = fsockopen($server, $port);

 if ($fp)
 {
  fputs($fp,"GET http://$server$file HTTP/1.0\nHost: $server\n\n");
  $lines = array();
  while ($line = fgets($fp, 4096))
$lines[] = $line;

  fclose($fp);
 }

 if ($html == "" || !$fp)
 {  // try fopen()
  $fp = fopen($url, "r");
  if ($fp)
  {
$lines = array();
while ($line = fgets($fp, 4096))
 $lines[] = $line;

fclose($fp);
  }
 }

 return $lines;
}
$torsdagquery = mysql_query("SELECT * FROM portefolje_ny");

while($torsdagarray = mysql_fetch_array($torsdagquery)){

 $kode = $torsdagarray['Kode'];
 echo $kode;
 $kurs = $kurs_array[strtoupper($kode)];
 echo $kurs;
 $settInn = mysql_query("UPDATE portefolje_ny SET torsdag='" . $kurs . "' WHERE Kode='" . $kode . "'");

}
?&--#62;

 

 

Si gjerne ifra hvis dere trenger noe mer informasjon.

Endret av 3ndy
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...