پرش به


تصویر

آموزش ثبت در دیتابیس از فایل EXCEL با PHP

دیتابیس PHP اکسل excel xlsx xls csv اضافه کردن به دیتابیس ثبت در دیتابیس

  • لطفا وارد حساب کاربری خود شوید تا بتوانید پاسخ دهید
بدون پاسخ

#1 Bahram

Bahram

    کاربر جدید

  • اعضاء
  • 1 ارسال

ارسالی 22 June 2018 - 12:40 PM

سلام و خسته نباشید خدمت دانشجویان عزیز
 
 
 
در این آموزش یاد میگیرید که چطوری از یه فایل EXCEL اطلاعات رو به دیتابیس خودتون اضافه کنید .
 
نکته : بهتره برای این آموزش از قبل با PHP آشنایی داشته باشید . منم هر خط رو توضیح میدم .
 
نکته 2 : از قبل نیاز هست که نرم افزار Xampp رو روی سیستم خودتون نصب کنید و استارت کنید .
 
مرحله اول :
 
 
من در این آموزش هم ایجاد جداول رو به صورت دستی در مرحله اول توضیح میدم و هم در مرحله دوم در کد نویسی با PHP هم دیتابیس رو و هم جدول رو ایجاد میکنیم . بهتر هست تا مرحله دوم رو دنبال کنید  .
 
اگر Xampp رو نصب کرده باشید و استارت کرده باشید میتونید با باز کردن آدرس زیر در مرورگر خودتون ( ترجیحا کروم یا فایرفاکس ) میتونی به صفحه مدیریت پایگاه داده ( دیتابیس ) وارد بشید :


http://localhost/phpmyadmin

حالا در عکس زیر دو قسمتی که با کادر قرمز مشخص کردم این امکان رو به شما میده که برای خودتون یگ پایگاه داده ایجاد کنید :
 
 
15296658181.png
 
 
بعد از کلیک کردن روی هرکدوم از اون دو قسمت شما به صفحه زیر میرید ، در کادر مشخص شده میتونید با وارد کردن یک اسم دلخواه ( فارسی نباشه ) با کلیک روی دکمه Create دیتابیس ساخته میشه :
 
15296658202.png
 
حالا که دیتابیس ساخته شد شما به صفحه مدیریت اون دیتابیس هدایت میشید . ( اگر بعدا صفحه بسته شد و اومدید به آدرسی که در اول گفتم و خواستید به این صفحه بیاید از سمت چپ صفحه که یک منو هست میتونید روی اسم دیتابیسی که ساختید کلیک کنید تا به صفحه مدیریت این دیتابیس بیاید )
در این صفحه یک فیلد وجود داره که در اون فیلد اسم جدول ( Table ) خودتون رو وارد کنید و از فیلد دوم هم میتونید تعداد فیلد هایی که میخواید جدولتون داشته باشه رو مشخص کنید .
 
دو تا روش برای جدول هست روش اول شما جدول خودتون رو با استفاده از راهنماییی زیر بسازید :
 
بعد از کلیک روی دکمه GO جدول هم ساخته میشه . حالا در صفحه بعدی باید اسم فیلد های جدول و نوع اون هارو وارد کنید . میتونید طبق عکس زیر تنظیمات رو انجام بدید :
 
15296658203.png
 
 
 
روش دوم برای ساخت جدول :
 
میتونید بعد از اینکه دیتابیس رو ساختید ، در منوی های بالای صفحه Import رو انتخاب کنید و بعد از اون صفحه ایی میاد که  فایل sql ایی که پیوست کردم رو در اون وارد میکنید و ایمپورت میکنید ( اگر نیاز به آموزش تصویری بود بگید تا فیلم بگیرم )
مرحله دوم ( کد نویسی ) :
 
حالا جداول شما ساخته شده و دیتابیس هم آماده هست . کد های ما از دو قسمت تشکیل شده ، یکی کد های HTML و یکی هم کد های PHP .
 
ما برای آپلود فایل میتونیم از PHP و HTML استفاده کنیم . ولی برای اضافه کردن و خواندن فایل اکسل از یک کتابخانه آماده استفاده میکنیم . اصلا روشش سخت نیست و هیچ پیچیدگی خاصی نداره .
 
