پرش به محتوای اصلی
علوم داده

دريافت اطلاعات از ديتابيس در PHP

امیر صالحی امیر صالحی — دقیقه مطالعه ۶۱,۲۵۰ بازدید
دريافت اطلاعات از ديتابيس در PHP

در این مقاله قصد داریم تا به شما نحوه ی دريافت اطلاعات از ديتابيس در PHP و نمایش اطلاعات دیتابیس در php را آموزش دهیم. اگر مبتدی هستید و نمی دانید که چگونه این عملیات را انجام دهید یا اگر نمی دانید که روش صحیح انجام این عملیات چگونه است پس با ما همراه باشید تا به شما راه و روش این کار را نشان دهیم.

[title]پیش نیازها[/title]

پیش نیاز این آموزش این است که شما ابتدا به دلخواه درون دیتابیس یک جدول با نام دلخواه ایجاد کنید و چندین فیلد به آن اضافه کنید و بعد از آن یک سری اطلاعات و یا مقادیر دلخواه درون جدول خود قرار دهید تا جدول شما حاوی اطلاعات باشد و بتوانیم اطلاعات را از درون دیتابیس استخراج کنیم.

اما اگر می خواهید که با ما پیش بروید، پس یک دیتابیس به نام myProject ایجاد کنید و یک جدول با اسم users درون آن دیتابیس بسازید. بعد از انجام این دو مورد چهار ستون با نام های id, username, email, age اضافه کنید و درون این جدول شروع به وارد کردن داده دلخواه کنید.

پیش نیاز بعدی این است که شما سه فایل با نام های config.php، process.php، index.php داشته باشید تا پروژه ی کوچک خودمان را پیاده سازی کنیم، در ادامه خواهیم گفت که در این سه فایل چه کارهایی قرار است انجام بدهیم.

[title]فایل های پروژه چه هستند؟[/title]

در بالا اشاره کردیم که قرار است سه فایل با نام های config.php، process.php، index.php داشته باشیم، اما قرار است این سه فایل شامل چه اطلاعاتی باشند؟

در فایل config.php ما کدهای مربوط به اتصال به دیتابیس را قرار می دهیم تا به راحتی قابل دسترس باشند و از بقیه ی کدهای پروژه جدا باشند.

در فایل process.php قرار است که ما کدهای مربوط به دریافت اطلاعات از دیتابیس را بنویسیم و در نهایت در فایل index.php ما اطلاعات دریافت شده از دیتابیس را به شکل مناسب به نمایش می گذاریم.

دریافت اطلاعات از دیتابیس در PHP

[title]اتصال به دیتابیس در PHP[/title]

در ابتدای کار ما باید بتوانیم به دیتابیس متصل بشویم تا اطلاعات درون دیتابیس را استخراج کنیم، برای این کار ما باید ابتدا درون فایل 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 اجرا می شود که خطا را چاپ و برنامه را متوقف می کند.

[title]دریافت اطلاعات از دیتابیس در PHP[/title]

در فایل 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 به ما بدهد.

دریافت اطلاعات از دیتابیس در PHP [title]تابع دريافت اطلاعات از ديتابيس در PHP[/title]

تا به الان که ما تابع دریافت اطلاعات از دیتابیس را نوشته ایم به راحتی می توانیم اطلاعات موجود درون جدول users را داشته باشیم، برای اینکه از صحت کار کردن این تابع مطمئن شویم درون فایل process.php تابع را صدا می زنیم و نتایج را درون یک متغیر قرار می دهیم تا بتوانیم نتایج را چاپ و مشاهده کنیم. توجه داشته باشید که حتما درون جدول users مقادیر دلخواه را وارد کنید تا تابع چیزی برای برگرداندن نتیجه داشته باشد.

کد زیر را در پایین کدهای فایل process.php قرار دهید.

$users = getAllUsers();

اکنون متغیر users حاوی اطلاعات درون جدول users است، برای مشاهده نتیجه بازگشتی که درون متغیر result است متغیر result را یک بار var_dump می کنیم.

var_dump($users);

array(2) {

  [0]=>

  object(stdClass)#3 (4) {

    ["id"]=>

    string(1) "1"

    ["username"]=>

    string(4) "amir"

    ["email"]=>

    string(6) "salehi@gmail.com"

    ["age"]=>

    string(2) "18"

  }

  [1]=>

  object(stdClass)#4 (4) {

    ["id"]=>

    string(1) "2"

    ["username"]=>

    string(5) "ayoub"

    ["email"]=>

    string(10) "nazarzadeh@gmai.com"

    ["age"]=>

    string(2) "60"

  }

}

خروجی که برای ما برگردانده است یک object است که به راحتی می توانیم از مقادیر درونش استفاده کنیم. [title]نمایش اطلاعات دریافت شده از دیتابیس در PHP [/title]

تا الان که توانسته ایم اطلاعات را به خوبی از دیتابیس دریافت کنیم و در قالب یک 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 تبدیل می شوی که آماده ی استخدام، دریافت پروژه، کسب درآمد و یادگیری مباحثی مثل لاراول هستی.

اشتراک‌گذاری:
۵۲ دیدگاه
امیر صالحی
نویسنده امیر صالحی
۵

