Tag arkiver php

Sådan gemmer du Valutakurserne i en Database

31 jul

4

Til tider kan det være nødvendigt at have de nyeste valutakurser ved hånden når man laver online projekter. Heldigvis tilbyder nationalbanken en dagligt opdateret xml fil med de mest anvendte valutakurser. Jeg vil i dette indlæg vise dig hvordan man kan hente disse kurser ind i en mysql database, hvorfra kurserne kan hentes ud andre steder i din applikation hvor der er behov for dem.

Jeg anvender scriptet ved automatisk at kalde filen en gang i døgnet ved hjælp af et cron job på serveren. Dette betyder at jeg altid kan spole tilbage i tiden og tjekker hvad kursen var til en bestemt dag.

Jeg anvender en egen udviklet class til at snakke sammen med databasen. Denne får du selvfølgelig også med i pakken når du nu downloader og bruger min script :-)
For at anvende scriptet kræves det kun at du laver en database med en tabel ved navn valutakurser. Denne tabel skal indeholde 5 kolonner, som ser således ud:

  1. id (int) primær nøgle og auto increment.
  2. short (varchar 512)
  3. description (text)
  4. rate (float)
  5. time_date (timestamp)

Når denne tabel er oprettet og du har dine oplysningerne til databasen klar, er det nu til at sætte scriptet op.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<!--?php </p-->

// Inkluderer database klassen som bruges til at snakke med database
include('class.mysql.php');

// Forbinder til databasen. Du skal her rette i oplysningerne så
// de passer til dine database informationer
$mysql = new db( 'DATABASE SERVER', 'DATABASE BRUGER', 'DATABASE PASSWORD', 'DATABASE NAVN');

// Addresse til den xml fil som nationalbanken stiller til rådighed
$kurs_url = "http://www.nationalbanken.dk/dndk/valuta.nsf/valuta.xml";

$xml = simplexml_load_file($kurs_url);

foreach($xml-&gt;dailyrates as $dailyrates){

foreach($dailyrates-&gt;currency as $cur) {
$code = utf8_encode( $cur['code'] );
$description = utf8_encode($cur['desc'] );
$rate = utf8_encode(str_replace(',', '.', $cur['rate']));

$input = array(
'short' =&gt; $code,
'description' =&gt; $description,
'rate' =&gt; $rate
);

// Ret her navnet 'valutakurser' hvis din tabel har et andet navn
$mysql-&gt;input('valutakurser', $input);
}
}

endif;

Selvom filen som lagre kurserne kan ses ovenfor, anbefaler jeg at du downloader scriptet via. linket øverst i indlægget, da du hermed også vil få database klassen som bruges til at snakke sammen med din database og dermed lagre kurserne i din tabel.

Share

Hent Trustpilot ratings med php

30 jul

1

Jeg arbejder i øjeblikket på et nyt affiliat website ved navn billighosting.info hvor jeg har brug for automatisk at hente trustpilot scoren for forskellige udbydere af hosting løsninger og derefter vise det på hjemmesiden.

Derfor har jeg lavet et lille script som automatisk henter scoren fra trustpilot.dk og derefter gemme data i en database. Jeg har forsimplet scriptet en smule og du kan nu se der herunder. Brug det på eget ansvar. Bemærk dog at da scriptet bruger scraping teknologien virker det kun hvis trustpilot ikke foretager ændringer på deres website.

Desuden anvendes php værktøje “Simple Html Dom Parser” som gør det nemt og hurtigt at hente DOM elementer fra en html string. Du kan læse mere om og downloade det her.

Scriptet kan evt. køres som et cron og derefter gemme data i en database, hvorefter data kan trækkes ud hvor det skal bruges. Jeg anbefaler man cache eller gemmer data på en eller anden måde. Skriv dog endlig i kommentar feltet hvis du har problemer.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php

require( 'STI TIL SIMPLE HTML DOM PARSER FIL' );

$urls = array(
'TRUSTPILOT VIRKSOMHEDS URL 1',
'TRUSTPILOT VIRKSOMHEDS URL 2',
);

foreach( $urls as $url )
{
$html = file_get_html( $url );

foreach( $html->find( '.average' ) as $element)
{
$clean = strip_tags( $element );
$clean = trim( $clean );

echo $clean . "<br>";
}
}

Det script jeg selv har anvendt er en smule mere advanceret i og med jeg gemmer og modtager data fra en database. Dog er princippet fuldstændig det samme og jeg har valgt at bibeholde scriptet således at du nemt kan tilpasse det til dine behov.

Der hvor du ser linjen

1
echo $clean . "<br>";

kan du gøre hvad du vil med trustpilot scoren som har variablen $clea

Share

Gratis Grooveshark API class

27 aug

0

Hej Alle, det er længe siden der har været noget aktivitet på siden, men nu er det tid til et lille indlæg igen. Jeg har for et par dage siden lavet en php klasse som gør at man nemt og hurtigt kan lave en applikation som samarbejder med Grooveshark.

Du kan downloade klassen her.

