توانایی خود را افزایش دهیم

فرهنگ و هنر
توانایی خود را افزایش دهیم

بسم الله الرحمن الرحیم

با سلام

• لطفا مطالب سایت را به صورت منظم پیگیری کنید
• ارائه پیشنهادات و نظرات شما باعث بهبود کیفیت ارائه مطالب خواهد شد

بعضی از مطالب آموزشی سایت توسط اینجانب نوشته نشده و صرفا جهت مطالعه دوستان از منابع دیگری جمع آوری شده است
چنانچه در مطالب موضوعی ملاحظه شد که از نظر علمی ، اعتقادی ، سیاسی ، مذهبی و ... دارای مشکل بود حتما در قسمت نظرات ذکر بفرمایید تا اصلاح گردد.
با تشکر
موفق باشید

طبقه بندی موضوعی
آخرین نظرات

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

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

 

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

 

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

دستوراتی که در پرسوجو استفاده می شوند همان دستورات زبان SQL، که زبان برنامه نویسی پایگاه داده ها است، هستند. در درس قبلی با یکی از این دستورها آشنا شدیم، اگر یادتان باشد به ترتیب زیر بود:

$query = "INSERT INTO users (first_name, last_name, username, password, email, register_date) VALUES ('$fn', '$ln', '$un', SHA1('$pass'),'$e',  NOW() )"; //  نوشتن درخواست و گذاشتن در متغیر

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

حال که داده ها در پایگاه قرار دارند، باید پرسوجو برای دریافت آنها آماده کرد؛ این پرسوجو از دستوری به شکل زیر استفاده می کند:

SELECT نام ستون ها FROM نام جدول 
SELECT  *  FROM  نام جدول 

*: منظور از این علامت انتخاب همه ستون ها است.

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

 

دریافت داده ها از پایگاه
پوشه DatabaseConnecion که در درس قبلی درست کردیم را باز کنید. فایل جدیدی به نام view.php در آن بسازید و کدهای زیر را در داخل آن وارد کنید:

<?php
$page_title = 'نمایش داده ها';
include ('includes/header.html');
echo '<h1> داده ها  </h1>';
require_once ('db_connection.php'); // ارتباط با پایگاه
// نوشتن پرسوجو
$q = "SELECT * FROM users ORDER BY register_date ASC";
$r = @mysqli_query ($dbc, $q); // اجرای پرسوجو
// شمارش تعداد دریافتی ها
$num = mysqli_num_rows($r);
if ($num > 0) { // اگر دریافتی وجود داشت
      // چاپ تعداد کاربرها
      echo "<p> در حال حاضر  کاربر $num وجود دارد </p> ";
      echo '<div id="view">';
      // سربرگ جدول
      echo '<div id="table-header">
      <div class="table-header"> نام </div>
      <div class="table-header">  نام خانوادگی </div>
      <div class="table-header"> نام کاربری </div>
      <div class="table-header"> رایانامه </div>
      <div class="table-header"> تاریخ ثبت نام </div>
      </div>';
      // دریافت و چاپ همه رکوردها
      echo '<div id="table-record">';
      while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
                  echo '<div class="table-record">' . $row['first_name'] . '</div>' ;
                  echo '<div class="table-record">' . $row['last_name'] . '</div>' ;
                  echo '<div class="table-record">' . $row['username'] . '</div>' ;
                  echo '<div class="table-record">' . $row['email'] . '</div>' ;
                  echo '<div class="table-record">' . $row['register_date'] . '</div>' ;
      }
      echo '</div>'; // پایان رکوردها
      echo '</div>'; // پایان جدول
      mysqli_free_result ($r); // آزادسازی منابع
} else { // اگر رکوردی نبود
                  echo '<p class="error"> در حال حاضر کوئری ای وجود ندارد </p>'; }
mysqli_close($dbc); // بستن ارتباط با پایگاه
include ('includes/footer.html');
?>

