csv file reader in php

<quote>

<?php
include 'connection.php';
$row = Array();
$headers = Array();
$tabColumn = Array();
$filename='';
$fileTemp='';
$tablename = '';
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Campaign - info</title>

<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700&display=swap">
<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.min.css" rel="stylesheet">

<!-- Material Design Bootstrap -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/mdbootstrap/4.19.1/css/mdb.min.css" rel="stylesheet">
<link rel="stylesheet" href="css/style.css">
<style>
*{
    /* color:black; */
}
.my-custom-scrollbar {
position: relative;
height: 250px;
overflow: auto;
}
.table-wrapper-scroll-y {
display: block;
}
</style>
</head>
<body>
    
    <div class="container pt-5">
        <div class="row border border-muted shadow-sm">
            <div class="col-md-7 col-12 mx-auto">
                <section class="mt-5">
                    <h1 class="text-info">Manage campaign : </h1>
                </section>
                <?php if($_SERVER["REQUEST_METHOD"] != "POST"): ?>
                <section class="pt-3">
                    <div class="custom-file pt-2">
                    <button class="btn btn-primary createNewCampaignbtn"><i class="fa fa-plus"></i> Create New</button>
                    <a href='dashboard.php'class="btn btn-info"><i class="fa fa-home" style="font-size:18px"></i>&nbsp;Dashboard</a>
                    </div>                   
                </section>
                <?php endif;?>
                <section class="pt-5">
                    <div>
                        <div class="alert alert-warning alert-dismissible d-none fade show warningAlert">
                            <!-- <button type="button" class="close" data-dismiss="alert">&times;</button> -->
                            <p class="m-0 message">
                            <strong>Warning!</strong> This alert box could indicate a warning that might need attention.
                            </p>
                        </div>
                        <?php
                        if($_SERVER["REQUEST_METHOD"] != "POST"){
                        ?>
                        <div class="first_outerDiv d-none">
                            <p class="pb-3">Create campaign : </p>
                            <div class="md-form">
                                <input type="text" id="form1" class="form-control">
                                <label for="form1">Enter campaign name</label>
                            </div>
                            <button class="btn btn-info btn-sm" id="createNewCampaign">create</button>
                        </div>
                        <?php
                        }
                        ?>
                        <section class="py-3">
                            <form action="#!" id="createCampData" class="d-none" method="post" enctype="multipart/form-data">
                                <div class="first_select_div">
                                    <p>Upload file : </p>
                                    <input type="hidden" id="hiddenField" name="campId" value="">
                                    <div class="custom-file">
                                        <input type="file" class="custom-file-input createUploadFile" id="customFileLang" lang="en" name="fileuploadcreate">
                                        <label class="custom-file-label" for="customFileLang">select file</label>
                                        <p class="text-danger"><small> * upload a comma separated csv file.</small></p>
                                    </div>
                                    <div class="pt-3">
                                    
                                    <button class="btn btn-info btn-sm" name="mappFormdata" type="submit">upload</button>
                                    </div>
                                </div>
                            </form>
                            <?php
                                $arrField = [];
                                if(isset($_POST['mappFormdata'])){
                                    extract($_POST);
                                    $filename = $_FILES['fileuploadcreate']['name'];
                                    $fileTemp = $_FILES['fileuploadcreate']['tmp_name'];
                                    $fopen= fopen($fileTemp , 'r');
                                    $headers = fgetcsv($fopen);
                                    $first_line = implode(',',$headers);
                                    $first_line_encode = base64_encode($first_line);
                                    //select campaign table start
                                        $sel = mysqli_query($conn , "SELECT `first_line_enc` FROM `campaign_info` WHERE `id`='$campId'");
                                        $nr = mysqli_num_rows($sel);
                                        if($nr){
                                            $r = mysqli_fetch_assoc($sel);
                                            if($r['first_line_enc'] == NULL){
                                                $udate = mysqli_query($conn , "UPDATE `campaign_info` SET `first_line_enc`='$first_line_encode' WHERE `id`='$campId'");
                                               
                                            }
                                        }
                                    //select campaign table end
                                    while($row = fgetcsv($fopen)){
                                        $row = preg_replace('/"/','',$row);
                                        foreach($row as $k=>$v){
                                            if ($v==''){
                                                $row[$k]='-';
                                            }
                                        }
                                        $row_string = implode("^&$" , $row);
                                        // echo preg_replace('/"/','',$row).'<br>';
                                        array_push($arrField , $row_string);
                                    }



                                //     echo "<pre>";
                                //     print_r($arrField);
                                //     echo "</pre>";

                                //    $str =  preg_replace('/"/',"",implode('*,*',$arrField));

                                //     var_dump($str);
                                //     die;
                               
                            ?>
                            <form action="#!" method="post" id="emailSelectedData">
                            <div class="row py-4">
                                <div class="col-12 pb-3 text-dark">Select  columns : </div>
                                <div class="col-12 col-md-6 text-dark">Email <span class="float-right">:</span> </div>
                                <div class="col-12 col-md-6">
                                    <select class="custom-select custom-select-sm" name="emailIndex">
                                        <option selected>Open this select menu</option>
                                        <?php
                                        foreach($headers as $k=>$v){
                                        ?>
                                        <option value="<?php echo $k; ?>"><?php echo $v; ?></option>
                                        <?php
                                        }
                                        ?>
                                    </select>
                                  
                                </div>
                                <br>
                                <div class="col-12 pb-3">Select name column : </div>
                                <div class="col-12 col-md-6 text-dark">Name <span class="float-right">:</span> </div>
                                <div class="col-12 col-md-6">
                                    <select class="custom-select custom-select-sm" name="nameIndex">
                                        <option selected>Open this select menu</option>
                                        <?php
                                        foreach($headers as $k=>$v){
                                        ?>
                                        <option value="<?php echo $k; ?>"><?php echo $v; ?></option>
                                        <?php
                                        }
                                        ?>
                                    </select>
                                   
                                </div>
                                <br>
                                <div class="col-12 pb-3">Select name column : </div>
                                <div class="col-12 col-md-6 text-dark">Phone <span class="float-right">:</span> </div>
                                <div class="col-12 col-md-6">
                                    <select class="custom-select custom-select-sm" name="phoneIndex">
                                        <option selected>Open this select menu</option>
                                        <?php
                                        foreach($headers as $k=>$v){
                                        ?>
                                        <option value="<?php echo $k; ?>"><?php echo $v; ?></option>
                                        <?php
                                        }
                                        ?>
                                    </select>
                                   
                                </div>
                                <br>
                                <div class="col-12 pb-3">Select name column : </div>
                                <div class="col-12 col-md-6 text-dark">Company <span class="float-right">:</span> </div>
                                <div class="col-12 col-md-6">
                                    <select class="custom-select custom-select-sm" name="DesignationIndex">
                                        <option selected>Open this select menu</option>
                                        <?php
                                        foreach($headers as $k=>$v){
                                        ?>
                                        <option value="<?php echo $k; ?>"><?php echo $v; ?></option>
                                        <?php
                                        }
                                        ?>
                                    </select>
                                    <input type="hidden" name="headerOfFIle" value="<?php echo implode(',',$headers);?>">
                                    <input type="hidden" name="tableData" value="<?php echo implode('$#&',$arrField);?>">
                                    <input type="hidden" value="<?php echo $campId;?>"name="campaign_id">
                                </div>
                            </div>
                            <div class="custom-file py-2">
                                <button class="btn btn-info btn-sm" name="finalsubmition" type=submit>Import</button>
                            </div>
                            </form>
                            <?php
                                }
                            ?>
                        </section>
                        <div id="dynamicLoader"></div>
                    </div>
                </section>
            </div>
            <div class="col-12 col-md-5 border border-muted border-right-0 border-bottom-0 border-top-0">
                <section class="mt-5 text-center">
                    <h5 class="text-info">Existing Campaign List: </h5>
                </section>
                <hr>
                <section>
                    <div class="table-wrapper-scroll-y my-custom-scrollbar">
                    <table class="table table-bordered">
                    <thead>
                       <th>Campaign Name</th>         
                       <th>Operations</th>         
                    </thead>
                    <tbody>
                            <?php
                                $sel = mysqli_query($conn , "SELECT * FROM `campaign_info`");
                                $numr = mysqli_num_rows($sel);
                                if($numr){
                                    while($row = mysqli_fetch_assoc($sel)){
                                        $id = $row['id'];
                                        $visible = '';
                                        $selCount = mysqli_query($conn , "SELECT `id` FROM `campaign_info_data`WHERE `campaign_id`='$id'");
                                        $numcount = mysqli_num_rows($selCount);
                                        if($numcount){
                                            $visible = $numcount;
                                        }   
                                        if($visible){

                                        
                            ?>
                            <tr>
                                    <td><small> <?php echo $row['name'];?></small></td>
                                    <td class="text-center"><a href="downloadCampData.php?id=<?php echo $row['id'];?>"><i class="fa fa-download" style="font-size:18px"></i></a></td>
                            </tr>
                            <?php
                          }
                            }
                                }else{
                            ?>
                            <tr>
                                    <td colspan="2" class="text-center">No campaign available</td>
                            </tr>
                            <?php
                                }
                            ?>
                            
                    </tbody>
                </table>
                    </div>
                </section>
                
            </div>
        </div>
    </div>

