基于 PHP 的货币转换器工具,允许用户使用从外部 API 获取的实时汇率来转换货币。该工具是使用 PHP、HTML、jQuery、AJAX、JSON、Bootstrap、CSS 和 MySQL 构建的。该应用程序旨在提供准确的货币换算并在用户友好的界面中显示结果。
主题: php、mysql、博客、ajax、bootstrap、jquery、css、货币换算、外部 api 集成、api 集成
simple-currency-converter/ │ ├── index.html ├── db/ │ └── database.sql ├── include/ │ ├── config.sample.php │ └── db.php ├── assets/ │ ├── css/ │ │ └── style.css │ └── js/ │ │ └── script.js ├── src/ │ ├── fetch-rates.php │ ├── convert.php │ └── get-currencies.php ├── README.md └── .gitignore
db/database.sql:
CREATE TABLE `exchange_rates` ( `id` int(11) NOT NULL AUTO_INCREMENT, `currency` varchar(3) NOT NULL, `rate` decimal(10, 4) NOT NULL, `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE currencies ( id INT AUTO_INCREMENT PRIMARY KEY, code VARCHAR(3) NOT NULL, name VARCHAR(50) NOT NULL ); INSERT INTO currencies (code, name) VALUES ('USD', 'United States Dollar'), ('EUR', 'Euro'), ('GBP', 'British Pound'), ('JPY', 'Japanese Yen'), ('BDT', 'Bangladesh Taka'), ('AUD', 'Australian Dollar');
配置设置(include/config.sample.php)
<?php // Database configuration define('DB_HOST', 'localhost'); // Database host define('DB_NAME', 'currency_converter'); // Database name define('DB_USER', 'root'); // Change if necessary define('DB_PASS', ''); // Change if necessary // API configuration define('API_URL', 'https://api.exchangerate-api.com/v4/latest/'); define('API_KEY', 'your_api_key_here'); ?>
建立数据库连接(include/db.php)
<?php include 'db.php'; // Database configuration $dsn = 'mysql:host='.DB_HOST.';dbname='.DB_NAME; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; // Create a new PDO instance try { $pdo = new PDO($dsn, DB_USER, DB_PASS, $options); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Set error mode to exception } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); // Display error message if connection fails } ?>
HTML 结构 (index.html)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Currency Converter</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"> <link rel="stylesheet" href="assets/css/styles.css"> </head> <body> <div class="container"> <h2 class="text-center">Currency Converter</h2> <form id="currency-form"> <div class="form-group"> <label for="amount">Amount:</label> <input type="number" class="form-control" id="amount" placeholder="Enter amount" required> </div> <div class="form-group"> <label for="from_currency">From:</label> <select class="form-control" id="from_currency"> <!-- Options will be loaded dynamically --> </select> </div> <div class="form-group"> <label for="to_currency">To:</label> <select class="form-control" id="to_currency"> <!-- Options will be loaded dynamically --> </select> </div> <button type="submit" class="btn btn-primary">Convert</button> </form> <div id="result" class="alert alert-success" style="display:none;"></div> </div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script> <script src="assets/js/script.js"></script> </body> </html>
AJAX 处理 (assets/js/script.js)
$(document).ready(function() { // Fetch exchange rates and populate the select options $.ajax({ url: 'src/fetch-rates.php', method: 'GET', dataType: 'json', success: function(data) { if (data.status === 'success') { populateCurrencyOptions(); } } }); function populateCurrencyOptions() { $.ajax({ url: 'src/get-currencies.php', method: 'GET', dataType: 'json', success: function(data) { if (data.status === 'success') { var options = ''; console.log(data.currencies) $.each(data.currencies, function(index, currency) { options += '<option value="' + currency.code + '">' + currency.name + '</option>'; }); $('#from_currency, #to_currency').html(options); } } }); } // Handle form submission $('#currency-form').on('submit', function(e) { e.preventDefault(); var amount = $('#amount').val(); var fromCurrency = $('#from_currency').val(); var toCurrency = $('#to_currency').val(); $.ajax({ url: 'src/convert.php', method: 'POST', data: { amount: amount, from_currency: fromCurrency, to_currency: toCurrency }, dataType: 'json', success: function(data) { if (data.status === 'success') { $('#result').html('Converted Amount: ' + data.converted_amount).show(); } else { $('#result').html(data.message).show(); } } }); }); });
说明:
获取汇率 (src/fetch-rates.php)
<?php require '../include/db.php'; // Fetch exchange rates from the external API $apiUrl = API_URL . "USD"; // Replace with your API endpoint $response = file_get_contents($apiUrl); $data = json_decode($response, true); if ($data) { // Clear existing rates $stmt = $pdo->prepare("TRUNCATE TABLE exchange_rates"); $stmt->execute(); // Insert new rates $stmt = $pdo->prepare("INSERT INTO exchange_rates (currency, rate) VALUES (:currency, :rate)"); foreach ($data['rates'] as $currency => $rate) { $stmt->execute(['currency' => $currency, 'rate' => $rate]); } echo json_encode(['status' => 'success', 'message' => 'Exchange rates updated successfully.']); } else { echo json_encode(['status' => 'error', 'message' => 'Failed to fetch exchange rates.']); } ?>
说明:
货币转换逻辑 (src/convert.php)
<?php require '../include/db.php'; $amount = $_POST['amount']; $fromCurrency = $_POST['from_currency']; $toCurrency = $_POST['to_currency']; // Fetch the exchange rate from the database $stmt = $pdo->prepare("SELECT rate FROM exchange_rates WHERE currency = :currency"); $stmt->execute(['currency' => $fromCurrency]); $fromRate = $stmt->fetchColumn(); $stmt->execute(['currency' => $toCurrency]); $toRate = $stmt->fetchColumn(); if ($fromRate && $toRate) { // Convert the amount $convertedAmount = ($amount / $fromRate) * $toRate; echo json_encode(['status' => 'success', 'converted_amount' => number_format($convertedAmount, 2)]); } else { echo json_encode(['status' => 'error', 'message' => 'Conversion failed.']); } ?>
说明:
货币名称和代码 (src/get-currencies.php)
<?php require '../include/db.php'; $stmt = $pdo->query('SELECT code, name FROM currencies'); $data = []; while ($row = $stmt->fetch()) { $data[] = ['code' => $row['code'], 'name' => $row['name']]; } echo json_encode(['status' => 'success', 'currencies' => $data]); ?>
说明:
CSS 样式 (assets/css/style.css)
body { padding-top: 50px; } .container { max-width: 600px; margin: 0 auto; }
此设置提供了一个基本但实用的货币转换器工具,并带有详细的注释和解释。确保根据您的需要调整 API URL 和数据库设置。对于实际使用,您可能还需要添加错误处理和安全措施。
连接链接
如果您发现本系列有帮助,请考虑在 GitHub 上给 存储库 一个星号或在您最喜欢的社交网络上分享该帖子?。您的支持对我来说意义重大!
如果您想要更多类似的有用内容,请随时关注我:
源代码
以上是PHP 速成课程:简单的货币转换器的详细内容。更多信息请关注PHP中文网其他相关文章!