For at få url adressen på det første søgeresultat anvender du følgende metode:
getUrl(‘DIN SØGNING’);

For at modtage meta resultater for det første søgeresultat anvender du følgende metode:
getResult(‘DIN SØGNING’);
For at modtage meta informationer for helt op til 32 af søgeresultaterne anvender du denne metode, resultatet vil blive lageret som et php array.
getResults(‘DIN SØGNING’, ANTAL RESULTATER);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<!--?php /* * Client class to communicate with the Grooveshark/Tiny song. *  * Author: Gustav Svendsen * Website: www.gustavs.dk * Production time: 2011 * Requirements: TinySong Apikey, PHP and CURL extension   */ class grooveshark {          /*     * The methods are defined below     */     public $Apikey;     private $_Apiurl = 'http://tinysong.com/';     protected $_ApiFormat;               /*     * The constructor sets the ApiKey and the response format     */     public function __construct($Apikey, $ApiFormat = 'json') {                  //Defines the API key.         $this--->Apikey = $Apikey;

//Sets the format of the response
$this-&gt;_ApiFormat = $ApiFormat;

}

/*
* This functions returns only the link of the first search result
*/

public function getUrl($search = '') {

//Checks if the input has been set
if($search == '') { return false; }

//Constructing the URl of the GET request
$url = $this-&gt;_Apiurl . "a/" . urlencode($search) . "?format=" . $this-&gt;_ApiFormat . "&amp;key=" . $this-&gt;Apikey;

//Making the request
$result = $this-&gt;curl($url);

//Checks for valid result
if($result == '[]') { return false; }

//Returns the result of the request
return $result;

}

/*
* This functions return the number one search result with all the meta data
*/

public function getResult($search = '') {

//Checks if the input has been set
if($search == '') { return false; }

//Constructing the url for the call
$url = $this-&gt;_Apiurl . "b/" . urlencode($search) . "?format=" . $this-&gt;_ApiFormat . "&amp;key=" . $this-&gt;Apikey;

//Making the request
$result = $this-&gt;curl($url);

//Check if valid respond
if($result == '[]') { return false; }

//Converts the json object into a normal php array
$output = json_decode($result, true);

//Returns the result
return $output;

}

/*
* This function returns a number of search result, with the oppertunity to limit the output
*/

public function getResults($search = '', $limit = 32) {

//Checks the input
if($search == '') { return false; }

//Constructing the url for the request
$url = $this-&gt;_Apiurl . "s/" . urlencode($search) . "?format=" . $this-&gt;_ApiFormat . "&amp;limit=" . $limit . "&amp;key=" . $this-&gt;Apikey;

//Making the requet
$result = $this-&gt;curl($url);

//Checks if valid respond
if($result == '[]') { return false; }

//Converts json opj to php array
$output = json_decode($result, true);

//Returns the result
return $output;
}

/*
* This functions makes all the curl calls to the API and returns it to the requesting function
*/

protected function curl($input) {

//starts the curl session
$cl = curl_init($input);

//Sets the curl options
curl_setopt($cl, CURLOPT_HEADER, 0);
curl_setopt($cl, CURLOPT_AUTOREFERER, 1);
curl_setopt($cl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0");
curl_setopt($cl, CURLOPT_RETURNTRANSFER, 1);

//Executes the curl call
$return = curl_exec($cl);

//Closes the curl session
curl_close($cl);

//Returns the value of the curl call
return $return;
}
}
Share

Joomla – Serverflytning

27 mar

0
Webhosting

Jeg kan anbefale Surftown til webhosting. De er klart nogle af de bedste her i Danmark

Hej allesammen og velkommen.
Som nogle af de faste besøgende måske har opdaget har jeg lavet nogle små ændringer her på bloggen. En af dem er den nye knap som man se ude til venstre under datoen. Denne giver dig mulighed for at stemme på mit indlæg og dermed give mig en tilbagemeldning/vurdering uden at skrive en kommentar. Det hele virker meget simpelt ved at du enten trykker en grøn pil op hvis du synes min artikel var god og brugbar. Synes du ikke dette trykker du på den røde pil som peger nedad og dermed får det indlæg et point mindre.
Derudover har jeg udskiftet min menu i toppen, med et nyt plugin som gør at mine dropdowns kan have billeder samt små forklaringer. Dette virker super godt, jeg arbejder dog stadig på nogle små ændringer sådan at menuen passer 100% til mit tema ude jquery conflicts og andet bøvl. Jeg håber du vil tage godt imod mine små ændringer og læse videre, da indlægget egentlig først begynder nu.

Som den opmærksomme læser har bemærket har jeg skrevet en del indlæg om Joomla. Dette er selvfølgelig fordi jeg anvender Joomla som CMS system på en række hjemmeside. En af disse hjemmeside har jeg hostet hostet hos Surftown på et almindelige advanced Webhotel. Her har jeg været kunde gennem mange år, og lå derfor på en server med en gammel php. Da man ikke automatisk bliver flyttet, har jeg derfor kørt med php4 gennem det sidste årstid hvilke i bund og grund ikke har forudsaget nogle problemer overhovedt, indtil jeg skulle udvide min Joomla installation. Jeg besluttede nemlig at installere Akeeba backup på siden, men efter mange forsøg blev jeg simpelthen nød til at give op. I stedet for at installere det plugin jeg bad Joomla om, udførte den en lang forspørgsmål til serveren og spurgte til sidst om jeg ville downloade en index.php fil. Meget underligt tænkte jeg, men efter et page dage med problemet kørende rundt i mit hoved, kom jeg i tanke om at jeg havde set denne fejl før og at det havde noget med kombitalitet at gøre. Derfor klikkede jeg ind på Akeeba’s hjemmeside og så at det krævede som minimum php5 for at køre.

Jeg skrev derfor til Surftown supporten om at blive flyttet til en nyere server med php5 og indenfor en time fik jeg svar.
Der var ingen problemer i at bliver flyttet jeg skulle bare acceptere nogle enkelte betingelser og indefor 48 timer ville hele mit webhotel ligge på en anden server. Efter 48 klikkede jeg ind på mit site, og loggede ind til administrations systemet  på Joomla. Jeg gik ind i hjælp, så at serverflytningen var trådt i kraft og alt var som det skulle være. Dette var super dejligt, indtil jeg besøgte frontend af hjememside hvor alle links var ubrugelige.

Da jeg flyttede server, gik mine søgemaskinevenlige URL’er tabt og jeg måtte derfor slette min .htaccess fil for derefter at slette min cache sådan at siden nu anvender almindelige ID baseret adresser. Dette er pisse belastende, da siden har mere end 4000 sider indexeret i Google med de gamle søgemaskinevenlige adresser. Jeg håber nogle kan komme med en løsning på problemet. Sådan at alt SEO arbejdet ikke er gået tabt på gulvet.

Mange tak på forhånd.

Hilsen
Gustav

Share

Joomla Akeeba

24 mar

0

Udover at drive denne blog, er jeg også webmaster på en række andre website, hvoraf mange af dem anvender Joomla som bagvedliggende system. Joomla er super fantasisk til store sidder og er en af de mest anvendte CMS systemer på markedet. Joomla er skrevet i PHP og der er lige udkommet en ny version nemlig 1.6. Denne version har taget 3 år og udvikle og har efterhånden så mange fede funktioner, at Joomla er det perfekte CMS.
Når man er webmaster og driver en website, er ens værste maridt at siden går ned og man ikke længere kan genskabe siden.
Derfor er det super vigtigt at have en backup af sine filer som ofte ligger på en FTP-server. Denne backup kan man selvfølgelig foretage sig fuldstændig manuelt, ved at logge ind og hente alle filerne til computeren. Derudover skal man have en kopi af sine database, hvilke jeg faktisk vil hævde er det vigtigste. Denne backup kan man lave i sin server consol fx. via ssh. har man ikke direkte adgang til serveren, kan dette også gøres over phpmyadmin, som de fleste hosting udbydere stiller til rådighed.
Gør man dette, vil jeg anbefale at man eksportere databasen til en .sql fil.

Der er dog også en helt anden måde man kan tage backup på, hvis man anvender Joomla. Jeg har tidligere gjort det på den manuelle måde, ligesom jeg har beskrevet ovenfor, indtil jeg fik anbefalet denne komponent til Joomla.
Akeeba kan lave backup af hele siden, og samtidig komprimere det hele til en fil i .zip eller .jap format.
Dette er super smart, da det ikke tager særlig lang tid for serveren at komprimere hele siden, og når du så har tid, kan du hente filen ned til din egen computer. Har man valgt at foretage backuppen til en zip fil, udpakker man den bare og uploader til den nye server.
Man kan også anvende Akeeba Kickstart, som laver en installation ligesom den vi kender fra når man installerer WordPress eller Joomla. Dette er super smart, da man kan flytte en Joomla side på få minutter og dermed være online igen, kort tid efter et alvorligt nedbrud.

Jeg tog forleden en backup af et stort Joomla site, på 3.5 gb. Sitet er hostet hos Surftown og selvom hjemmesiden er forholdsvis stor og med meget data, tog det kun 6 minutter for Akeeba at komprimere det hele ned til en fil på 1 GB. Tiden det tager for serveren at lave en backup afhænger selvfølgelig af ressourcerne i serveren og kan derfor svinge meget.
Vil man være fuldstændig på den sikre side, kan opsætte Akeeba til at tage en automatisk backup med et bestemt tidsinterval, sådan at man ikke selv skal huske det.
Da det ikke er altid man husker at hente backup filen ned til en anden computer kan man sætte Akeeba op til at automatisk overføre filen til en anden FTP server, hvilke øger sikkerhed drastisk.

Jeg håber du kunne bruge denne lille anbefaling. Bemærk dog at serveren hvorpå din Joomla installation ligger, skal have php5 som minimum.
Akeeba findes i mange versioner herunder en gratis version, som virker  absolut glimrende.

Hilsen
Gustav

Share