<!-- JQuery -->
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<!-- Bootstrap tooltips -->
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.4/umd/popper.min.js"></script>
<!-- Bootstrap core JavaScript -->
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/js/bootstrap.min.js"></script>
<!-- MDB core JavaScript -->
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mdbootstrap/4.19.1/js/mdb.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
<script>
    $(document).ready(function(){
        $('#createNewCampaign').on('click',()=>{
            $('.warningAlert').addClass('d-none');
            var camp_name = $('#form1').val();
            if(camp_name == ''){
                $('#form1').css('border-bottom','1px solid tomato');
            }else{
                $.ajax({
                    url:'handleCampaign.php',
                    method:'post',
                    data:{'createCampaign':camp_name},
                    beforeSend:xhr=>{
                        $('#dynamicLoader').addClass('loader');
                    },
                    success:data=>{
                        // alert(data);
                        $('#dynamicLoader').removeClass('loader');
                        if(data == 'exist'){
                            $('.warningAlert').removeClass('d-none');
                            $('.warningAlert .message').html("<strong>Warning!</strong> campaign name already exists.")
                        }else if(data == 'failed insertion'){
                            $('.warningAlert').removeClass('alert-warning');
                            $('.warningAlert').removeClass('d-none');
                            $('.warningAlert').addClass('alert-danger');
                            $('.warningAlert .message').html("<strong>Warning!</strong> Internal error please try again later.")
                        }
                        if($.isNumeric(data)){
                            $('#hiddenField').val(data);
                            // console.log(data);
                            $('.first_outerDiv').addClass('d-none');
                            $('#createCampData').removeClass('d-none').show('slow');
                        }
                    },
                    error:xhr=>{

                    }
                })
            }
        });

    $('#formDataForImport').on('submit',(e)=>{
       var file =  $('#customFileLang123').val();
       var camp = $('#select_campaign').val();
       if(file == '' || camp == ''){
           alert('all fields are required!');
           e.preventDefault();
       }
    });

    $('#createCampData').on('submit',(e)=>{
        var file = $('.createUploadFile').val();
        if(file == ''){
            alert('please select the file first!');
            e.preventDefault();
        }
    });
    $('#emailSelectedData').on('submit',(e)=>{
        // e.preventDefault();
        console.log($('#emailSelectedData'));
    });

    $('.createNewCampaignbtn').on('click',()=>{
        $('#dynamicLoader').addClass('loader');
        setTimeout(() => {
            $('.createNewCampaignbtn').addClass('d-none');
        $('#dynamicLoader').removeClass('loader');
        $('.existingCampaignListing').addClass('d-none').hide('slow');
        $('.first_outerDiv').removeClass('d-none');
            
        }, 2000);
    })
    });
