Egyszerű valutaváltó készítése PHP-vel
Kellemes hétfői napot mindenkinek!
Készítek egy valutakonvertáló szkriptet és ismét segítségre szorulok.
Két problémám van:
1. PHP-ban hoztam létre egy FORM-ot. beszedem az adatokat, de az eredmenyt nem tudom a FORM egy mezőjében megjeleníteni.
2. Hogyan lehet megoldani, hogy frissítéskor (a refresh ikonra klikkelve IE-ben ne jelenjem meg mindig a következő üzenet:
"Page cannot be refreshed without resending the information. Click Retry to send the information again, or click Cancel to return to the page that you were trying to view."
Itt van a PHP fileom tartalma (Ne nevessetek ki, kezdő vagyok.)
Ha valaki segít, nagyon köszönöm!
További kellemes napot!
Millye
■ Készítek egy valutakonvertáló szkriptet és ismét segítségre szorulok.
Két problémám van:
1. PHP-ban hoztam létre egy FORM-ot. beszedem az adatokat, de az eredmenyt nem tudom a FORM egy mezőjében megjeleníteni.
<input name=\"eredmeny\" value=\"$eredmeny\">
nem működik2. Hogyan lehet megoldani, hogy frissítéskor (a refresh ikonra klikkelve IE-ben ne jelenjem meg mindig a következő üzenet:
"Page cannot be refreshed without resending the information. Click Retry to send the information again, or click Cancel to return to the page that you were trying to view."
Itt van a PHP fileom tartalma (Ne nevessetek ki, kezdő vagyok.)
<?php
import_request_variables('GPC');
function szamol()
{
global $osszeg, $valuta1, $valuta2, $eredmeny, $euroar, $usdar, $hufar, $leiar, $kiir;
$euroar=3.5135; /* arfolyamok */
$usdar=2.7957;
$hufar=0.014411;
$leiar=1;
/* 1 */ if ($valuta1=="Válassz1" && $valuta2=="Válassz2") /* Indulaskor: VALUTA 1 = VALUTA 2 = Válassz */
{
$eredmeny=" ";
echo (" " . $eredmeny . " ");
}
/* 2 */ if (($valuta1==$valuta2) && ($valuta1!="Válassz1") && ($valuta2!="Válassz2")) /* VALUTA 1 = VALUTA 2 */
{
$eredmeny="A két pénznem azonos!";
echo (" " . $eredmeny . " ");
}
/* 3 */ if ($valuta1=="LEI" && $valuta2=="EURO") /* LEI --> EURO */
{
$eredmeny = $osszeg*($leiar/$euroar);
$kiir = number_format($eredmeny, 2, '.', '');
echo ("".$osszeg." ".$valuta1." = ".$kiir." ".$valuta2."");
}
/* 4 */ if ($valuta1=="LEI" && $valuta2=="USD") /* LEI --> USD */
{
$eredmeny = $osszeg*($leiar/$usdar);
$kiir = number_format($eredmeny, 2, '.', '');
echo ("".$osszeg." ".$valuta1." = ".$kiir." ".$valuta2."");
}
/* 5 */ if ($valuta1=="LEI" && $valuta2=="HUF") /* LEI --> HUF */
{
$eredmeny = $osszeg*($leiar/$hufar);
$kiir = number_format($eredmeny, 2, '.', '');
echo ("".$osszeg." ".$valuta1." = ".$kiir." ".$valuta2."");
}
/* 6 */ if ($valuta1=="EURO" && $valuta2=="LEI") /* EURO --> LEI */
{
$eredmeny = $osszeg*($euroar/$leiar);
$kiir = number_format($eredmeny, 2, '.', '');
echo ("".$osszeg." ".$valuta1." = ".$kiir." ".$valuta2."");
}
/* 7 */ if ($valuta1=="EURO" && $valuta2=="USD") /* EURO --> USD */
{
$eredmeny = $osszeg*($euroar/$usdar);
$kiir = number_format($eredmeny, 2, '.', '');
echo ("".$osszeg." ".$valuta1." = ".$kiir." ".$valuta2."");
}
/* 8 */ if ($valuta1=="EURO" && $valuta2=="HUF") /* EURO --> HUF */
{
$eredmeny = $osszeg*($euroar/$hufar);
$kiir = number_format($eredmeny, 2, '.', '');
echo ("".$osszeg." ".$valuta1." = ".$kiir." ".$valuta2."");
}
/* 9 */ if ($valuta1=="USD" && $valuta2=="LEI") /* USD --> LEI */
{
$eredmeny = $osszeg*($usdar/$leiar);
$kiir = number_format($eredmeny, 2, '.', '');
echo ("".$osszeg." ".$valuta1." = ".$kiir." ".$valuta2."");
}
/* 10 */if ($valuta1=="USD" && $valuta2=="EURO") /* USD --> EURO */
{
$eredmeny = $osszeg*($usdar/$euroar);
$kiir = number_format($eredmeny, 2, '.', '');
echo ("".$osszeg." ".$valuta1." = ".$kiir." ".$valuta2."");
}
/* 9 */ if ($valuta1=="USD" && $valuta2=="HUF") /* USD --> HUF */
{
$eredmeny = $osszeg*($usdar/$hufar);
$kiir = number_format($eredmeny, 2, '.', '');
echo ("".$osszeg." ".$valuta1." = ".$kiir." ".$valuta2."");
}
/* 10 */if ($valuta1=="HUF" && $valuta2=="LEI") /* HUF --> LEI */
{
$eredmeny = $osszeg*($hufar/$leiar);
$kiir = number_format($eredmeny, 2, '.', '');
echo ("".$osszeg." ".$valuta1." = ".$kiir." ".$valuta2."");
}
/* 11 */if ($valuta1=="HUF" && $valuta2=="EURO") /* HUF --> EURO */
{
$eredmeny = $osszeg*($hufar/$euroar);
$kiir = number_format($eredmeny, 2, '.', '');
echo ("".$osszeg." ".$valuta1." = ".$kiir." ".$valuta2."");
}
/* 12 */if ($valuta1=="HUF" && $valuta2=="USD") /* HUF --> USD */
{
$eredmeny = $osszeg*($hufar/$usdar);
$kiir = number_format($eredmeny, 2, '.', '');
echo ("".$osszeg." ".$valuta1." = ".$kiir." ".$valuta2."");
}
}
function main(){
echo "<HTML>
<HEAD>
<TITLE>Valutaváltó</TITLE>
</HEAD>
<BODY>
<FORM name=\"valutavalto\" ACTION=\"convertor.php\" METHOD=\"post\">
<TABLE ALIGN=\"CENTER\" WIDTH=\"8%\" BORDER=\"0\" CELLPADDING=\"2\" CELLSPACING=\"2\">
<TBODY>
<TR>
<TD ALIGN=\"LEFT\" NOWRAP>
<B>Összeg:</B>
</TD>
<TD ALIGN=\"LEFT\" NOWRAP>
<INPUT type=\"text\" style=\"background: transparent none repeat scroll 0%; -moz-background-clip: initial; -moz-background-inline-policy: initial; -moz-background-origin: initial;\" name=\"osszeg\" size=\"11\">
</TD>
</TR>
<TR>
<TD ALIGN=\"LEFT\" NOWRAP>
<B>Errõl vált:</B>
</TD>
<TD ALIGN=\"LEFT\" NOWRAP>
<select name=\"valuta1\">
<option value=\"Válassz1\" selected>Válassz</option>
<option value=\"EURO\">EURO</option>
<option value=\"USD\">USD</option>
<option value=\"HUF\">HUF</option>
<option value=\"LEI\">LEI</option>
</select>
</TD>
<TD ALIGN=\"LEFT\" NOWRAP>
<B>Erre vált:</B>
</TD>
<TD>
<select name=\"valuta2\">
<option value=\"Válassz2\" selected>Válassz</option>
<option value=\"EURO\">EURO</option>
<option value=\"USD\">USD</option>
<option value=\"HUF\">HUF</option>
<option value=\"LEI\">LEI</option>
</select>
</TD>
</TR>
<TR>
<TD></TD>
<TD>
<input type=\"submit\" value=\"Számol\" onClick=\"szamol()\">
</TD>
</TR>
<TR>
<TD>
<B>Eredmény:</B>
</TD>
<TD>
<input name=\"eredmeny\" value=\"$eredmeny\"> /*Ez itt nem működik*/
</TD>
</TR>
</FORM>
</BODY>
</HTML>";
}
szamol();
/*
echo (" " . $osszeg . " " . $valuta1 . " = " . $eredmeny . " " . $valuta2 . " ");
*/
switch($op) {
case "szamol";
send();
break;
case "main";
main();
break;
default:
main();
break;
}
?>
Ha valaki segít, nagyon köszönöm!
További kellemes napot!
Millye
nagyon ronda a kódod
Másrészt érdemes lenne egyébként is kicsit elmélyedni a tömbökben, mert az egész valutaváltást a rengeteg ismételgetés helyett egy tömbbel és pár sorral meg lehetne oldani.
Harmadszor pedig a szamol() írásakor érdekes módon tisztában voltál vele, hogy a global használata emel be változókat, de a main() írásakor már nem. Mivel a main()-ben nincs egyetlen változó sem definiálva, az $eredmeny változó értékéről nem tud semmit. Vagy global változót kell használni (nem jó módszer!), vagy paraméterként kell átadni (így jobb!).
Tudom, hogy ronda a kódom, én sem vagyok elragadtatva
Nem teljes megoldást kérek, de ha módodban áll, légy szíves küldj egy sovány vázlatot, legalább szavakban (szövegben).
Millye László
Példakód
Hojtsy Gábornak
antal##kukac##emin.hu
Antal Ferenc
<Nincs cím>
soap, mint a szappan?
A weboldalról való kiszedés azért nem szerencsés, mert ha változtatnak a weboldal megjelenésén, lehet átírni a kódot.
<Nincs cím>
$body = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
$body .= "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">";
$body .= "<soap:Body>";
$body .= "<GetCurrentExchangeRates xmlns=\"http://www.mnb.hu/webservices/\" />";
$body .= "</soap:Body>";
$body .= "</soap:Envelope>\r\n";
$req = "POST /arfolyamok.asmx HTTP/1.1\r\n";
$req.= "Host: www.mnb.hu\r\n";
$req.= "Connection: Close\r\n";
$req.= "Content-Type: text/xml; charset=utf-8\r\n";
$req.= "Content-Length: ".strlen($body)."\r\n";
$req.= "SOAPAction: \"http://www.mnb.hu/webservices/GetCurrentExchangeRates\"\r\n\r\n";
$fs = fsockopen("www.mnb.hu", 80);
fwrite($fs, $req.$body);
while (!feof($fs)) {
$s = fgets($fs);
echo $s.'<br />';
}
fclose($fs);
?>
<Nincs cím>
Köszi, legalább alkalmam lesz webszolgáltatásokkal megismerkednem.
Arról nem is beszélve, hogy ezek az adatok csak naponta változnak. Elég botorság lenne minden kéréskor a webszolgáltatáshoz fordulni.
Köszönettel
Balogh Tibor