دوره خرابی PHP: تبدیل ارز ساده

Summarize this content to 400 words in Persian Lang
یک ابزار مبدل ارز مبتنی بر PHP که به کاربران اجازه میدهد ارزها را با استفاده از نرخهای تبدیل لحظهای که از یک API خارجی واکشی شدهاند، تبدیل کنند. این ابزار با PHP، HTML، jQuery، AJAX، JSON، Bootstrap، CSS و MySQL ساخته شده است. این برنامه برای ارائه تبدیل ارز دقیق و نمایش نتایج در یک رابط کاربر پسند طراحی شده است.
موضوعات: php، mysql، blog، ajax، bootstrap، jquery، css، currency conversion، external api integration، api integration
راه حل گام به گام
1. ساختار دایرکتوری
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
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
2. طرحواره پایگاه داده
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’);
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
3. فایل پیکربندی
تنظیمات پیکربندی (شامل/config.sample.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’);
?>
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
4. اتصال پایگاه داده را پیکربندی کنید
برقراری ارتباط پایگاه داده (include/db.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
}
?>
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
5. ساختار HTML و PHP
ساختار HTML (index.html)
lang=”en”>
charset=”UTF-8″>
Currency Converter
rel=”stylesheet” href=”https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css”>
rel=”stylesheet” href=”assets/css/styles.css”>
class=”container”>
class=”text-center”>Currency Converter
id=”currency-form”>
class=”form-group”>
for=”amount”>Amount:
type=”number” class=”form-control” id=”amount” placeholder=”Enter amount” required>
class=”form-group”>
for=”from_currency”>From:
class=”form-control” id=”from_currency”>
class=”form-group”>
for=”to_currency”>To:
class=”form-control” id=”to_currency”>
type=”submit” class=”btn btn-primary”>Convert
id=”result” class=”alert alert-success” style=”display:none;”>
src=]]>”https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js”>
src=]]>”https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js”>
src=]]>”assets/js/script.js”>
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
6. جاوا اسکریپت و AJAX
AJAX Handling (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 += ” + currency.code + ‘”>’ + currency.name + ”;
});
$(‘#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();
}
}
});
});
});
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
توضیح:
از بوت استرپ برای استایل سازی و جی کوئری برای درخواست های AJAX استفاده می کند.
$(‘#currency-form’).on(‘submit’, …): ارسال فرم را مدیریت می کند و درخواست AJAX را به src/convert.php.
$.ajax({…}): داده ها را به سرور ارسال می کند و پاسخ را پردازش می کند.
7. اسکریپت های PHP Backend
واکشی نرخ ارز (src/fetch-rates.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.’]);
}
?>
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
توضیح:
file_get_contents($apiUrl): داده ها را از API واکشی می کند.
json_decode($response, true): داده های JSON را در یک آرایه انجمنی رمزگشایی می کند.
INSERT INTO currency_rates … ON DUPLICATE KEY UPDATE: نرخ ارز را در پایگاه داده درج یا به روز می کند.
منطق تبدیل ارز (src/convert.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.’]);
}
?>
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
توضیح:
$_POST[‘amount’], $_POST[‘from_currency’], $_POST[‘to_currency’]: پارامترها را از درخواست AJAX دریافت می کند.
SELECT exchange_rate FROM currency_rates WHERE currency = ?: نرخ ارز را از پایگاه داده واکشی می کند.
مقدار را تبدیل می کند و پاسخ JSON را برمی گرداند.
نام و کد واحد پول (src/get-currencies.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]);
?>
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
توضیح:
SELECT code, name FROM currencies: نام و کد ارز را از پایگاه داده واکشی می کند.
پاسخ JSON را برمیگرداند.
6. یک ظاهر طراحی CSS
استایل CSS (assets/css/style.css)
body {
padding-top: 50px;
}
.container {
max-width: 600px;
margin: 0 auto;
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
مستندات و نظرات
include/config.php: شامل پیکربندی پایگاه داده است و با استفاده از پیکربندی PDO و API به MySQL متصل می شود.
index.php: صفحه اصلی با ساختار HTML، شامل Bootstrap برای یک ظاهر طراحی شده است.
assets/js/script.js: درخواست های AJAX برای بارگیری و ذخیره پست ها را مدیریت می کند. از jQuery برای دستکاری DOM و AJAX استفاده می کند.
از jQuery برای برقراری تماس های AJAX استفاده می کند.
نتایج را در #result بخش
assets/css/style.css: یک ظاهر طراحی اولیه برای برنامه.
رنگ پس زمینه و عرض ظرف را تنظیم می کند.
src/fetch-rates.php: پست ها را از پایگاه داده واکشی می کند و آنها را به صورت JSON برمی گرداند.
نرخ ارز را از API واکشی می کند.
نتیجه تبدیل را در پایگاه داده ذخیره می کند.
نتیجه را در قالب JSON برمی گرداند.
src/get-currencies.php: ایجاد و به روز رسانی پست را بر اساس وجود شناسه مدیریت می کند.
نتیجه را در قالب JSON برمی گرداند.
src/convert.php: درخواست های تبدیل را پردازش می کند و با API تعامل دارد.
داده های ورودی را تأیید می کند.
نرخ ارز را از API واکشی می کند.
نتیجه تبدیل را محاسبه و در پایگاه داده ذخیره می کند.
نتیجه را در قالب JSON برمی گرداند.
این راهاندازی یک ابزار مبدل ارز پایه و در عین حال کاربردی را با نظرات و توضیحات دقیق ارائه میکند. اطمینان حاصل کنید که URL های API و تنظیمات پایگاه داده را با توجه به نیاز خود تنظیم کنید. برای استفاده در دنیای واقعی، ممکن است بخواهید مدیریت خطا و اقدامات امنیتی را نیز اضافه کنید.
پیوندهای اتصال
اگر این مجموعه را مفید یافتید، لطفاً آن را در نظر بگیرید مخزن یک ستاره در GitHub یا اشتراک گذاری پست در شبکه های اجتماعی مورد علاقه خود 😍. حمایت شما برای من اهمیت زیادی دارد!
اگر محتوای مفیدتری مانند این میخواهید، در صورت تمایل من را دنبال کنید:
کد منبع
یک ابزار مبدل ارز مبتنی بر PHP که به کاربران اجازه میدهد ارزها را با استفاده از نرخهای تبدیل لحظهای که از یک API خارجی واکشی شدهاند، تبدیل کنند. این ابزار با PHP، HTML، jQuery، AJAX، JSON، Bootstrap، CSS و MySQL ساخته شده است. این برنامه برای ارائه تبدیل ارز دقیق و نمایش نتایج در یک رابط کاربر پسند طراحی شده است.
موضوعات: php
، mysql
، blog
، ajax
، bootstrap
، jquery
، css
، currency conversion
، external api integration
، api integration
راه حل گام به گام
1. ساختار دایرکتوری
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
2. طرحواره پایگاه داده
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');
3. فایل پیکربندی
تنظیمات پیکربندی (شامل/config.sample.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');
?>
4. اتصال پایگاه داده را پیکربندی کنید
برقراری ارتباط پایگاه داده (include/db.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
}
?>
5. ساختار HTML و PHP
ساختار HTML (index.html
)
lang="en">
charset="UTF-8">
Currency Converter
rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
rel="stylesheet" href="assets/css/styles.css">
class="container">
class="text-center">Currency Converter
id="result" class="alert alert-success" style="display:none;">
"https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js">
"https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js">
"assets/js/script.js">
6. جاوا اسکریپت و AJAX
AJAX Handling (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 += ' + currency.code + '">' + currency.name + '';
});
$('#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();
}
}
});
});
});
توضیح:
- از بوت استرپ برای استایل سازی و جی کوئری برای درخواست های AJAX استفاده می کند.
-
$('#currency-form').on('submit', ...)
: ارسال فرم را مدیریت می کند و درخواست AJAX را بهsrc/convert.php
. -
$.ajax({...})
: داده ها را به سرور ارسال می کند و پاسخ را پردازش می کند.
7. اسکریپت های PHP Backend
واکشی نرخ ارز (src/fetch-rates.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.']);
}
?>
توضیح:
-
file_get_contents($apiUrl)
: داده ها را از API واکشی می کند. -
json_decode($response, true)
: داده های JSON را در یک آرایه انجمنی رمزگشایی می کند. -
INSERT INTO currency_rates ... ON DUPLICATE KEY UPDATE
: نرخ ارز را در پایگاه داده درج یا به روز می کند.
منطق تبدیل ارز (src/convert.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.']);
}
?>
توضیح:
-
$_POST['amount'], $_POST['from_currency'], $_POST['to_currency']
: پارامترها را از درخواست AJAX دریافت می کند. -
SELECT exchange_rate FROM currency_rates WHERE currency = ?
: نرخ ارز را از پایگاه داده واکشی می کند. - مقدار را تبدیل می کند و پاسخ JSON را برمی گرداند.
نام و کد واحد پول (src/get-currencies.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]);
?>
توضیح:
-
SELECT code, name FROM currencies
: نام و کد ارز را از پایگاه داده واکشی می کند. - پاسخ JSON را برمیگرداند.
6. یک ظاهر طراحی CSS
استایل CSS (assets/css/style.css
)
body {
padding-top: 50px;
}
.container {
max-width: 600px;
margin: 0 auto;
}
مستندات و نظرات
-
include/config.php
: شامل پیکربندی پایگاه داده است و با استفاده از پیکربندی PDO و API به MySQL متصل می شود. -
index.php
: صفحه اصلی با ساختار HTML، شامل Bootstrap برای یک ظاهر طراحی شده است. -
assets/js/script.js
: درخواست های AJAX برای بارگیری و ذخیره پست ها را مدیریت می کند. از jQuery برای دستکاری DOM و AJAX استفاده می کند.- از jQuery برای برقراری تماس های AJAX استفاده می کند.
- نتایج را در
#result
بخش
-
assets/css/style.css
: یک ظاهر طراحی اولیه برای برنامه.- رنگ پس زمینه و عرض ظرف را تنظیم می کند.
-
src/fetch-rates.php
: پست ها را از پایگاه داده واکشی می کند و آنها را به صورت JSON برمی گرداند.- نرخ ارز را از API واکشی می کند.
- نتیجه تبدیل را در پایگاه داده ذخیره می کند.
- نتیجه را در قالب JSON برمی گرداند.
-
src/get-currencies.php
: ایجاد و به روز رسانی پست را بر اساس وجود شناسه مدیریت می کند.- نتیجه را در قالب JSON برمی گرداند.
-
src/convert.php
: درخواست های تبدیل را پردازش می کند و با API تعامل دارد.- داده های ورودی را تأیید می کند.
- نرخ ارز را از API واکشی می کند.
- نتیجه تبدیل را محاسبه و در پایگاه داده ذخیره می کند.
- نتیجه را در قالب JSON برمی گرداند.
این راهاندازی یک ابزار مبدل ارز پایه و در عین حال کاربردی را با نظرات و توضیحات دقیق ارائه میکند. اطمینان حاصل کنید که URL های API و تنظیمات پایگاه داده را با توجه به نیاز خود تنظیم کنید. برای استفاده در دنیای واقعی، ممکن است بخواهید مدیریت خطا و اقدامات امنیتی را نیز اضافه کنید.
پیوندهای اتصال
اگر این مجموعه را مفید یافتید، لطفاً آن را در نظر بگیرید مخزن یک ستاره در GitHub یا اشتراک گذاری پست در شبکه های اجتماعی مورد علاقه خود 😍. حمایت شما برای من اهمیت زیادی دارد!
اگر محتوای مفیدتری مانند این میخواهید، در صورت تمایل من را دنبال کنید:
کد منبع