</script>
 
</body>
</html>

<?php
    if(isset($_POST['finalsubmition'])){
        extract($_POST);
        $headerOfFIle ;   //headers of file
        $postData = explode(',',$headerOfFIle); // post related data
        $postDataKeys = array_keys($postData); // key of  post related data
        $tableData  ;    // data of file in string
        $fileData = explode('$#&',$tableData);
        // echo count($fileData);
       
        // var_dump($tableData);
        
        $status = [];
        echo "<script>$('#dynamicLoader').addClass('loader');</script>";
        // //main operations
        foreach($fileData as $k=>$v){
            $completeRow = $v;
            $uniqId = uniqid();
            $completeRow_encode = base64_encode($completeRow);
            $rowArr = explode('^&$',$completeRow);
            // echo '<br>';
            // echo 'designation = '.$DesignationIndex;
            
            $email =  mysqli_real_escape_string($conn , $rowArr[$emailIndex]);
            $name = mysqli_real_escape_string($conn , $rowArr[$nameIndex]);
            $Designation = mysqli_real_escape_string($conn , $rowArr[$DesignationIndex]);
            $phone = mysqli_real_escape_string($conn , $rowArr[$phoneIndex]);
            $name = str_replace('"', '', $name);
            $phone = str_replace('"', '',$phone);
            // $phone= (int) $phone;

            // echo $k.'   '.$name.'<br>';
            // $email = trim($email,"'");
            // $name = trim($name,"'");
            // $query = "INSERT INTO `campaign_info_data`(`campaign_id`,`email`,`uuid`,`row_encode`,`name`,`company`,`phone`) VALUES('$campaign_id' ,'$email','$uniqId','$completeRow_encode','$name','$Designation','$phone')";
            // echo '<p style="color:black;">'.$email.' '.$name.' '.$Designation.'  '.$phone.'</p>';
            // echo '<p style="color:black;">'. gettype ( str_replace('"', '',$phone)).'</p>';
            // die;

            // $query = "INSERT INTO `campaign_info_data`(`campaign_id`,`email`,`uuid`,`row_encode`,`name`,`company`,`phone`) VALUES('$campaign_id' ,'$email','$uniqId','$completeRow_encode','$name','$Designation','$phone')";
           // echo '<p style="color:black;">'.$query.'</p>';
        //     // die;
            $insert = mysqli_query($conn , "INSERT INTO `campaign_info_data`(`campaign_id`,`email`,`uuid`,`row_encode`,`name`,`company`,`phone`) VALUES('$campaign_id' ,'$email','$uniqId','$completeRow_encode','$name','$Designation','$phone')");
            if($insert){
                array_push($status , true);
            }else{
                array_push($status , false);
                // echo "error = ".mysqli_error($conn);
                echo '<p style="color:black;">'.mysqli_error($conn).'</p>';
                continue;
            }
        }
        // print_r($status);
        if(in_array(false , $status)){
            echo "<script>alert('insertion failed at some point!');</script>";
        }else{
            echo "<script>location.href = 'campaign_info.php';</script>";
        }

    }

?>

</quote> 

Comments

Popular posts from this blog

preparation analytics

sitemap date format

SQL SELECT statement