توضیح کدها
مطابق برگه ثبت نام این برگه هم با نام برگه، وارد کردن سربرگ و ارتباط با پایگاه آغاز می شود. در بخش بعد، پرسوجو برای دریافت داده ها از پایگاه، درون یک متغیر قرار می گیرد:

$q = "SELECT * FROM users ORDER BY register_date ASC";

این دستور SQL تمام رکوردهای جدول را انتخاب و بعد براساس تاریخ ثبت نام مرتب می کند:

ORDER BY register_date ASC

این قسمت که در انتهای دستور آمده می گوید که: داده ها را برحسب تاریخ ثبت نام به صورت ascending (صعودی) مرتب کن. برای مرتب سازی به صورت descending (نزولی) کافی است که جای ASC را با DESC تغییر دهید. با این عمل کار مرتب سازی از همان پایگاه انجام می شود.

$r = @mysqli_query ($dbc, $q); // اجرای پرسوجو

این خط اجرای دستور پرسوجو را انجام می دهد که حامل دو پارامتر است: نشانگر پایگاه و متغیر شامل دستور پرسوجو. خروجی دستور در متغیر $r ذخیره می شود.

// شمارش تعداد دریافتی ها
$num = mysqli_num_rows($r);

در این خط کد، با استفاده از تابع mysqli_num_rows، تعداد رکوردهای ثبت شده در پایگاه را در داخل یک متغیر به نام $num می ریزیم.

if ($num > 0) { // اگر دریافتی وجود داشت
     // چاپ تعداد کاربرها
     echo "<p> در حال حاضر  کاربر $num وجود دارد </p> ";

این شرط بررسی می کند که آیا متغیر $num دارای مقدار هست یا نه؟ اگر این متغیر دارای مقدار باشد، این یعنی پایگاه دارای داده های ثبت شده است چرا که در قسمت قبل تعداد این رکوردها شمرده شده و در این متغیر ذخیره گشته است. با درست بودن این شرط، برنامه به داخل بلوک شرط وارد می شود و ابتدا تعداد رکوردها را چاپ می کند.

echo '<div id="view">';
     // سربرگ جدول
     echo '<div id="table-header">
     <div class="table-header"> نام </div>
     <div class="table-header">  نام خانوادگی </div>
     <div class="table-header"> نام کاربری </div>
     <div class="table-header"> رایانامه </div>
     <div class="table-header"> تاریخ ثبت نام </div>
     </div>';
     // دریافت و چاپ همه رکوردها
     echo '<div id="table-record">';
     while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
          echo '<div class="table-record">' . $row['first_name'] . '</div>' ;
          echo '<div class="table-record">' . $row['last_name'] . '</div>' ;
          echo '<div class="table-record">' . $row['username'] . '</div>' ;
          echo '<div class="table-record">' . $row['email'] . '</div>' ;
          echo '<div class="table-record">' . $row['register_date'] . '</div>' ;
     }
     echo '</div>'; // پایان رکوردها
     echo '</div>'; // پایان جدول

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

mysqli_free_result ($r); // آزادسازی منابع

در این قسمت در پایان نمایش همه رکوردها، از این تابع استفاده می کنیم تا متغیر $r را که قسمتی از حافظه را در اختیار گرفته آزاد کنیم. با این عمل با توجه به عدم نیاز ما به این متغیر، فضای گرفته شده از حافظه رایانه آزاد می شود.

} else { // اگر رکوردی نبود
echo '<p class="error"> در حال حاضر کاربری وجود ندارد </p>';
}

قسمت else برای شرط اینجا آغاز می شود؛ در صورتی که شرط درست نباشد این به این معنی است که رکوردی در پایگاه نیست و پیغام عدم وجود داده چاپ می شود.

mysqli_close($dbc); // بستن ارتباط با پایگاه
include ('includes/footer.html');
?>

