آموزش کامل PHP – قسمت 16: خواندن داده ها از بانک

در این جلسه از سری آموزش های php با پردیس وردپرس به آموزش خواندن داده ها از بانک اطلاعاتی می پردازیم. خواندن اطلاعات از بانک برای نمایش آن ها به کاربر یا انجام بعضی عملیات دیگر انجام می شود.

خواندن داده ها از mysql

در ادامه پروژه cms که در جلسات قبل ساختیم، در پوشه cms در فایل index.php کد های زیر را قرار دهید.

<!DOCTYPE html>
<html dir="rtl" lang="fa-IR">
<head>
<title>صفحه اصلی</title>
<meta charset="utf-8" />
</head>
<body style="font-family: tahoma; font-size:14px;">
<center>
<?php
include ("config.php");
//select all records from posts table
$get_query = mysql_query("SELECT * FROM `posts`");
//now using while for get each record sepratly and show it to web browser
while ($fetch_result = mysql_fetch_array($get_query))
{
$postTitle = $fetch_result['title'];
$postText = $fetch_result['text'];
echo "<h2>$postTitle</h2>";
echo "<p>$postText</p><hr>";
}
?>
</center>
</body>
</html>

از این صفحه برای نمایش اطلاعات استفاده می کنیم. در واقع با استفاده از دستورات فوق اطلاعات ثبت شده در جدول posts که در بانکمان ساختیم را خوانده و در صفحه مرورگر نمایش داده ایم. همانطور که در کد فوق می بینید ابتدا با دستور include فایل اتصال به بانک اطلاعاتی و انتخاب جدول را فراخوانی می کنیم. حال می توانیم به جدول مورد نظر کوئری زده و با دستور select جدول و فیلد های مورد نظرمان را انتخاب کنیم. خروجی این دستور را در یک آرایه به نام get_query ذخیره می کنیم.

نکته: در دستور select نام فیلد هایی که قصد انتخاب آن ها را داریم در مقابل دستور می نویسیم و با کاما از هم جدا می کنیم. اگر بخواهیم تمام فیلد های جدول را فراخوانی کنیم از ستاره استفاده می کنیم.

سپس با استفاده از حلقه while تا زمانی که در جدول رکورد وجود دارد آن ها را گرفته و نمایش می دهیم. در شرط حلقه تابع mysql_fetch_array را در یک آرایه دیگر به نام fetch_results ذخیره می‌کنیم. این شرط باعث می‌شود تا حلقه به تعداد رکوردهایی (مطالبی) که در جدول posts وجود دارد تکرار شود. در هر بار تکرار شدن این حلقه اطلاعات فیلدهای مختلف هر رکورد در آرایه fetch_results ذخیره می‌شود. برای دسترسی به اطلاعات هر فیلد از هر رکورد باید نام آن فیلد را در کروشه جلوی آرایه fetch_results بنویسیم. همانطور که در کد بالا می‌بینید ما فیلد‌های title و text را فراخوانی کرده‌ایم.

اگر این کد برای شما مبهم است اصلا جای نگرانی نیست چراکه اکثر برنامه نویسان پی‌اچ‌پی برای فراخوانی چند رکورد از بانک‌های اطلاعاتی mysql از همین روش یا روش‌های مشابه دیگر بهره می‌برند. در ادامه آموزش‌ها با روش‌های دیگر نیز آشنا خواهید شد. باید عملیات فراخوانی اطلاعات از جداول بانک‌های اطلاعاتی را تمرین و تکرار کنید.

حالا آدرس http://127.0.0.1/cms/index.php را در مرورگر اجرا کنید خواهید دید که کاراکترها همگی به صورت علامت سوال نمایش می‌یابند. اگر خاطرتان باشد نوع یونیکد فیلدهای جداول بانک اطلاعاتی را از نوع utf-8 تعیین کردیم تا بتوانیم متون فارسی را در جدول posts ذخیره کنیم. این مشکل به دلیل نوع اتصال به بانک اطلاعاتی رخ داده و برای رفع آن باید فایل config.php را کمی ویرایش کنید. در واقع باید نوع اتصال را هم utf-8 تعیین کنیم. فایل config.php را باز کنید و آن را به صورت زیر تغییر دهید.

<?php
$dbhost = "localhost";
$dbuser = "root";
$dbname = "cms";
$dbpass = "";
$connect_db = mysql_connect ($dbhost, $dbuser, $dbpass);
mysql_set_charset('utf8',$connect_db);
mysql_select_db($dbname,$connect_db);
?>

در خط ۷ کد بالا از تابع mysql_set_charset استفاده کرده‌ایم که پس از اتصال به بانک داده و پیش از انتخاب جدول مورد نظر، باید این کد را استفاده کنید. این تابع دو آرگومان ورودی دارد که ورودی اول نوع یونیکد مورد نظر برای اتصال به سرور MySQL و ورودی دوم لینک تابع اتصال به بانک داده خواهد بود.