من کل پروژه رو پیوست میکنم براتون .
 
اینم بگم که برای زیبا سازی فرم و ظاهر سایت از BootStrap استفاده میکنم ، این کتابخانه خیلی کاربردیه و یکسری کلاس های آماده CSS داره که با استفاده از کلاس های آماده ایی که داره میتونید ظاهر سایت خودتون رو زیبا سازی کنید ( این فقط یک توضیح ساده بود که برای آشنایی با Bootstrap هست )
 
در زیر کد هارو خط به خط بررسی میکنم و بعد یکجا هم قرار میدم که کپی کنید :


$conn = mysqli_connect("localhost", "root", "");

دراین خط ارتباط با دیتابیس برقرار شده است .


$sql = "CREATE DATABASE excel";

در این خط یک دستور SQL برای ساخت یک دیتابیس نوشته ایم . ( در اینجا اسم دیتابیس را excel انتخاب کرده ایم )


if (mysqli_query($conn, $sql)) {
    echo "پایگاه داده ایجاد شد <br>";
} else {
    echo "پایگاه داده قبلا ایجاد شده است : " . mysqli_error($conn) . "<br>";
}

در این ابتدا دستور SQL ایی که نوشته بودیم را اجرا کردیم و یک پیام چاپ کرده ایم و در صورتی که دیتابیس مورد نظر موجود باشد پیامی مناسب نمایش می دهد .


mysqli_select_db ( $conn , "excel" );

در این خط با توجه به اینکه ما دیتابیس را ایجاد کردیم با تابع mysqli_select_db دیتابیس را انتخاب می کنیم .


if (!$conn) {
    die("خطا در ارتباط: " . mysqli_connect_error());
}  

در این خط هم چک کرده ایم که آیا ارتباط به درستی برقرار است یا خیر در غیر اینصورت پیام مناسب را چاپ می کند .


$sql = "CREATE TABLE `users` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `fullname` VARCHAR(500) NOT NULL,
  `student_number` VARCHAR(100) NOT NULL,
  `grade` VARCHAR(100) NOT NULL,
  `term` VARCHAR(100) NOT NULL,
  PRIMARY KEY (`id`));";
if(mysqli_query($conn, $sql)){
    echo "جدول با موفقیت ایجاد شد <br>";
} else {
    echo "جدول قبلا ایجاد شده است : " . mysqli_error($conn). "<br>";
}

در چند خط هم ابتدا یک دستور SQL برای ایجاد یک جدول به اسم users نوشته ایم تا  فیلدهای fullname,student_number,grade,term را ایجاد کند و فیلد id را نیز به عنوان کلید اصلی جدول انتخاب کرده است و سپس در خط بعد دستور را اجرا کرده است و بعد پیام مناسب را نمایش داده است و اگر جدول از قبل وجود داشته باشد ، پیام مناسب را نمایش می دهد .


if(isset($_POST["import"]))

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


 $extension = end(explode(".", $_FILES["excel"]["name"]));

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


 $allowed_extension = array("xls", "xlsx", "csv");

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


 if(in_array($extension, $allowed_extension))

خوب همونطور که در بالا گفتم باید چک کنیم که فایل ما اکسل باشه . تابع in_array تابعی هست که میاد مثلا یک کلمه رو در کل آرایه جستجو میکنه ، در اینجا اولین متغیری که درون تابع گذاشتیم اون کلمه هست که باید جستجو بشه و دومین متغیر هم آرایه ما هست که درون اون باید جستجو صورت بگیره .


  $file = $_FILES["excel"]["tmp_name"];

در این خط نام فایل رو درون یک متغیر ذخیره کردیم تا بعدا راحتتر بتونیم استفاده کنیم .


  include('PHPExcel/IOFactory.php');

خوب در این خط هم اومدیم با تابع include فایلی از کتابخونه Excel که گفتم با اون فایل های اکسل رو میخونیم ، فراخوانی کردیم تا بتونید از توابع این کتابخونه استفاده کنیم .


  $objPHPExcel = PHPExcel_IOFactory::load($file);

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


echo "<label class='text-success'>داده های ورودی</label>
     <br />
     <table class='table table-bordered'>";