دیدگاه‌ها

۱۷ نفر تجربه‌شان را نوشته‌اند.

A
AMiN ۱۳۹۱/۵/۱۵

درود
مطلب خوبی بود، سپاس
تارنمای بسیار خوبی دارید . به امید موفقیت شما .

س
سامان ۱۳۹۱/۵/۱۵

سلام رفیق!.
کار نمیده این کدا. خودت امتحانشون کردی!؟؟!
هر چی سعی کردم نشد.!

m
mch@ ۱۳۹۱/۵/۱۵

خواهش مي كنم :smile:
موئد باشيد :oops:

س
سامان ۱۳۹۱/۵/۱۷

سلام رفیق!.
کار نمیده این کدا. خودت امتحانشون کردی!؟؟!
هر چی سعی کردم نشد.!

ل
لقمان آوند ۱۳۹۱/۵/۱۷

سلام
امتحان شدن . چه اروری می گیری ؟

m
mch@ ۱۳۹۱/۵/۱۷

سلام
بله همه تست شدن
من نوشتم تو پست هم و گفتم در صورت مشاهده ي خطا،خطا رو بنويسيد كه چيه!
در ضمن شما پروژه قبلو بخونيد تا بهتر متوجه اين يكي بشيد

س
سجاد دریس ۱۳۹۱/۵/۱۷

ممنون امین جان :wink: حل شد

s
sasha201059 ۱۳۹۱/۹/۱۲

:oops: :oops:
بسیار سپاسگذار
موفق و موید باشید

ح
حسن ۱۳۹۱/۹/۱۸

سلام ببخشید با این روش باز خانی تمام اطلاعت نشون داده میشن . من میخوام داخل سایتم وقتی یه کاربر رو مسدود میکنم و وقتی اون میخوام وارد بشه رو حالت پیش فرض که خود اسکریپت این امان رو داره مینویسه ایمیل شما توسط یکی از مدیران مسدود شده . من میخوام اونجا دلیل مسدودیت رو بذارم میشه راهنمایی کنید لطفا تیبل مربوط به کاربران اسمش users هست . ممنون میشم یکم راهنمایی کنید .

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

ل
لقمان آوند ۱۳۹۱/۹/۱۸

سلام
می تونی یه سون به جدول یوزرهای اضافه کنی به عنوان دلیل مسدود شدن و در صورتی که یوزری مسدود بود مقدار ستونه رو بهش نشون بدی . با این روش برای هر کاربر می تونی دلیل مختلفی داشته باشی .

ح
حسن ۱۳۹۱/۹/۱۸

اگه میتونستم که خیلی خوب میشد :lol:

ح
حبیب ۱۳۹۱/۱۰/۲۲

سلام چطور میشه شرطی کرد که مثلا یک چیزی قرار داد و اونو شرط رو از فرم گرفت برای ساخت مثلا دیکشنری

ل
لقمان آوند ۱۳۹۱/۱۰/۲۲

لطفا واضحتر و دقیقتر بگید منظورتون چی هست ؟

h
ho3eintt ۱۳۹۲/۲/۹

به من این ارور رو میده

Warning: mysql_fetch_assoc() expects at least 1 parameter, 0 given in C:\xampp\htdocs\a\get.php on line 14

خط 14 هم اینه

while($amch=mysql_fetch_assoc($dbresult))

ا
امید ۱۳۹۲/۴/۱۲

سلام
1- اگر بخوام اطّلاعاتی که دریافت کردم رو در یک جدول که ردیف اوّلش توضیح ستون باشه و از ردیف دوم اطّلاعات دریافتی از دیتابیس رو نمایش بده ،چطوری باید کار کنم ؟
2- اگر فایل هایی رو (مثلاً همین دو پروژه) توی هاستم بریزم و برای ثبت اطّلاعات و دیدن اطّلاعات کاربرانم استفاده کنم ؛در این صورت اگر فردی آدرس فایل get رو بزنه میتونه تمام اطّلاعات رو نگاه کنه. امّا من میخوام که این اطّلاعات فقط به من نمایش داده بشه :
- چطوری برای فایل پسورد بذارم ؟
- میتونم فایل get رو در قسمت مدیریت وردپرس فراخوانی کنم تا مدیر بعد از ورود بتونه اون رو نگاه کنه ؟
ممنون میشم راهنماییم کنید.
با تشکّر از آموزش هاتون

ک
کیوان علی محمدی ۱۳۹۲/۴/۲۳

سلام می تونی از عنصر جدول برای نمایش اطلاعات استفاده کنی،برای عنوان هر ستون هم فقط کافیه یک سطر (البته با TH) رو خارج از حلقه دریافت اطلاعات بذاری،
برای گذاشتن کلمه عبور برای فایل هم می تونی از GET استفاده کنی و با یه شرط چک کنی که اگه GET ست شده و مقدارش هم برابر کلمه عبور مد نظر شماست اونوقت اطلاعات رو نمایش بده.
برای این کار شما نیاز به طراحی پلاگین و ابزارک برای قسمت مدیریت در وردپرس دارین.

m
mch@ ۱۳۹۲/۴/۲۲

شما احتمالا کوئری را دست کاری کردین