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

در این مثال می خواهیم یک صفحه ساده ی PHP ایجاد کنیم تا بتوانیم اطلاعات موجود در MySQL را در آن نمایش داده و در نهایت یک دکمه برای ذخیره اطلاعات موجود در دیتابیس به فرمت اکسل در کامپیوتر شخصی شما ، قرار دهیم. بنابراین یک به یک مراحل زیر را به ترتیب دنبال کنید :گرفتن خروجی اکسل از MySQL توسط PHP + آموزش تصویریگرفتن خروجی اکسل از MySQL توسط PHP + آموزش تصویری

1) ابتدا یک جدول تحت عنوان tbl_User در MySQL برای ذخیره کاربران ایجاد کنید. این جدول شامل UserName و Password و … است. برای ساخت جدول با فیلدهای موردنیاز به صورت زیر عمل می کنیم :

CREATE TABLE IF NOT EXISTS `tbl_user` (  
`ur_Id` int(11) NOT NULL AUTO_INCREMENT،  
`ur_username` varchar(50) NOT NULL،  
`ur_password` varchar(50) NOT NULL،  
`ur_status` int(11) NOT NULL،  
PRIMARY KEY (`ur_Id`)  
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

 

2) حال باید داخل جدول tbl_User یک سری اطلاعات وارد کنید. بنابراین برای وارد کردن اطلاعات می تواند از عبارت زیر در SQL استفاده کنید :

INSERT INTO `tbl_user` (`ur_Id`، `ur_username`، `ur_password`، `ur_status`) VALUES  
(1، این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید'، 'امیر'، 1)،  
(2، این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید'، 'نم نمک'، 1)،  
(3، این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید'، 'برنامه نویسی نم نمک'، 1);

 

3) در این مرحله اولین صفحه ی ساده ی PHP خود را ایجاد کرده تا اطلاعات فوق را به نمایش بگذاریم :

<html>  
 
<head>  
    <title>User Report List</title>  
</head>  
 
<body> </body>  
 
</html>

کد بالا را در فایل UserReport.php ذخیره نمایید.

1-3) برای نمایش زیباتر اطلاعات از یک جدول HTML استفاده می کنیم که این جدول دارای 3 ستون است :

<table border="1">  
    <tr>  
        <th>Sr NO.</th>  
        <th >User Name</th>  
        <th>Password</th>  
    </tr>  
</table>

در جدول فوق یک ردیف برای سربرگ تعیین کردیم.

2-3) حال باید اطلاعات را از دیتابیس واکشی (fetch) کنیم تا مقادیر جدول برای هر ردیف را متناسب با داده های موجود پر کنیم. برای اینکار ابتدا یک کانکشن (ارتباط) با MySQL Server ایجاد می کنیم و سپس با استفاده از متد mysqli_select_db ارتباط با برقرار می کنیم :

<?php  
   $conn = new mysqli('localhost'، 'root'، '');   
   mysqli_select_db($conn، 'EmployeeDB');   
   $conn->set_charset("utf8");

?>

همانطور که مشاهده می کنید نام سرور در این مثال localhost و نام کاربری و پسورد آن به ترتیب برابر root و مقدار خالی (null نیست) تعیین شده است. همچنین نام پایگاه داده نیز EmployeeDB تعریف می شود.

توجه : همراهان گرامی فارسی زبان باید توجه داشته باشند که جهت دستیابی به خروجی فارسی باید همواره دیتابیس را در حالت utf8_general_ci ایجاد کرده باشند و حتما کد set_charset را به مجموعه کد خود اضافه کنند.

3-3) در این مرحله باید Query موردنظر جهت استخراج داده های SrNo و Username و Password از دیتابیس استخراج شود. سپس این Query را به دیتابیس ارسال می کنیم :

$sql = mysqli_query($conn،"SELECT `ur_Id`،`ur_username`،`ur_password` FROM `tbl_user`"); 

با اجرای این دستور تمام اطلاعات یا به اصطلاح رکوردها از دیتابیس MySQL واکشی شده و درون متغییر sql$ ریخته می شود.

4-3) پس از انجام مراحل فوق نوبت به ایجاد یک حلقه برای نمایش تک تک رکوردها می رسد. بنابراین حلقه ی while را برای هر ردیف از جدول تکرار می کنیم :

while($data = mysqli_fetch_row($sql))  
{  
    echo '  
    <tr>  
    <td>'.$data[0].'</td>  
    <td>'.$data[1].'</td>  
    <td>'.$data[2].'</td>  
    </tr>  
    ';  
}

5-3) سپس یک دکمه یا لینک جهت استخراج اطلاعات به فرمت اکسل در انتهای فرم قرار می هیم :

<a href="/UserReport_Export.php"> Export To Excel </a>

در نهایت کد تکمیل شده شما در فایل UserReport.php باید به صورت زیر باشد :

<html>  
 
<head>  
    <title>User Detail Report</title>  
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
 
<body>  
    <table border="1">  
        <tr>  
            <th>Sr NO.</th>  
            <th >User Name</th>  
            <th>Password</th>  
        </tr>  
        <?php  
        
$conn = new mysqli('localhost'، 'root'، '');   
mysqli_select_db($conn، 'test');   
$conn->set_charset("utf8");
 