در این خط اومدیم چند تا کد HTML رو نمایش دادیم ، اون اولی یک لیبل ( Label ) یا عنوان هست و دومی برای رفتن به خط بعدی هست و سومی هم برای شروع یک جدول هست .


  foreach ($objPHPExcel->getWorksheetIterator() as $worksheet)

خوب برای اینکه بتونیم فایل اکسل رو بخونیم باید از یک حلقه استفاده کنیم . این حلقه اومده فایل اکسل رو بر اساس worksheet هایی که داره جداسازی میکنه .


   $highestRow = $worksheet->getHighestRow();

در این خط اومدیم یک متغیر تعریف کردیم و با استفاده از توابع کتابخانه ای که از اون استفاده میکنیم ، آخرین خط فایل اکسل رو میخونیم . این خط برای این هست که بدونیم چند سطر داده داریم .


   for($row=2; $row<=$highestRow; $row++)

خوب در این خط حالا یک حلقه دیگه ایجاد کردیم تا سطر های داده خودمون رو بخونیم . خوب شاید بگید چرا متغیر $row از مقدار 2 شروع کرده ، معمولا توی این نوع از فایل های اکسل که میخوان اضافه کنن ، اون سطر اول اسم فیلد ها هست و از سطر دوم داده ها شروع میشه و برای همین اینجا از سطر دوم شروع کرده به خوندن فایل .


echo "<tr>";

اگر یکم HTML بلد باشید ، میدونید که اینجا اومدیم یک سطر ایجاد کردیم .


    $fullname = mysqli_real_escape_string($connect, $worksheet->getCellByColumnAndRow(0, $row)->getValue());

در این خط از کد اومدیم اول یک متغیر ایجاد کردیم ، تابع mysqli_real_escape_string برای فیلتر کردن داده ایی هست که داریم دریافت میکنیم تا متغیر غیرمجازی نداشته باشه و تا حدودی امنیت رو برقرار میکنه  و این تابع $worksheet->getCellByColumnAndRow(0, $row)->getValue() میاد میگه که از این سطری که هستیم و در ستون 0 مقدار داده رو برگردون . سطر ما اینجا میشه سطر دوم که گفتم سطر اول معمولا نام ستون ها قرار داده میشه و ستون 0 هم در اینجا ستون نام ونام خانوادگی ( fullname ) ما هست .


    $student_number = mysqli_real_escape_string($connect, $worksheet->getCellByColumnAndRow(1, $row)->getValue());

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


    $grade = mysqli_real_escape_string($connect, $worksheet->getCellByColumnAndRow(2, $row)->getValue());

در این خط هم برای نمره یک متغیر تعریف کردیم .


$term = mysqli_real_escape_string($conn,$_POST['term_number']);

در این خط هم مقداری که از فیلد متنی در فرم برای شماره ترم دریافت کردیم را در یک متغیر ذخیره کردیم تا برای همه یک شماره ترم وارد کند .


$query = "INSERT INTO users(fullname, student_number , grade , term) VALUES ('".$fullname."', '".$student_number."','".$grade."','".$term."')";

در این خط از کد هم یک کوئری برای دیتابیس نوشتیم که به جدول users ما فیلد های fullname, student_number,grade,term رو با متغیر هایی که تعریف کردیم اضافه کنه . اینجا اسم جدول رو من users قرار دادم و اسم فیلد ها هم fullname, student_number,grade,term هست . اگر اسم جدول یا فیلد های شما فرق میکنه این مقادیر رو در خط کد بالا تغییر بدید .


mysqli_query($conn, $query);

و در این خط هم با تابع mysqli_query کوئری بالا رو اجرا کردیم .


echo '<td>'.$fullname.'</td>';
    echo '<td>'.$student_number.'</td>';
    echo '<td>'.$grade.'</td>';
echo '<td>'.$term.'</td>';
    echo '</tr>';

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



<form method="post" enctype="multipart/form-data">
    <label>فایل اکسل را انتخاب کنید : </label>
    <input type="file" name="excel" />
    <br />
<label>شماره ترم : </label>
<input type="text" name="term_number" />
    <input type="submit" name="import" class="btn btn-info" value="ثبت" />
   </form>

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


