Build Desktop applications with React and Electron Forge
- Vite
- Webpack
In order to export MySQL table data to excel let's create a HTML page and put two anchor tags, one is to export to excel and the other to export to CSV (Comma Seperated Value). Write a jquery function to submit the form which makes call to the PHP function to export data returned to excel.
<form id="site" method="post" enctype="multipart/form-data"> <div> <a id="studentsExportExcel" href="javascript:void(0)" onclick="exportExcel(this)">Export to excel (.xls)</a> <a id="studentsExportCSV" href="javascript:void(0)" onclick="exportExcel(this)">Export to csv</a> </div> <input type="hidden" value="" id="hidden-type" name="studentsExportType"/> </form>
Jquery
$(document).ready(function () { function exportExcel(obj) { var target = $(obj).attr('id'); switch (target) { case 'studentsExportExcel': case 'studentsExportCSV': $('#hidden-type').val(target); $('#site').submit(); $('#hidden-type').val(''); break; } } });
PHP Function
public function students() { if(isset($_POST["studentsExportType"])) { switch($_POST["studentsExportType"]) { case "studentsExportExcel" : // Submission from $filename = "students". date('dMY') .".xls"; header("Content-Type: application/vnd.ms-excel"); header("Content-Disposition: attachment; filename=\"$filename\""); students_export_excel(); $_POST["studentsExportType"] = ''; exit(); case "studentsExportCSV": $filename = "students". date('dMY') . ".csv"; header("Content-type: application/csv"); header("Content-Disposition: attachment; filename=\"$filename\""); header("Pragma: no-cache"); header("Expires: 0"); $handle = fopen('php://output', 'w'); $data = get_students(); foreach ($data as $data) { fputcsv($handle, $data); } fclose($handle); exit(); default : die("Unknown action : ".$_POST["action"]); break; } } } function students_export_excel() { $heading = false; $students = get_students(); if(!empty($students)) foreach($students as $row) { if(!$heading) { // display field/column names as a first row echo implode("\t", array_keys($row)) . "\n"; $heading = true; } echo implode("\t", array_values($row)) . "\n"; } exit; } function get_students() { $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT id, firstname, lastname FROM students"; $result = $conn->query($sql); return $result; }
This article explains how to incrementally load items as you scroll down div element in the page. In this example a HTML page is created with an unordered list element where the list items returned by the function gets appended. Here difference of the scroll height of the div container and its client height is compared against the scroll top offset value.
HTML Page<div> <div id="containerName" style="overflow: scroll;height: 500px;"></div><div style="text-align: center;"><img alt="Loading..." src="../assets/images/svg/three-dots.svg" class="loading-info" /></div><div id="notifyMessage"></div> </div>Jquery
$(document).ready(function () {var offset = 0;var loading = false;$('.loading-info').hide();appendItems(offset, loading);$(window).scroll(function () {if ($('#notifyMessage').html() === "") { var divHeight = $('#containerName')[0].scrollHeight - $('#containerName')[0].clientHeight;if ($('#containerName').scrollTop() === divHeight) {offset += 20; appendItems(offset, loading); } } });});
function appendItems(offset, loading) { if (loading == false) { loading = true; $('.loading-info').show(); $.post('/admin/items/append', { 'offset': offset }, function (data) { loading = false; if (data.trim().length == 0) { $('.loading-info').hide(); $('#notifyMessage').html('<p> End of records</p>'); return; } $('.loading-info').hide(); $("#containerName").append(data); }).fail(function (xhr, ajaxOptions, thrownError) { alert(thrownError); }) } }PHP Function
function append() { $list = NULL; $offset = $_POST['offset']; $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT id, firstname, lastname FROM employees limit $offset, 20"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { $list += "<div>id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "</div>"; } } $conn->close(); echo $list; }
This article explains how to incrementally load items as you scroll down the page. In this example a HTML page is created with an unordered list element where the list items returned by the function gets appended.
HTML Page<div> <ul id="containerName"></ul> <div style="text-align: center;"><img alt="Loading..." src="../assets/images/svg/three-dots.svg" class="loading-info" /></div> <div id="notifyMessage"></div> </div>Jquery
$(document).ready(function () {var offset = 0;var loading = false;$('.loading-info').hide();appendItems(offset, loading);$(window).scroll(function () {if ($('#notifyMessage').html() === "") { if ($(window).scrollTop() + $(window).height() >= $(document).height() - 100) { offset += 20; appendItems(offset, loading); } } });});
function appendItems(offset, loading) { if (loading == false) { loading = true; $('.loading-info').show(); $.post('/admin/items/append', { 'offset': offset }, function (data) { loading = false; if (data.trim().length == 0) { $('.loading-info').hide(); $('#notifyMessage').html('<p> End of records</p>'); return; } $('.loading-info').hide(); $("#containerName").append(data); }).fail(function (xhr, ajaxOptions, thrownError) { alert(thrownError); }) } }PHP Function
function append() { $list = NULL; $offset = $_POST['offset']; $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT id, firstname, lastname FROM employees limit $offset, 20"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { $list += "<li>id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "</li>"; } } $conn->close(); echo $list; }
Note: If you use <form> tag in the page, it should have the same css style as for the html, body
<!DOCTYPE html> <html lang="en"> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta charset="utf-8" /> <title>Login</title> <style type="text/css"> html, body { margin: 0px; padding: 0px; width: 100%; height: 100%; display: table; font-family: Verdana; font-size: small; } .login-container { display: table-cell; text-align: center; vertical-align: middle; } .content { background-color: grey; /* sample usage */ display: inline-block; text-align: left; line-height: 25px; } </style> </head> <body> <section class="login-container"> <div class="content"> <input type="text" name="username" id="userName" maxlength="50" placeholder="Username"> <br> <input type="password" name="password" maxlength="50" placeholder="Password"> <br> <div> <label><input type="checkbox" name="rememberLogin" id="rememberLogin" value="1">Stay logged in</label> <input type="button" name="login" value="Login"> <br> </div> </div> </section> </body> </html>
Codeigniter Shield Authorization CodeIgniter Shield is the official authentication and authorization framework for CodeIgniter 4. It provide...