CSV File Import Export In MySQL Table Using Php

In this post, we will discuss how to import and export mysql data in csv file format. CSV stands for “comma separated values”. Each line of this file contains data records and it can be one or more fields. This is usefull when we want to add huge data into mysql database instead of adding data one by one.
Php has provided two functions to make this task very simpler.
1) fgetcsv
2) fputcsv
Lets see how this functions can complete our task in below tutorial.

Database – Create one mysql table

Use following sql query to make sql table.

--
-- Table structure for table `posts`
--

CREATE TABLE IF NOT EXISTS `posts` (
  `id` int(11) NOT NULL,
  `post_name` text NOT NULL,
  `description` text NOT NULL,
  `status` text NOT NULL,
  `date` date NOT NULL,
  `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;

--
-- Dumping data for table `posts`
--

INSERT INTO `posts` (`id`, `post_name`, `description`, `status`, `date`, `created`) VALUES
(1, 'Post 1', 'Post 1 description bla bla...', 'publish', '2018-07-11', '2018-07-22 15:33:10'),
(2, 'Post 2', 'Post 2 description bla bla...', 'publish', '2018-07-13', '2018-07-22 15:33:54'),
(3, 'Post 3', 'Post 3 description bla bla...', 'draft', '2018-07-15', '2018-07-22 15:33:54');

Csv Import/Export – index.php

<?php
$servername = "localhost";
$username = "root";
$password = "";
$db = 'posts';

// Create connection
$con = mysqli_connect($servername, $username, $password, $db);

// Check connection
if (!$con) {
    die("Connection failed: " . mysqli_connect_error());
}

$msg = 0;
if (isset($_POST['import'])) {
    $fileName = $_FILES["file"]["tmp_name"];
    if ($_FILES["file"]["size"] > 0) {
        $file = fopen($fileName, "r");
        $i = 0;
        while (($column = fgetcsv($file)) !== FALSE) {
            if ($i > 0) {
                if (!empty($column[0])) {
                    $insertdate = date("Y-m-d", strtotime(str_replace('/', '-', $column[3])));
                    $sql = "INSERT into posts (post_name,description,status,date) 
                   values ('" . $column[0] . "','" . $column[1] . "','" . $column[2] . "','" . $insertdate . "')";
                    $result = mysqli_query($con, $sql);
                    if (isset($result)) {
                        $msg++;
                    }
                }
            }
            $i++;
        }
    }
}
if (isset($_POST['export'])) {
    header('Content-Type: text/csv; charset=utf-8');
    header('Content-Disposition: attachment; filename=data.csv');
    $output = fopen("php://output", "w");
    fputcsv($output, array('ID', 'Post Name', 'Description', 'Status', 'Date', 'Entry Time'));
    $query = "SELECT * from posts ORDER BY id DESC";
    $result = mysqli_query($con, $query);
    while ($row = mysqli_fetch_assoc($result)) {
        fputcsv($output, $row);
    }
    fclose($output);
    exit();
}
?>
<!DOCTYPE html>
<html>
    <head>
        <link href="style.css" rel="stylesheet" type="text/css"/>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
        <script src="jquery.js" type="text/javascript"></script>
    </head>
    <body>
        <div class="csv_section">
            <div class="export_section">
                <a href="sample.csv">DOWNLOAD SAMPLE</a>
            </div>
            <div class="import_section">
                <form class="form-horizontal" action="" method="post" name="uploadCSV" enctype="multipart/form-data">
                    <div class="input-row" style="margin-top: 8px;">
                        <label class="col-md-4 control-label">Choose CSV File</label> <input
                            type="file" name="file" id="file" accept=".csv">
                        <button type="submit" id="submit" name="export" class="btn-submit">EXPORT CSV</button>
                        <button type="submit" id="submit" name="import" class="btn-submit">IMPORT CSV</button>
                    </div>
                    <div id="response"></div>
                </form>
            </div>
        </div>
        <?php
        if ($msg > 0) {
            ?>
            <div class="msg">CSV data us imported successfully.</div>
            <?php
        }
        ?>
        <div class = "show_records">
            <?php
            $sql = "SELECT * from posts ORDER BY id DESC";
            $records = mysqli_query($con, $sql);
            $rowcount = mysqli_num_rows($records);
            if ($rowcount > 0) {
                ?>
                <h2 class="cl">All Imported List <span style="float:right;">Total : <?php echo $rowcount; ?></span></h2>
                <table id='joblisttable' style="float:left;">
                    <thead>
                        <tr>
                            <th>ID</th>
                            <th>Post Name</th>
                            <th>Description</th>
                            <th>Status</th>
                            <th>Date</th>
                            <th>Entry Time</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php
                        while ($row = mysqli_fetch_object($records)) {
                            ?>
                            <tr class="line-content">
                                <td><?php echo $row->id; ?></td>
                                <td><?php echo $row->post_name; ?></td>
                                <td><?php echo $row->description; ?></td>
                                <td><?php echo $row->status; ?></td>
                                <td><?php echo date('Y-m-d H:i:s', strtotime($row->date)); ?></td>
                                <td><?php echo date('Y-m-d H:i:s', strtotime($row->created)); ?></td>
                            </tr>
                            <?php
                        }
                        ?>
                    </tbody>
                </table>
                <ul class="pagin"></ul>
            <?php } ?>
        </div>
    </body>
</html>

Pagination – jquery.js

jQuery(document).ready(function ($) {
    //Pagination
    var pageSize = 10;
    var pageCount = $(".line-content").length / pageSize;
    for (var i = 0; i < pageCount; i++) {
        $(".pagin").append('<li><a href="#">' + (i + 1) + '</a></li> ');
    }
    $(".pagin li").first().find("a").addClass("current")
    showPage = function (page) {
        $(".line-content").hide();
        $(".line-content").each(function (n) {
            if (n >= pageSize * (page - 1) && n < pageSize * page)
                $(this).show();
        });
    }
    showPage(1);
    $(".pagin li a").click(function () {
        $(".pagin li a").removeClass("current");
        $(this).addClass("current");
        showPage(parseInt($(this).text()))
    });
});

Some styling is required – style.css

.csv_section {
    margin-bottom: 15px;
    width: 99%;
    float: left;
    border: 3px solid #428bca;
    margin-top: 20px;
    background: white;
    box-sizing: border-box;
}
.export_section {
    width: 25%;
    float: left;
    padding: 20px;
    box-sizing: border-box;
    background: #428bca;
}
.export_section a {
    width: 100%;
    float: left;
    padding: 15px;
    background: white;
    border: 0;
    font-size: 19px;
    color: #428bca;
    font-weight: 800;
    cursor:pointer;
    box-sizing: border-box;
    text-align: center;
    text-decoration: none;
}
.import_section {
    width: 75%;
    float: left;
    padding: 20px;
    box-sizing: border-box;
    background: white;
}
.import_section label {
    font-size: 19px;
}
.import_section input#file {
    padding: 10px;
}
.import_section button[type='submit'] {
    border: 2px solid #428bca;
    background: white;
    font-size: 16px;
    padding: 5px 15px;
    color: #428bca;
    font-weight: 800;
    float: right;
    cursor:pointer;
    margin-left: 5px;
}

/* show records css */

table#joblisttable {
    float: left;
    width: 99%;
    border-spacing: 0px !important;
    border-collapse: unset;
}
#joblisttable thead {
    background: #428bca;
    color: white;
    font-size: 16px;
    border: 1px solid #428bca;
}
table#joblisttable th {
    height: 28px;
    text-align: left;
    padding: 3px 5px;
}
table#joblisttable td {
    background: white;
    padding: 7px;
    border-bottom: 1px solid #f1f1f1;
}
h2.cl {
    width: 99%;
    float: left;
}
.current {
    color: white;
    background: #428bca !important;
}
.current:hover, .current:focus{
    color:white;
}
.pagin li {
    display: inline-block;
}
ul.pagin {
    width: 100%;
    float: left;
    margin-top: 15px;
    box-sizing: border-box;
    padding: 0;
    text-align: center;
}
ul.pagin li a {
    padding: 5px 10px;
    float: left;
    background: white;
    text-decoration: none;
}
.show_records{
    width:100%;float:left;
}
.msg {
    padding: 5px 15px;
    border: 1px solid #ddd;
    box-sizing: border-box;
    background: white;
    color: blue;
    text-align: center;
    width: fit-content;
    margin: 0 auto;
    overflow: hidden;
    margin-top: 15px;
}

Conclusion :

As you can see, to csv file operations like import/export in mysql using php is not a difficult task we just need to use some cool functions provided by php itself. In this tutorial, we have also covered one small pagination on data using jquery. In future posts, we will see this jquery or php pagination in more details. So stay connected with my blog to get useful stuff in simple manner, and i will be more happy to get some feedback from you in comment section, and also share this post if you like and if it is useful for others. Thanks. 🙂

One thought on “CSV File Import Export In MySQL Table Using Php

  1. Ik hou van de harde aanpak Lekker kutje om aan te kikken in de aanbieding! Kom je aan mijn spenen zuigen? Een blowjob… Ik wil genieten De kus werd verbroken en Jonah keek hem aan. Wessel keek in de ogen van de hotelbediende, op zoek naar bevestiging. Toen Jonah kort knikte trok Wessel het shirt omhoog en Jonah hielp hem het uit te doen. Meteen vonden hun lippen elkaar weer, maar nu drukten de jongens ook hun lichamen tegen elkaar. Wessel trok Jonah mee naar achteren totdat de jongen languit bovenop hem lag. Ondertussen kwamen hun lippen niet van elkaar. Wessel voelde de borst en buik van Jonah langs de zijne schuren, terwijl hij met zijn handen de gladde rug van de jongen verkende. Jonah verbrak de kus en kwam half overeind. Steunend op zijn handen, met zijn gezicht boven dat van Wessel, zijn ademhaling iets versneld, keek hij Wessel aan. Wow, bracht hij uit. Ik ben V zoals de meeste mij noemen. Volgens mijn vrienden ben ik zeer zeker de moeite waard maar heb nog steeds niet die persoon gevonden waar de klik mee is. Mijn baan super saai maar het is een betaalde baan zullen we maar zeggen. Ben jij die heer die deze dame uit de saaiheid komt bevrijden? Heerlijke seks op mijn kantoor of in een omkleed hokje van het zwembad? Ja ik hou van seks op gekke plekken en vooral als je er kan ontdekt worden. De spanning van dat soort gedachte maakt me nu al nat! Het douchen deed hem goed. Hij dacht nog even terug aan de blikken die hij met Jonah had gewisseld tijdens het eten. Het had de avond een soort extra dimensie gegeven, het feit dat hij en die jongen iets deelden waar de rest niks van wist. Het had een soort aangename spanning gecreлerd tussen de twee. Wessel voelde zich er fijn bij, maar ergens was hij ook een beetje in de war. Normaal voelde hij niet zulk soort spanning bij zijn vrienden. [url=http://nl.eroklub.pw/wanneer-denk-je-dat-jij-kan/]Wanneer gaan wij goede seks hebben?[/url]
    Eindelijk in de goeie richting Ik wil neuken Ik ben echt weer toe aan seks [url=http://n1.tids.biz/oudere-heren-mogen-zich-altijd-melden/]Oudere vrouw zoekt een normaal sex contact![/url] Kom maar voelen , ze zijn echt! Hou jij ook van spannende seks op spannende plekjes?
    Wil jij mij de eer bewijzen? Dit mag ik toch wel van je vragen? Gek op pijpen en zaad Hou jij van een Spaanse vrouw? Gaan we voor een stiekem avontuurtje? Wil jij weten wat ik ontdekt heb? Een tweede leven Niemand die mij onder wilt spuiten? Ik zoek een spuitkanon! Gaan we de bloemetjes buiten zetten? Ik wil lekkere wilde seks Wie wilt deze Brabander beter leren kennen? [url=http://n1.tids.biz/jij-zoekt-heet-wild-en-sexy/]Jong dik meisje zoekt een man voor seks[/url]
    Zullen wij een nieuw begin maken? Aziatische vrouw zoekt sexpartner Ik wil je heerlijke warme zaad proeven! Wil jij aan mijn slipje ruiken? Zoek jij ook lekkere sex zonder moeilijk gedoe? Wil je mee doen aan een trio? Weet jij lekkere uitdagingen? Kan ik hier een spannende date scoren? Ga jij door met mijn liedje? [url=http://no.tids.biz/erotische-avontuurtjes/]Erotische avontuurtjes[/url]
    Elske zoekt serieus Jonge dame op zoek naar een date [url=http://n1.tids.biz/seksen-zonder-verdere-verwachtingen/]Seksverslaafde neukt tegen klein vergoeding[/url] Wil jij met mij nog meer genieten????? Kijk jij niet alleen naar uiterlijk? Ik wil seks veel seks Bouwen wij een stiekeme geil relatie op? Ik ben klaar voor passie, jij ook? Op zoek naar romantisch genieten Welkom Ik voel me heel alleen welke man voelt zich ook alleen ?
    [url=http://go.eroklub.pw/wij-zoeken-keiharde-seks/]Wij zoeken keiharde seks![/url]
    Wil jij meer? Wil jij mijn fantasie helpen werkelijkheid te maken? [url=http://nl.lubie.pw/wil-jij-mij-die-ervaring-op-laten-doen/]Wil jij mij die ervaring op laten doen???[/url] Neuken en beuken Ik ben opzoek naar een spannende date Kom maar eens in mijn billetjes knijpen Help!
    [url=http://n1.lubie.pw/2018/04/02/een-heerlijke-sex-partner/]Een heerlijke sex partner[/url] Wil je ook kriebels in je buik? Ik trek graag wat spannends voor jou aan. Seks met een vrouw met heerlijke rondingen? Ga jij ons samen verwennen? Als het geil is mag alles!! Weduwe wil heerlijke seks Help, ik kom aandacht tekort http://go.eroklub.pw
    Leeftijd is maar een getal, heb wel mijn voorkeur Geen seks zonder gevoel Kom je vaker? Ben jij diegene die ik zoek?! Op zoek naar puur genot! Zie jij dit zitten?? Ik ben getrouwd en wil graag seks Lekkere vent gezocht voor vast sex contact! Ben jij ook zo dol op sex? Jij vandaag nog tijd voor een heerlijke massage? Doe jij een geil voorstel? Ben op zoek naar een privРїС—Р… publiek Jonah kreunde. Ik zou niets liever willen. Maar morgen moet ik wel heel vroeg beginnen, dus ik kan maar beter thuis slapen, denk ik.

Leave a Reply

Your email address will not be published. Required fields are marked *