قسمت پایانی، بستن ارتباط با پایگاه و وارد کردن پایین برگ است.

وظیفه برگه view.php ارتباط با پایگاه و دریافت داده ها و در نهایت چاپ آنها است. برای نمایش این برگه باید یک تغییر جزئی هم به فایل header.html بدهیم تا دکمه پیوند به این برگه در سربرگ نمایان شود.

 

ایجاد تغییرات در سربرگ
فایل سربرگ یا همان header.html که در پوشه includes قرار دارد را باز کنید. به قسمت نمایش دهند ناوبری رفته و تکه کد زیر را در آن وارد کنید.

<li><a href="view.php">  نمایش داده ها </a></li>

بعد از وارد کردن این تکه کد، قسمت ناوبری باید به شکل زیر در آید:

<div id="navigation">
<ul>
<li><a href="index.php"> خانه</a></li>
<li><a href="register.php">  ثبت نام </a></li>
<li><a href="view.php">  نمایش دادهها </a></li>
</ul>
</div>

حال مرورگر خود را دوباره بارگذاری کنید تا این دکمه پدیدار گردد. خروجی آن می شود:

 

تغییرات در فایل style.css
با اضافه شدن این برگه و نیاز به نمایش داده ها در آن باید یکسری کد سی اس اس به فایل آن اضافه کنیم:

/*      قسمت نمایش داده ها  */
#view{border:0px solid #ddd; overflow:hidden; width:90%; margin:auto;}
#table-header{ overflow:hidden; width:100%; margin:auto; background-color:#f1f1f1;}
.table-header{border-right:1px solid #ccc;float:right; width:18.8%; height:30px;padding:0 1% 0 0; line-height:2em; }
#table-record{ overflow:hidden; width:100%; margin:auto;}
.table-record{border-right:1px solid #ddd;float:right; width:18.8%; height:25px;padding:0 1% 0 0; background-color:#f9f9f9;line-height:2em;}

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

حال برای امتحان درستی کدها و نحوه نمایش داده ها به برگه ثبت نام در تارنما رفته و فرم را پر کنید:

دکمه ارسال را زده تا پیغام موفقیت را ببینید.

حال پس از دریافت این پیغام با فشردن دکمه نمایش داده ها به قسمت نمایش بروید. شما باید جدولی که شامل کاربر ثبت نام شده است را مشاهده کنید:

همان طور که مشاهده می کنید در خط ابتدایی، تعداد کاربران ثبت نام کرده را نمایش می دهد. در داخل جدول هم اطلاعات این کاربران به صورت یک جدول نمایان می شود.

برای مشاهده این اطلاعات می توانید مستقیما به پایگاه داده های خود رجوع کنید. کافی است که در محل نشانی مرورگر خود آدرسhttp://localhost/phpmyadmin/ را وارد کنید. بعد از وارد شدن به پایگاه باید ابتدا نام پایگاه داده ها که ساخته اید را انتخاب و سپس نام جدول خود را که در اینجا  users است را برگزینید.

برای مشاهده ساختار جدول بر روی گزینه Structure در بالای صفحه کلیک کنید و برای دیدن داده های ثبت شده در جدول بر روی گزینه کناری آن با نام Browse  کلیک کنید.

همان طور که می بینید phpMyAdmin قابلیت های بسیاری را برای شما ارائه می کند. به طور مثال شما می توانید یک رکورد را ویرایش، رونویسی  و یا پاک کنید. البته استفاده از این قابلیت برای شرایط خاصی مفید است اما اینکه بتوانیم داده ها را تغییر و یا پاک کنیم باید چیزی باشد که توسط دستورات SQL و از طریق پی اچ پی انجام گیرد.

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

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

موافقین ۰ مخالفین ۰ ۹۳/۰۴/۱۹

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

کاربران بیان میتوانند بدون نیاز به تأیید، نظرات خود را ارسال کنند.
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی