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

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

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

با سلام

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

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

طبقه بندی موضوعی
آخرین نظرات
  • ۲۱ خرداد ۹۶، ۲۲:۰۲ - مهدی
    سپاس
پنجشنبه, ۲۶ تیر ۱۳۹۳، ۰۶:۱۸ ب.ظ

درس چهاردهم- ویرایش داده ها

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

 

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

برای این درس باید برگه دیگری با نام edit.php بسازیم و همانند درس قبل پیوند آن را در داخل برگه کاربران قرار دهیم.

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

<?php
$page_title = ' ویرایش کاربران';
include ('includes/header.html');
echo '<h1>ویرایش کاربر  </h1>';
// بررسی شماره شناسه کاربری 
if ( (isset($_GET['id'])) && (is_numeric($_GET['id'])) ) { 
     $id = $_GET['id'];
} elseif ( (isset($_POST['id'])) && (is_numeric($_POST['id'])) ) { 
     $id = $_POST['id'];
} else { 
     echo '<p class="error"> این برگه به اشتباه باز شده </p>';
     include ('includes/footer.html'); 
     exit();
}
require_once ('db_connection.php'); 
// بررسی ارسال فرم
if (isset($_POST['submitted'])) {
     $errors = array();
     if (empty($_POST['first_name'])) {
          $errors[] = 'نام خود را فراموش کرده اید';
     } else {
          $fn = mysqli_real_escape_string($dbc, trim($_POST['first_name']));
     }
     if (empty($_POST['last_name'])) {
          $errors[] = ' نام خانوادگی فراموش شده است ';
     } else {
          $ln = mysqli_real_escape_string($dbc, trim($_POST['last_name']));
     }
     if (empty($_POST['email'])) {
          $errors[] = ' رایانامه نوشته نشده است  ';
     } else {
          $e = mysqli_real_escape_string($dbc, trim($_POST['email']));
     }
     if (empty($errors)) { 
          //  آزمایش منحصر بودن رایانامه
          $q = "SELECT ID FROM users WHERE email='$e' AND ID != $id";
          $r = @mysqli_query($dbc, $q);
          if (mysqli_num_rows($r) == 0) {
          $q = "UPDATE users SET first_name='$fn', last_name='$ln', email='$e' WHERE ID=$id LIMIT 1";
          $r = @mysqli_query ($dbc, $q);
          if (mysqli_affected_rows($dbc) == 1) { // If it ran OK.
               echo '<p> ویرایش انجام شد </p>';
          } else { 
               echo '<p class="error"> خطای سیستمی! ویرایش انجام نشد </p>'; 
               echo '<p>' . mysqli_error($dbc) . '<br /> ' . $q . ' پرسوجو </p>'; 
          }
     } else { // قبلا با این رایانامه ثبت نام شده است.
               echo '<p class="error"> این رایانامه قبلا ثبت شده است.</p>';
          }

     } else { // Report the errors.
               echo '<p class="error"> خطاهای زیر انجام شده است. <br />';
               foreach ($errors as $msg) { // Print each error.
                    echo " $msg - <br /> ";
               }
               echo '</p>';
     

// گرفتن اطلاعات کاربر
$q = "SELECT first_name, last_name, email FROM users WHERE ID = $id";
$r = @mysqli_query ($dbc, $q);
if (mysqli_num_rows($r) == 1) { 
     $row = mysqli_fetch_array ($r, MYSQLI_NUM);
     echo '<form action="edit.php" method="post">
<label>نام</label><input type="text" name="first_name" value="' . $row[0] . '" /
<label>نام خانوادگی </label><input type="text" name="last_name" value="' . $row[1] . '" />
<label>رایانامه  </label><input type="text" name="email" value="' . $row[2] . '"  /> 
<p><input type="submit" name="submit" value="ارسال" class="submit" /></p>
<input type="hidden" name="submitted" value="TRUE" />
<input type="hidden" name="id"  value="' . $id . '" />
</form>';
} else { 
     echo '<p class="error"> این برگه به خطا باز شده است.</p>';
}
mysqli_close($dbc);
include ('includes/footer.html');
?>

قبل از اینکه به شرح کد بپردازیم ابتدا مراحل تغییرات در دیگر فایل هایی که با این برگه ارتباط دارند را شرح می دهیم.

 

تغییرات در برگه کاربران view.php
تغییری که باید صورت بپذیرد این است که در داخل جدول نمایش اطلاعات کاربران، یک گزینه دیگر اضافه شود؛ این گزینه در اصل پیوند به برگه «ویرایش» خواهد بود. در زیر دو تغییر را که یکی در تیتر جدول و دیگری اطلاعات کاربران است می آوریم:

<div class="table-header"> نام </div>
<div class="table-header">  نام خانوادگی </div>
<div class="table-header"> نام کاربری </div>
<div class="table-header" style="width:17%;"> رایانامه </div>
<div class="table-header"> تاریخ ثبت نام </div>
<div class="table-header"> پاک کردن </div>
<div class="table-header"> ویرایش</div>

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

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" style="width:17%;">' . $row['email'] . '</div>' ;
echo '<div class="table-record">' . $row['register_date'] . '</div>' ;
echo '<div class="table-record">' . '<a href="delete.php?id=' . $row['ID']. '">  پاک کردن </a>' . '</div>' ;
echo '<div class="table-record">' . '<a href="edit.php?id=' . $row['ID']. '">  ویرایش </a>' . '</div>' ;

همانطور که از کدها پیداست خط آخر مربوط به برگه «ویرایش» است. در این مرحله هم مانند درس قبلی پیوندی به فایل edit.php داده شده است که همراه این پیوند شماره کاربر فرستاده می شود.

 

تغییر در فایل 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:12.49%; 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:12.49%; height:25px;padding:0 1% 0 0; background-color:#f9f9f9;line-height:2em;}
/*  برگه پاک کردن      */
#delete{border:0px solid #ddd; overflow: hidden; margin:5px auto 10px auto;}
#delete input, #delete label{border:0px solid #ddd;clear:none;width:20px; margin: auto 5px auto 5px;}

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

بعد از انجام این تغییرها اگر بر روی پیوند «ویرایش» که در برگه کاربران اضافه کرده ایم کلیک کنید، با صفحه زیر مواجه می شوید.

در این برگه سه کادر، در داخل فرم مشاهده می کنید که به طور پیش فرض حاوی اطلاعات کاربری که از برگه کاربران انتخاب کردید، است. در اینجا از تکنیک فرم چسبان (Sticky Form) برای گذاشتن این اطلاعات در فرم استفاده شده است. حال با تغییر هر کدام و فشردن دکمه ارسال، کار بروزرسانی این اطلاعات انجام می گیرد.

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

// بررسی شماره شناسه کاربری
if ( (isset($_GET['id'])) && (is_numeric($_GET['id'])) ) { 
$id = $_GET['id'];
} elseif ( (isset($_POST['id'])) && (is_numeric($_POST['id'])) ) { 
$id = $_POST['id'];
} else {   echo '<p class="error"> این برگه به اشتباه باز شده </p>';
include ('includes/footer.html');  exit(); }

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

// بررسی ارسال فرم
if (isset($_POST['submitted'])) {
     $errors = array();
     if (empty($_POST['first_name'])) {
          $errors[] = 'نام خود را فراموش کرده اید';
     } else {
          $fn = mysqli_real_escape_string($dbc, trim($_POST['first_name']));
     }
     if (empty($_POST['last_name'])) {
          $errors[] = ' نام خانوادگی فراموش شده است ';
     } else {
          $ln = mysqli_real_escape_string($dbc, trim($_POST['last_name']));
     }
     if (empty($_POST['email'])) {
          $errors[] = ' رایانامه نوشته نشده است  ';
     } else {
          $e = mysqli_real_escape_string($dbc, trim($_POST['email']));
     }

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

if (empty($errors)) { 
     //  آزمایش منحصر بودن رایانامه
     $q = "SELECT ID FROM users WHERE email='$e' AND ID != $id";
     $r = @mysqli_query($dbc, $q);
     if (mysqli_num_rows($r) == 0) {
          $q = "UPDATE users SET first_name='$fn', last_name='$ln', email='$e' WHERE ID=$id LIMIT 1";
          $r = @mysqli_query ($dbc, $q);
          if (mysqli_affected_rows($dbc) == 1) { // If it ran OK.
               echo '<p> ویرایش انجام شد </p>';
          } else { 
               echo '<p class="error"> خطای سیستمی! ویرایش انجام نشد </p>'; 
               echo '<p>' . mysqli_error($dbc) . '<br /> ' . $q . ' پرسوجو </p>'; 
          }
     } else { // قبلا با این رایانامه ثبت نام شده است
               echo '<p class="error"> این رایانامه قبلا ثبت شده است</p>';
     }
     } else { // Report the errors.
          echo '<p class="error"> خطاهای زیر انجام شده است <br />';
          foreach ($errors as $msg) { // Print each error.
               echo " $msg - <br /> ";
          }
          echo '</p>';
     }

در صورت پر بودن کادرهای فرم، متغیرهایی که این داده ها در آنها ذخیره می شوند، به همراه دستوری از SQL، محتوای خود را در داخل پایگاه قرار می دهند.

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

// گرفتن اطلاعات کاربر
$q = "SELECT first_name, last_name, email FROM users WHERE ID = $id";
$r = @mysqli_query ($dbc, $q);
if (mysqli_num_rows($r) == 1) { 
     $row = mysqli_fetch_array ($r, MYSQLI_NUM);
     echo '<form action="edit.php" method="post">
<label>نام</label><input type="text" name="first_name" value="' . $row[0] . '" />
<label>نام خانوادگی </label><input type="text" name="last_name" value="' . $row[1] . '" />
<label>رایانامه  </label><input type="text" name="email" value="' . $row[2] . '"  /> 
<p><input type="submit" name="submit" value="ارسال" class="submit" /></p>
<input type="hidden" name="submitted" value="TRUE" />
<input type="hidden" name="id"  value="' . $id . '" />
</form>';
} else { 
     echo '<p class="error"> این برگه به خطا باز شده است</p>';
}
mysqli_close($dbc);
include ('includes/footer.html');

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

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

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

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

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

نظرات  (۰)

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

ارسال نظر

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