<html>
 <head>
  <title>Import Excel to Mysql using PHPExcel in PHP</title>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
  <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
  <style>
  body
  {
   margin:0;
   padding:0;
   background-color:#f1f1f1;
  }
  .box
  {
   width:700px;
   border:1px solid #ccc;
   background-color:#fff;
   border-radius:5px;
   margin-top:100px;
  }
 
  </style>
 </head>
 <body>
  <div class="container box">
   <h3 align="center">اضافه کردن مقادیر دیتابیس از فایل اکسل</h3><br />
   <form method="post" enctype="multipart/form-data">
    <label>فایل اکسل را انتخاب کنید : </label>
    <input type="file" name="excel" />
    <br />
<label>شماره ترم : </label>
<input type="text" name="term_number" />
    <input type="submit" name="import" class="btn btn-info" value="ثبت" />
   </form>
   <br />
   <br />
<?php
$conn = mysqli_connect("localhost", "root", "");


$sql = "CREATE DATABASE excel";
if (mysqli_query($conn, $sql)) {
    echo "پایگاه داده ایجاد شد <br>";
} else {
    echo "پایگاه داده قبلا ایجاد شده است : " . mysqli_error($conn) . "<br>";
}

mysqli_select_db ( $conn , "excel" );

if (!$conn) {
    die("خطا در ارتباط: " . mysqli_connect_error());
}    


$sql = "CREATE TABLE `users` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `fullname` VARCHAR(500) NOT NULL,
  `student_number` VARCHAR(100) NOT NULL,
  `grade` VARCHAR(100) NOT NULL,
  `term` VARCHAR(100) NOT NULL,
  PRIMARY KEY (`id`));";
if(mysqli_query($conn, $sql)){
    echo "جدول با موفقیت ایجاد شد <br>";
} else {
    echo "جدول قبلا ایجاد شده است : " . mysqli_error($conn). "<br>";
}


if(isset($_POST["import"]))
{
if(!empty($_POST['term_number'])){
 $extension = end(explode(".", $_FILES["excel"]["name"]));
 $allowed_extension = array("xls", "xlsx", "csv");
 if(in_array($extension, $allowed_extension))
 {
  $file = $_FILES["excel"]["tmp_name"];
  include('PHPExcel/IOFactory.php');
  $objPHPExcel = PHPExcel_IOFactory::load($file);

     echo "<label class='text-success'>داده های ورودی</label>
     <br />
     <table class='table table-bordered'>";
  foreach ($objPHPExcel->getWorksheetIterator() as $worksheet)
  {
   $highestRow = $worksheet->getHighestRow();
   for($row=2; $row<=$highestRow; $row++)
   {
    echo "<tr>";
    $fullname = mysqli_real_escape_string($conn, $worksheet->getCellByColumnAndRow(0, $row)->getValue());
    $student_number = mysqli_real_escape_string($conn, $worksheet->getCellByColumnAndRow(1, $row)->getValue());
 $grade = mysqli_real_escape_string($conn, $worksheet->getCellByColumnAndRow(2, $row)->getValue());
            $term = mysqli_real_escape_string($conn,$_POST['term_number']);



            $query = "INSERT INTO users(fullname, student_number , grade , term) VALUES ('".$fullname."', '".$student_number."','".$grade."','".$term."')";


    mysqli_query($conn, $query);
    echo '<td>'.$fullname.'</td>';
    echo '<td>'.$student_number.'</td>';
    echo '<td>'.$grade.'</td>';
echo '<td>'.$term.'</td>';
    echo '</tr>';
   }
  }
  echo '</table>';
 }
 else
 {
  echo '<label class="text-danger">فایل غیر مجاز</label>';
 }
}else{
    echo '<label class="text-danger">فیلد شماره ترم را وارد کنید .</label>';
}
}
?>
  </div>
 </body>
</html>

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

فایل های پیوستی







همچنین به دیتابیس, PHP, اکسل, excel, xlsx, xls, csv, اضافه کردن به دیتابیس, ثبت در دیتابیس نیز برچسب خورده است

0 کاربر در حال خواندن این موضوع است

0 کاربر، 0 مهمان و 0 عضو مخفی

صفحه ی اینستاگرام  دانشگاه آزاد اسلامی واحد بندرعباس