در این مقاله قصد داریم تا به شما نحوهی دريافت اطلاعات از ديتابيس در PHP و نمایش اطلاعات دیتابیس در php را آموزش دهیم. اگر مبتدی هستید و نمیدانید که چگونه این عملیات را انجام دهید یا اگر نمیدانید که روش صحیح انجام این عملیات چگونه است پس با ما همراه باشید تا به شما راه و روش این کار را نشان دهیم.
پیش نیاز این آموزش این است که شما ابتدا به دلخواه درون دیتابیس یک جدول با نام دلخواه ایجاد کنید و چندین فیلد به آن اضافه کنید و بعد از آن یک سری اطلاعات و یا مقادیر دلخواه درون جدول خود قرار دهید تا جدول شما حاوی اطلاعات باشد و بتوانیم اطلاعات را از درون دیتابیس استخراج کنیم.
اما اگر میخواهید که با ما پیش بروید، پس یک دیتابیس به نام myProject ایجاد کنید و یک جدول با اسم users درون آن دیتابیس بسازید. بعد از انجام این دو مورد چهار ستون با نامهای id, username, email, age اضافه کنید و درون این جدول شروع به وارد کردن داده دلخواه کنید.
پیش نیاز بعدی این است که شما سه فایل با نامهای config.php، process.php، index.php داشته باشید تا پروژهی کوچک خودمان را پیادهسازی کنیم، در ادامه خواهیم گفت که در این سه فایل چه کارهایی قرار است انجام بدهیم.
در بالا اشاره کردیم که قرار است سه فایل با نامهای config.php، process.php، index.php داشته باشیم، اما قرار است این سه فایل شامل چه اطلاعاتی باشند؟
در فایل config.php ما کدهای مربوط به اتصال به دیتابیس را قرار میدهیم تا به راحتی قابل دسترس باشند و از بقیهی کدهای پروژه جدا باشند.
در فایل process.php قرار است که ما کدهای مربوط به دریافت اطلاعات از دیتابیس را بنویسیم و در نهایت در فایل index.php ما اطلاعات دریافت شده از دیتابیس را به شکل مناسب به نمایش میگذاریم.
در ابتدای کار ما باید بتوانیم به دیتابیس متصل بشویم تا اطلاعات درون دیتابیس را استخراج کنیم، برای اینکار ما باید ابتدا درون فایل process.php کدهای مربوط به اتصال به دیتابیس را بنویسیم.
<?php
$database = [
'host' => 'localhost',
'dbname' => 'myProject',
'user' => 'root',
'pass' => ''
];
در کد بالا ما یک آرایه تعریف کردهایم که مشخصات دیتابیس را درون خودش دارد که شامل هاست (host)، نام دیتابیس، نام کاربری دیتابیس و در نهایت رمز عبور دیتابیسمان است. حال باید کدهای مربوط به اتصال به دیتابیس را بنویسیم.
try {
$db = new PDO("mysql:host={$database['host']};dbname={$database['dbname']}", $database['user'], $database['pass']);
} catch (PDOException $e) {
die("An error happend, Error: " . $e->getMessage());
}
ما ابتدا کد اتصال به دیتابیس را درون بلاک try catch قرار دادهایم تا اگر خطایی رخ داد بتوانیم خطا را مدیریت کنیم. درون بلاک try ما برای اتصال به دیتابیس از روش PDO استفاده کردهایم که با کلید new یک شی از آن ساختهایم و درون متغیر db قرار دادهایم تا بتوانیم کوئریهای خود را اجرا کنیم.
درون PDO ما نوشتهایم: mysql، به این معناست که پایگاه داده ما Mysql است، کلمهی بعدی که host است باید نام host خود را مشخص کنیم که ما آن را درون آرایهای که مشخصات پایگاه داده را در اختیار داشت فراخوانی کردهایم، دو براکت {} بین متغیر برای جلوگیری از تداخل بین رشته و متغیر است.
در ادامه ما با یک ; (سمی کالمن) دو مقدار را از هم جدا کردهایم، رو به روی کلمه dbname ما نام پایگاه داده خود را آوردهایم. در خارج از رشته ما نام کاربری و رمز عبور را فراخوانی کردهایم. در نهایت نیز اتصال پایگاه داده را درون متغیر db نگه داشتهایم.
بلاک catch نیز زمانی اجرا میشود که خطایی در بلاک try رخ دهد و اگر خطایی رخ دهد تابع die اجرا میشود که خطا را چاپ و برنامه را متوقف میکند.
در فایل process.php ما کدهای مربوط به دریافت اطلاعات از دیتابیس را مینویسیم، قرار است که ما یک تابع بنویسیم تا تمامی اطلاعات درون جدول را استخراج کند و به ما در قالب یک Object بدهد.
قبل از هرچیزی به خاطر داشته باشید که فایل config.php باید در ابتدای این فایل include شود تا بتوانیم از اتصالی که به دیتابیس درون فایل config.php ایجاد شده است، استفاده کنیم، برای include کردن فایل config کافی است کد زیر را بعد از تگ php قرار دهیم.
include_once 'config.php';
تابع include_once باعث میشود تا ما یک فایل را فقط یک بار درون یک فایل include کنیم.
function getAllUsers(){
global $db;
$sql = "SELECT * FROM users";
$stmt = $db->prepare($sql);
$stmt->execute();
return $stmt->fetchAll(PDO::FETCH_OBJ);
}
در کد بالا ما یک تابع به نام getAllUsers تعریف کردهایم تا نام تابع با کاری که میکند مطابقت داشته باشد. درون تابع ما متغیر db را global کردهایم تا بتوانیم از متغیر db که شامل موارد اتصال به دیتابیس است استفاده کنیم توجه کنید که این متغیر درون فایل config.php است و ما آن را include کردهایم تا بتوانیم از کدهای درونش استفاده کنیم.
در ادامه ما کوئری مورد نظرمان که دریافت تمامی کاربران از جدول users است را نوشتهایم و درون متغیر sql قرار دادهایم، در قدم بعدی ما تابع prepare از شئ ساخته شده PDO که درون متغیر db است صدا زدهایم و کوئریمان را درون تابع قرار دادهایم تا برای اجرای کوئری آمادهسازی کند و آن را درون stmt قرار دادهایم تا بتوانیم کوئری را در قدم بعدی اجرا کنیم.
در قدم بعدی ما متغیر stmt را execute کردهایم، تابع execute کوئری ما را اجرا میکند و در نهایت به عنوان خروجی با کمک تابع fetchAll که تمامی نتایج برگشت داده شده از سمت دیتابیس است را return کردهایم. درون تابع fetchAll ما PDO::FETCH_OBJ را نوشتهایم تا نتایج برگشت داده شده را در قالب یک Object به ما بدهد.
تا به الان که ما تابع دریافت اطلاعات از دیتابیس را نوشتهایم به راحتی میتوانیم اطلاعات موجود درون جدول users را داشته باشیم، برای اینکه از صحت کار کردن این تابع مطمئن شویم درون فایل process.php تابع را صدا میزنیم و نتایج را درون یک متغیر قرار میدهیم تا بتوانیم نتایج را چاپ و مشاهده کنیم. توجه داشته باشید که حتما درون جدول users مقادیر دلخواه را وارد کنید تا تابع چیزی برای برگرداندن نتیجه داشته باشد.
کد زیر را در پایین کدهای فایل process.php قرار دهید.
$users = getAllUsers();
اکنون متغیر users حاوی اطلاعات درون جدول users است، برای مشاهده نتیجه بازگشتی که درون متغیر result است متغیر result را یک بار var_dump میکنیم.
var_dump($users);
خروجی که برای ما برگردانده است یک object است که به راحتی میتوانیم از مقادیر درونش استفاده کنیم.
تا الان که توانستهایم اطلاعات را به خوبی از دیتابیس دریافت کنیم و در قالب یک object داشته باشیم حال باید برای نمایش نتایج، به آن یک قالب مناسب بدهیم. برای این کار ما باید سراغ فایل index.php برویم تا نتایج را درون html صفحه نشان دهیم.
برای اینکه در وقتتان صرفه جویی شود از کدهای html و css زیر برای قالب دهی استفاده کنید.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>دریافت اطلاعات از دیتابیس</title>
<style>
.container {
margin: 10px auto;
width: 80%;
}
.post {
border: 1px solid #eee;
width: 25%;
padding: 10px 26px;
text-align: center;
display: inline-block;
margin: 6px;
}
span {
background-color: #eee;
padding: 4px;
border-radius: 4px;
}
email {
background-color: cornflowerblue;
color: white;
padding: 4px;
border-radius: 5px;
}
h3 {
background-color: palevioletred;
padding: 6px;
color: white;
}
</style>
</head>
<body>
<div class="container">
<div class="post">
<h3>username</h3>
<email>email@gmai.com</email>
<span>12</span>
</div>
</div>
</body>
</html>
برای اینکه از نتایج درون متغیر users در فایل process.php استفاده کنیم باید آن را در فایل کنونی که همان index.php است include کنیم. در بالاییترین قسمت فایل index.php کد زیر را قرار دهید.
<?php include 'process.php'; ?>
کد بالا فایل process.php را include میکند.
اکنون میتوانیم با حلقهی foreach نتایج را در قالب موجود درون سند html قرار دهیم، کد زیر که درون فایل index.php است و درون یک div با کلاس container میباشد را در نظر بگیرید.
<div class="post">
<h3>username</h3>
<email>email@gmai.com</email>
<span>12</span>
</div>
باید بلاک div بالا را درون حلقه قرار دهیم تا این بلاک به تعداد نتایج برگردانده شده تکرار شود تا مقادیر قرار داده شود.
<?php foreach ($users as $user) : ?>
<div class="post">
<h3><?= $user->username ?></h3>
<email><?= $user->email ?></email>
<span><?= $user->age ?></span>
</div>
<?php endforeach; ?>
در کد بالا برای اینکه بتوانیم از حلقه استفاده کنیم از تگ php استفاده کردهایم و در آخر تگ div نیز حلقه foreach را بستهایم. از آن جایی که نتایج در قالب object هستند در حلقه foreach به راحتی میتوان بر روی آن پیمایش کرد. در تگ های html درونی مثل h3 ما از تگ <? =?> استفاده کردهایم، این تگ باعث میشود مقدار PHP که درونش قرار میدهیم را چاپ کند، دقیقا مثل echo عمل میکند.
جمعبندی:
در این مقاله ما ابتدا پیش نیاز دریافت اطلاعات از دیتابیس در php را به شما گفتیم و در ادامه نحوهی اتصال به دیتابیس در PHP را به شما توضیح دادیم، و سپس تابع دريافت اطلاعات از ديتابيس در PHP را پیاده سازی کردیم و در نهایت نحوهی نمایش اطلاعات دریافت شده از دیتابیس در PHP را به شما آموزش دادیم. امیدواریم که این مقاله برای شما مفید بوده و از خواندن آن لذت برده باشید. اگر در مورد این مقاله سوال یا نظری داشتید خوشحال میشویم که در بخش نظرات با ما و کاربران سون لرن به اشتراک بگذارید.
اگر به یادگیری بیشتر در زمینهی PHP علاقه داری، شرکت در دورهی آموزشPHP را پیشنهاد میکنیم، با شرکت در این دوره، در کمتر از یک سال به یک متخصص PHP تبدیل میشوی که آمادهی استخدام، دریافت پروژه، کسب درآمد و یادگیری مباحثی مثل لاراول هستی.
اتصال به دیتابیس در PHP
در ابتدای کار ما باید بتوانیم به دیتابیس متصل بشویم تا اطلاعات درون دیتابیس را استخراج کنیم، برای اینکار ما باید ابتدا درون فایل process.php کدهای مربوط به اتصال به دیتابیس را بنویسیم.
درون فایل config.php