$sql = mysqli_query($conn،"SELECT `ur_Id`،`ur_username`،`ur_password` FROM `tbl_user`");  
 
 
while($data = mysqli_fetch_row($sql)){  
echo '  
<tr>  
<td>'.$data[0].'</td>  
<td>'.$data[1].'</td>  
<td>'.$data[2].'</td>  
</tr>  
';  
}  
?>  
    </table> <a href="/UserReport_Export.php"> Export To Excel </a>
</body>  
 
</html>

 

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

4) فایل دیگری تحت عنوان UserReport_Export.php ایجاد کرده و کد زیر را درون آن قرار دهید :

<?php  
?>

1-4) ابتدا یک کانکشن (ارتباط) با MySQL جهت فراخوانی اطلاعات و واکشی داده ها مانند مراحل قبل ایجاد می کنیم :

$conn = new mysqli('localhost'، 'root'، '');   
mysqli_select_db($conn، 'EmployeeDB');   
 
$setSql = "SELECT `ur_Id`،`ur_username`،`ur_password` FROM `tbl_user`";  
$setRec = mysqli_query($conn،$setSql);

در مجموعه کد بالا متغییری تحت عنوان setRec$ جهت دریافت تمام اطلاعات دیتابیس ایجاد شده است.

2-4) سپس یک حلقه ی while برای دریافت هر ردیف این اطلاعات استفاده می شود :

while($rec = mysqli_fetch_row($setRec))   
{  

3-4) حال برای هر ستون ردیف های استخراج شده در مرحله ی 4-2 از یک حلقه ی foreach استفاده کرده ایم :

foreach($rec as $value)   
{  
}

4-4) سپس برای ایجاد یک تب (tab) بین مقدار هر ستون از علامت t\ استفاده کرده و آن را در یک متغییر دیگری به نام rowData$ ذخیره می کنیم :

$rowData = '';  
foreach($rec as $value)   
{  
   $value = '"' . $value . '"' . "\t";  
   $rowData .= $value;  
}

5-4) هم اکنون اطلاعات شما داخل هر ستون آماده هستند. حال نوبت به جداسازی هر سطر می رسد که برای اینکار از کاراکتر n\ بین هر سطر استفاده خواهیم کرد :

$setData='';  
 
while($rec = mysqli_fetch_row($setRec))   
{  
   $rowData = '';  
foreach($rec as $value)   
{  
   $value = '"' . $value . '"' . "\t";  
   $rowData .= $value;  
}  
   $setData .= trim($rowData)."\n";  
}

6-4) ردیف ها و ستون های داده های ما هم اکنون به صورت منظم جدول بندی شده اند. حال باید یک متغییر جدید را برای ذخیره کردن سربرگ های خود ایجاد کنیم :

$columnHeader ='';  
$columnHeader = "Sr NO"."\t"."User Name"."\t"."Password"."\t"; 

7-4) هنگامیکه کاربر روی لینک Export to Excel کلیک می کند باید فایل اکسل را عینا مشابه جدولی که در صفحه ایجاد شده است دریافت کند بنابراین از سربرگ های زیر زیر جهت تعریف فایل ، دانلود و تنظیم کردن فایل برای فرمت UTF-8 در ابتدای کدهای خود استفاده می کنیم :

header("Content-type : application/octet-stream");  
header("Content-Disposition : attachment; filename=User_Detail_Reoprt.xls");  
header('Content-Transfer-Encoding : binary');
header("Pragma : no-cache");  
header("Expires : 0");  

echo chr(255).chr(254).iconv("UTF-8"، "UTF-16LE//IGNORE"، $columnHeader . "\n" . $setData . "\n");

exit()

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

<?php  
 
$conn = new mysqli('localhost'، 'root'، '');  
mysqli_select_db($conn، 'test');  
$conn->set_charset("utf8");
 
$setSql = "SELECT `ur_Id`،`ur_username`،`ur_password` FROM `tbl_user`";  
$setRec = mysqli_query($conn، $setSql);  
 
$columnHeader = '';  
$columnHeader = "Sr NO" . "\t" . "User Name" . "\t" . "Password" . "\t";  
 
$setData = '';  
 
while ($rec = mysqli_fetch_row($setRec)) {  
    $rowData = '';  
    foreach ($rec as $value) {  
        $value = '"' . $value . '"' . "\t";  
        $rowData .= $value;  
    }  
    $setData .= trim($rowData) . "\n";  
}  
 
 
header("Content-type : application/octet-stream");  
header("Content-Disposition : attachment; filename=User_Detail_Reoprt.xls");  
header('Content-Transfer-Encoding : binary');
header("Pragma : no-cache");  
header("Expires : 0");  

echo chr(255).chr(254).iconv("UTF-8"، "UTF-16LE//IGNORE"، $columnHeader . "\n" . $setData . "\n");

exit()

?>

5) اگر تمام مراحل فوق را به درستی انجام داده باشید و روی لینک Export to Excel کلیک کنید خروجی شما در اکسل خواهد آمد.

6) میتوانید فایل User_Detail_Report.xls را با نرم افزار اکسل باز کنید و یا آن را ذخیره نمایید.

این مطلب مفید بود؟
(3 رای)
73.4%

نوشتن نظرات

توجه : نظرات حاوی الفاظ نامناسب ، تهمت و افترا منتشر نخواهد شد.


تصویر امنیتی

کاربران آنلاین : 22,974