Noelia  Graham

Noelia Graham

1656735060

Exporter La Base De Données MySQL Au format CSV Et Excel Dans Laravel8

Dans Laravel, vous n'avez pas besoin d'écrire un long code pour exporter vos données, il existe déjà un package disponible pour cela - Laravel Excel.

Il permet d'exporter des données dans différents formats tels que - XLSX, CSV, XLS, HTML, etc.

Dans ce didacticiel, je montre comment vous pouvez exporter des données de base de données MySQL au format CSV et Excel à l'aide du package Laravel Excel dans Laravel 8.


1. Installer le package

Exigence -

  • PHP : ^7.2\|^8.0
  • Laravel : ^5.8
  • Feuille de calcul Php : ^1.21
  • psr/simple-cache : ^1.0
  • Extension PHP  php_zip activée
  • Extension PHP  php_xml activée
  • Extension PHP  php_gd2 activée
  • Extension PHP  php_iconv activée
  • Extension PHP  php_simplexml activée
  • Extension PHP  php_xmlreader activée
  • Extension PHP  php_zlib activée

Installez le package à l'aide de composer -

composer require maatwebsite/excel

Si vous obtenez une erreur lors de l'exécution de la commande ci-dessus, exécutez la commande ci-dessous -

composer require psr/simple-cache:^1.0 maatwebsite/excel

Après cela, exécutez à nouveau -

composer require maatwebsite/excel

2. Mettre à jour app.php

  • Ouvrir  config/app.php le fichier.
  • Ajoutez ce qui suit Maatwebsite\Excel\ExcelServiceProvider::class dans  'providers' -
'providers' => [
      ....
      ....
      ....  
      Maatwebsite\Excel\ExcelServiceProvider::class
];
  • Ajoutez ce qui suit  'Excel' => Maatwebsite\Excel\Facades\Excel::class dans  'aliases' -
'aliases' => [
     .... 
     .... 
     .... 
     'Excel' => Maatwebsite\Excel\Facades\Excel::class
];

3. Publier le package

Exécutez la commande -

php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider" --tag=config

Cela créera un nouveau excel.phpfichier au format config/.


4. Configuration de la base de données

Ouvrir .envle fichier.

Spécifiez l'hôte, le nom de la base de données, le nom d'utilisateur et le mot de passe.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=tutorial
DB_USERNAME=root
DB_PASSWORD=

5. Créer un tableau

  • Créez une nouvelle table Employeesà l'aide de la migration et ajoutez des enregistrements.
php artisan make:migration create_employees_table
  • Maintenant, accédez au database/migrations/dossier à partir de la racine du projet.
  • Trouvez un fichier PHP qui se termine par create_employees_tableet ouvrez-le.
  • Définissez la structure de la table dans la up()méthode.
public function up()
{
    Schema::create('employees', function (Blueprint $table) {
        $table->id();
        $table->string('username');
        $table->string('name');
        $table->string('email');
        $table->smallInteger('age');
        $table->timestamps();
    });
}
  • Exécutez la migration –
php artisan migrate
  • La table est créée et ajoutez-y quelques enregistrements.

6. Modèle

  • Créer un Employeesmodèle.
php artisan make:model Employees
  • Ouvrir  app/Models/Employees.php le fichier.
  • Spécifiez les attributs de modèle assignables en masse - nom d'utilisateur, nom, e-mail et âge à l'aide de la $fillablepropriété.

Code terminé

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Employees extends Model
{
    use HasFactory;

    protected $fillable = [
       'username','name','email','age'
    ];
}

7. Créer une classe d'exportation

Je crée 2 classes d'exportation juste à titre d'exemple -

1. Classe d'exportation des employés -

php artisan make:export EmployeesExport --model=Employees
  • Ouvrir  app/Exports/EmployeesExport.php le fichier.

La classe a 2 méthodes -

  • collection() – Charger les données d'exportation. Ici, vous pouvez soit -
    • Renvoie tous les enregistrements.
    • Renvoyez des colonnes spécifiques ou modifiez la réponse de retour que j'ai faite dans la prochaine classe d'exportation.
  • headers() – Spécifiez la ligne d'en-tête.

REMARQUE - Supprimez les méthodes headers() si vous ne souhaitez pas ajouter de ligne d'en-tête.

Code terminé

<?php

namespace App\Exports;

use App\Models\Employees;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;

class EmployeesExport implements FromCollection, WithHeadings
{

    /**
    * @return \Illuminate\Support\Collection
    */
    public function collection()
    {
        ## 1. Export all data
        // return Employees::all();

        ## 2. Export specific columns
        return Employees::select('id','username','name')->get();

    }

    public function headings(): array
    {
        return [
          '#',
          'Username',
          'Name'
        ];
    }
}

2. Classe EmployeesByAgeExport –

php artisan make:export EmployeesByAgeExport --model=Employees
  • Ouvrir  app/Exports/EmployeesByAgeExport.php le fichier.
  • Dans cette classe, j'ai ajouté __construct()pour autoriser l'envoi d'un paramètre lors de la création d'une instance de classe et l'utiliser pour récupérer des données.
  • Après avoir initialisé $resultArray pass $resultin collect()for return –return collect($result);
  • Mentionnez les noms des lignes d'en-tête dans la heading()méthode.

Code terminé

<?php

namespace App\Exports;

use App\Models\Employees;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;

class EmployeesByAgeExport implements FromCollection, WithHeadings
{
    private $agegreaterthan;

    public function __construct($age=0) 
    {
        $this->agegreaterthan = $age;
    }

    /**
    * @return \Illuminate\Support\Collection
    */
    public function collection()
    {
        ## 3. Conditional export and customize result
        $records = Employees::select('*')->where('age','>',$this->agegreaterthan)->get();

        $result = array();
        foreach($records as $record){
           $result[] = array(
              'id'=>$record->id,
              'username' => $record->username,
              'name' => $record->name,
              'email' => $record->email,
              'age' => $record->age,
              'status' => 1 // Custom data
           );
        }

        return collect($result);
    }

    public function headings(): array
    {
       return [
         '#',
         'Username',
         'Name',
         'Email',
         'Age',
         'Status'
       ];
    }
}

8. Itinéraire

  • Ouvrir  routes/web.php le fichier.
  • Définir 4 itinéraires –
    • / –  Charger la vue d'index.
    • employés/exportcsv – Exporter les données au format CSV.
    • employés/exportexcel – Exporter les données au format Excel.
    • employés/exportbyagecsv – Route POST pour exporter les données par âge.

Code terminé

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\EmployeesController;

Route::get('/', [EmployeesController::class, 'index'])->name('home'); 
Route::get('employees/exportcsv', [EmployeesController::class, 'exportCSV'])->name('employees.exportcsv');
Route::get('employees/exportexcel', [EmployeesController::class, 'exportExcel'])->name('employees.exportexcel');
Route::post('employees/exportbyagecsv', [EmployeesController::class, 'exportByAgeCSV'])->name('employees.exportbyagecsv');

9. Contrôleur

  • Créer  EmployeesController un contrôleur.
php artisan make:controller EmployeesController
  • Ouvrir  app/Http/Controllers/EmployeesController.php le fichier.
  • Importer et . EmployeesExportEmployeesByAgeExportExcel
  • Créez 4 méthodes –
    • index() – Charger la indexvue.
    • exportCSV() –  Pour exporter des données, appelez Excel::download().

Il faut 2 paramètres -

  1. Instance de classe.
  2. Nom de fichier avec extension.
$file_name = 'employees_'.date('Y_m_d_H_i_s').'.csv'; 
return Excel::download(new EmployeesExport, $file_name);
  • exportExcel() - Utilisez le même code ci-dessus et modifiez l'extension de fichier en .xlsx.
  • exportByAgeCSV() - Lit la valeur d'âge POST et la transmet avec l' EmployeesByAgeExport($age)instance.
$file_name = 'employees_'.date('Y_m_d_H_i_s').'.csv'; 
return Excel::download(new EmployeesByAgeExport($age), $file_name);

Code terminé

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Exports\EmployeesExport;
use App\Exports\EmployeesByAgeExport;
use Excel;

class EmployeesController extends Controller
{
    public function index(){
       return view('index');
    }

    // CSV Export
    public function exportCSV(){
       $file_name = 'employees_'.date('Y_m_d_H_i_s').'.csv';
       return Excel::download(new EmployeesExport, $file_name);
    }

    // Excel Export
    public function exportExcel(){
       $file_name = 'employees_'.date('Y_m_d_H_i_s').'.xlsx';
       return Excel::download(new EmployeesExport, $file_name);
    }

    // Conditional Export (csv)
    public function exportByAgeCSV(Request $request){

       $age = $request->age;

       $file_name = 'employees_'.date('Y_m_d_H_i_s').'.csv';
       return Excel::download(new EmployeesByAgeExport($age), $file_name);
    }
}

10. Voir

Créer  index.blade.php un fichier dans  resources/views/ le dossier.

Créez 2 éléments d'ancrage -

  1. Défini hrefsur {{ route('employees.exportcsv') }}pour l'exportation CSV.
  2. Défini hrefsur {{ route('employees.exportexcel') }}pour l'exportation vers Excel.

Créez un <form method='post' action="{{ route('employees.exportbyagecsv') }}">. Ajoutez un élément d'entrée pour entrer l'âge et un bouton d'envoi.

Code terminé

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1"> 
   <title>How to Export data to CSV & Excel format in Laravel 8</title>

   <!-- CSS -->
   <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" >
</head>
<body>

   <div class="container mt-5">

      <a class="btn btn-primary" href="{{ route('employees.exportcsv') }}">CSV Export</a> &nbsp;&nbsp;
      <a class="btn btn-primary" href="{{ route('employees.exportexcel') }}">Excel Export</a><br><br>

      <form method='post' action="{{ route('employees.exportbyagecsv') }}">
         @csrf
         <div class="mb-3">
            <label for="age" class="form-label">Age</label>
            <input type="number" class="form-control" id="age" name="age" value="0">
         </div>

         <button type="submit" class="btn btn-success">Export</button>
      </form>
   </div>

</body>
</html>

11. Démo

Voir la démo


12.Conclusion

Utilisez le constructeur dans la classe Export pour gérer les paramètres passés et utilisez-le pour récupérer des données.

Dans ce didacticiel, je n'ai mentionné que 2 formats d'exportation - CSV et Excel, mais il existe d'autres formats disponibles.

Source: https://makitweb.com

#php #laravel #mysql 

What is GEEK

Buddha Community

Exporter La Base De Données MySQL Au format CSV Et Excel Dans Laravel8
Noelia  Graham

Noelia Graham

1656735060

Exporter La Base De Données MySQL Au format CSV Et Excel Dans Laravel8

Dans Laravel, vous n'avez pas besoin d'écrire un long code pour exporter vos données, il existe déjà un package disponible pour cela - Laravel Excel.

Il permet d'exporter des données dans différents formats tels que - XLSX, CSV, XLS, HTML, etc.

Dans ce didacticiel, je montre comment vous pouvez exporter des données de base de données MySQL au format CSV et Excel à l'aide du package Laravel Excel dans Laravel 8.


1. Installer le package

Exigence -

  • PHP : ^7.2\|^8.0
  • Laravel : ^5.8
  • Feuille de calcul Php : ^1.21
  • psr/simple-cache : ^1.0
  • Extension PHP  php_zip activée
  • Extension PHP  php_xml activée
  • Extension PHP  php_gd2 activée
  • Extension PHP  php_iconv activée
  • Extension PHP  php_simplexml activée
  • Extension PHP  php_xmlreader activée
  • Extension PHP  php_zlib activée

Installez le package à l'aide de composer -

composer require maatwebsite/excel

Si vous obtenez une erreur lors de l'exécution de la commande ci-dessus, exécutez la commande ci-dessous -

composer require psr/simple-cache:^1.0 maatwebsite/excel

Après cela, exécutez à nouveau -

composer require maatwebsite/excel

2. Mettre à jour app.php

  • Ouvrir  config/app.php le fichier.
  • Ajoutez ce qui suit Maatwebsite\Excel\ExcelServiceProvider::class dans  'providers' -
'providers' => [
      ....
      ....
      ....  
      Maatwebsite\Excel\ExcelServiceProvider::class
];
  • Ajoutez ce qui suit  'Excel' => Maatwebsite\Excel\Facades\Excel::class dans  'aliases' -
'aliases' => [
     .... 
     .... 
     .... 
     'Excel' => Maatwebsite\Excel\Facades\Excel::class
];

3. Publier le package

Exécutez la commande -

php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider" --tag=config

Cela créera un nouveau excel.phpfichier au format config/.


4. Configuration de la base de données

Ouvrir .envle fichier.

Spécifiez l'hôte, le nom de la base de données, le nom d'utilisateur et le mot de passe.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=tutorial
DB_USERNAME=root
DB_PASSWORD=

5. Créer un tableau

  • Créez une nouvelle table Employeesà l'aide de la migration et ajoutez des enregistrements.
php artisan make:migration create_employees_table
  • Maintenant, accédez au database/migrations/dossier à partir de la racine du projet.
  • Trouvez un fichier PHP qui se termine par create_employees_tableet ouvrez-le.
  • Définissez la structure de la table dans la up()méthode.
public function up()
{
    Schema::create('employees', function (Blueprint $table) {
        $table->id();
        $table->string('username');
        $table->string('name');
        $table->string('email');
        $table->smallInteger('age');
        $table->timestamps();
    });
}
  • Exécutez la migration –
php artisan migrate
  • La table est créée et ajoutez-y quelques enregistrements.

6. Modèle

  • Créer un Employeesmodèle.
php artisan make:model Employees
  • Ouvrir  app/Models/Employees.php le fichier.
  • Spécifiez les attributs de modèle assignables en masse - nom d'utilisateur, nom, e-mail et âge à l'aide de la $fillablepropriété.

Code terminé

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Employees extends Model
{
    use HasFactory;

    protected $fillable = [
       'username','name','email','age'
    ];
}

7. Créer une classe d'exportation

Je crée 2 classes d'exportation juste à titre d'exemple -

1. Classe d'exportation des employés -

php artisan make:export EmployeesExport --model=Employees
  • Ouvrir  app/Exports/EmployeesExport.php le fichier.

La classe a 2 méthodes -

  • collection() – Charger les données d'exportation. Ici, vous pouvez soit -
    • Renvoie tous les enregistrements.
    • Renvoyez des colonnes spécifiques ou modifiez la réponse de retour que j'ai faite dans la prochaine classe d'exportation.
  • headers() – Spécifiez la ligne d'en-tête.

REMARQUE - Supprimez les méthodes headers() si vous ne souhaitez pas ajouter de ligne d'en-tête.

Code terminé

<?php

namespace App\Exports;

use App\Models\Employees;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;

class EmployeesExport implements FromCollection, WithHeadings
{

    /**
    * @return \Illuminate\Support\Collection
    */
    public function collection()
    {
        ## 1. Export all data
        // return Employees::all();

        ## 2. Export specific columns
        return Employees::select('id','username','name')->get();

    }

    public function headings(): array
    {
        return [
          '#',
          'Username',
          'Name'
        ];
    }
}

2. Classe EmployeesByAgeExport –

php artisan make:export EmployeesByAgeExport --model=Employees
  • Ouvrir  app/Exports/EmployeesByAgeExport.php le fichier.
  • Dans cette classe, j'ai ajouté __construct()pour autoriser l'envoi d'un paramètre lors de la création d'une instance de classe et l'utiliser pour récupérer des données.
  • Après avoir initialisé $resultArray pass $resultin collect()for return –return collect($result);
  • Mentionnez les noms des lignes d'en-tête dans la heading()méthode.

Code terminé

<?php

namespace App\Exports;

use App\Models\Employees;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;

class EmployeesByAgeExport implements FromCollection, WithHeadings
{
    private $agegreaterthan;

    public function __construct($age=0) 
    {
        $this->agegreaterthan = $age;
    }

    /**
    * @return \Illuminate\Support\Collection
    */
    public function collection()
    {
        ## 3. Conditional export and customize result
        $records = Employees::select('*')->where('age','>',$this->agegreaterthan)->get();

        $result = array();
        foreach($records as $record){
           $result[] = array(
              'id'=>$record->id,
              'username' => $record->username,
              'name' => $record->name,
              'email' => $record->email,
              'age' => $record->age,
              'status' => 1 // Custom data
           );
        }

        return collect($result);
    }

    public function headings(): array
    {
       return [
         '#',
         'Username',
         'Name',
         'Email',
         'Age',
         'Status'
       ];
    }
}

8. Itinéraire

  • Ouvrir  routes/web.php le fichier.
  • Définir 4 itinéraires –
    • / –  Charger la vue d'index.
    • employés/exportcsv – Exporter les données au format CSV.
    • employés/exportexcel – Exporter les données au format Excel.
    • employés/exportbyagecsv – Route POST pour exporter les données par âge.

Code terminé

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\EmployeesController;

Route::get('/', [EmployeesController::class, 'index'])->name('home'); 
Route::get('employees/exportcsv', [EmployeesController::class, 'exportCSV'])->name('employees.exportcsv');
Route::get('employees/exportexcel', [EmployeesController::class, 'exportExcel'])->name('employees.exportexcel');
Route::post('employees/exportbyagecsv', [EmployeesController::class, 'exportByAgeCSV'])->name('employees.exportbyagecsv');

9. Contrôleur

  • Créer  EmployeesController un contrôleur.
php artisan make:controller EmployeesController
  • Ouvrir  app/Http/Controllers/EmployeesController.php le fichier.
  • Importer et . EmployeesExportEmployeesByAgeExportExcel
  • Créez 4 méthodes –
    • index() – Charger la indexvue.
    • exportCSV() –  Pour exporter des données, appelez Excel::download().

Il faut 2 paramètres -

  1. Instance de classe.
  2. Nom de fichier avec extension.
$file_name = 'employees_'.date('Y_m_d_H_i_s').'.csv'; 
return Excel::download(new EmployeesExport, $file_name);
  • exportExcel() - Utilisez le même code ci-dessus et modifiez l'extension de fichier en .xlsx.
  • exportByAgeCSV() - Lit la valeur d'âge POST et la transmet avec l' EmployeesByAgeExport($age)instance.
$file_name = 'employees_'.date('Y_m_d_H_i_s').'.csv'; 
return Excel::download(new EmployeesByAgeExport($age), $file_name);

Code terminé

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Exports\EmployeesExport;
use App\Exports\EmployeesByAgeExport;
use Excel;

class EmployeesController extends Controller
{
    public function index(){
       return view('index');
    }

    // CSV Export
    public function exportCSV(){
       $file_name = 'employees_'.date('Y_m_d_H_i_s').'.csv';
       return Excel::download(new EmployeesExport, $file_name);
    }

    // Excel Export
    public function exportExcel(){
       $file_name = 'employees_'.date('Y_m_d_H_i_s').'.xlsx';
       return Excel::download(new EmployeesExport, $file_name);
    }

    // Conditional Export (csv)
    public function exportByAgeCSV(Request $request){

       $age = $request->age;

       $file_name = 'employees_'.date('Y_m_d_H_i_s').'.csv';
       return Excel::download(new EmployeesByAgeExport($age), $file_name);
    }
}

10. Voir

Créer  index.blade.php un fichier dans  resources/views/ le dossier.

Créez 2 éléments d'ancrage -

  1. Défini hrefsur {{ route('employees.exportcsv') }}pour l'exportation CSV.
  2. Défini hrefsur {{ route('employees.exportexcel') }}pour l'exportation vers Excel.

Créez un <form method='post' action="{{ route('employees.exportbyagecsv') }}">. Ajoutez un élément d'entrée pour entrer l'âge et un bouton d'envoi.

Code terminé

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1"> 
   <title>How to Export data to CSV & Excel format in Laravel 8</title>

   <!-- CSS -->
   <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" >
</head>
<body>

   <div class="container mt-5">

      <a class="btn btn-primary" href="{{ route('employees.exportcsv') }}">CSV Export</a> &nbsp;&nbsp;
      <a class="btn btn-primary" href="{{ route('employees.exportexcel') }}">Excel Export</a><br><br>

      <form method='post' action="{{ route('employees.exportbyagecsv') }}">
         @csrf
         <div class="mb-3">
            <label for="age" class="form-label">Age</label>
            <input type="number" class="form-control" id="age" name="age" value="0">
         </div>

         <button type="submit" class="btn btn-success">Export</button>
      </form>
   </div>

</body>
</html>

11. Démo

Voir la démo


12.Conclusion

Utilisez le constructeur dans la classe Export pour gérer les paramètres passés et utilisez-le pour récupérer des données.

Dans ce didacticiel, je n'ai mentionné que 2 formats d'exportation - CSV et Excel, mais il existe d'autres formats disponibles.

Source: https://makitweb.com

#php #laravel #mysql 

Joe  Hoppe

Joe Hoppe

1595905879

Best MySQL DigitalOcean Performance – ScaleGrid vs. DigitalOcean Managed Databases

HTML to Markdown

MySQL is the all-time number one open source database in the world, and a staple in RDBMS space. DigitalOcean is quickly building its reputation as the developers cloud by providing an affordable, flexible and easy to use cloud platform for developers to work with. MySQL on DigitalOcean is a natural fit, but what’s the best way to deploy your cloud database? In this post, we are going to compare the top two providers, DigitalOcean Managed Databases for MySQL vs. ScaleGrid MySQL hosting on DigitalOcean.

At a glance – TLDR
ScaleGrid Blog - At a glance overview - 1st pointCompare Throughput
ScaleGrid averages almost 40% higher throughput over DigitalOcean for MySQL, with up to 46% higher throughput in write-intensive workloads. Read now

ScaleGrid Blog - At a glance overview - 2nd pointCompare Latency
On average, ScaleGrid achieves almost 30% lower latency over DigitalOcean for the same deployment configurations. Read now

ScaleGrid Blog - At a glance overview - 3rd pointCompare Pricing
ScaleGrid provides 30% more storage on average vs. DigitalOcean for MySQL at the same affordable price. Read now

MySQL DigitalOcean Performance Benchmark
In this benchmark, we compare equivalent plan sizes between ScaleGrid MySQL on DigitalOcean and DigitalOcean Managed Databases for MySQL. We are going to use a common, popular plan size using the below configurations for this performance benchmark:

Comparison Overview
ScaleGridDigitalOceanInstance TypeMedium: 4 vCPUsMedium: 4 vCPUsMySQL Version8.0.208.0.20RAM8GB8GBSSD140GB115GBDeployment TypeStandaloneStandaloneRegionSF03SF03SupportIncludedBusiness-level support included with account sizes over $500/monthMonthly Price$120$120

As you can see above, ScaleGrid and DigitalOcean offer the same plan configurations across this plan size, apart from SSD where ScaleGrid provides over 20% more storage for the same price.

To ensure the most accurate results in our performance tests, we run the benchmark four times for each comparison to find the average performance across throughput and latency over read-intensive workloads, balanced workloads, and write-intensive workloads.

Throughput
In this benchmark, we measure MySQL throughput in terms of queries per second (QPS) to measure our query efficiency. To quickly summarize the results, we display read-intensive, write-intensive and balanced workload averages below for 150 threads for ScaleGrid vs. DigitalOcean MySQL:

ScaleGrid MySQL vs DigitalOcean Managed Databases - Throughput Performance Graph

For the common 150 thread comparison, ScaleGrid averages almost 40% higher throughput over DigitalOcean for MySQL, with up to 46% higher throughput in write-intensive workloads.

#cloud #database #developer #digital ocean #mysql #performance #scalegrid #95th percentile latency #balanced workloads #developers cloud #digitalocean droplet #digitalocean managed databases #digitalocean performance #digitalocean pricing #higher throughput #latency benchmark #lower latency #mysql benchmark setup #mysql client threads #mysql configuration #mysql digitalocean #mysql latency #mysql on digitalocean #mysql throughput #performance benchmark #queries per second #read-intensive #scalegrid mysql #scalegrid vs. digitalocean #throughput benchmark #write-intensive

Laravel 8 Import Export CSV/EXCEL File Example

In this post i will show you Laravel 8 Import Export CSV/EXCEL File Example. We will simple create import data to xls, csv file and also we will import data to database using csv file in laravel 8 application.

Using this example we can easily import-export and download the csv & excel file from the database using the maatwebsite/excel composer package. maatwebsite/excel provide easy way to import and export csv file in laravel 8 using database model.

Laravel 8 Import Export CSV/EXCEL File Example

https://websolutionstuff.com/post/laravel-8-import-export-csv-excel-file-example

#laravel 8 import export csv/excel file example #laravel 8 #import #export #csv/excel #import and export csv file in laravel 8

Gerhard  Brink

Gerhard Brink

1622622360

Data Validation in Excel

Data Validation in Excel

In this tutorial, let’s discuss what data validation is and how it can be implemented in MS-Excel. Let’s start!!!

What Is Data Validation in Excel?

Data Validation is one of the features in MS-Excel which helps in maintaining the consistency of the data in the spreadsheet. It controls the type of data that can enter in the data validated cells.

Data Validation in MS Excel

Now, let’s have a look at how data validation works and how to implement it in the worksheet:

To apply data validation for the cells, then follow the steps.

1: Choose to which all cells the validation of data should work.

2: Click on the DATA tab.

3: Go to the Data Validation option.

4: Choose the drop down option in it and click on the Data Validation.

data validation in Excel

Once you click on the data validation menu from the ribbon, a box appears with the list of data validation criteria, Input message and error message.

Let’s first understand, what is an input message and error message?

Once, the user clicks the cell, the input message appears in a small box near the cell.

If the user violates the condition of that particular cell, then the error message pops up in a box in the spreadsheet.

The advantage of both the messages is that the input and as well as the error message guide the user about how to fill the cells. Both the messages are customizable also.

Let us have a look at how to set it up and how it works with a sample

#ms excel tutorials #circle invalid data in excel #clear validation circles in excel #custom data validation in excel #data validation in excel #limitation in data validation in excel #setting up error message in excel #setting up input message in excel #troubleshooting formulas in excel #validate data in excel

Importer Des Données De Fichier CSV Dans La Base De Données MySQL

Un CSV est un fichier de valeurs séparées par des virgules, utile pour stocker des données dans un format tabulaire. CSV est largement utilisé avec les tableurs, l'extension .csv est une justification du fichier CSV.

Il offre un moyen éloquent de transférer des informations entre diverses applications et est largement utilisé avec Microsoft Excel ou Google Spreadsheets.

Tout au long de ce guide détaillé, nous vous apprendrons comment importer des données de fichiers CSV dans la base de données MySQL dans l'application Codeigniter 4 depuis le début.

Les données sont partout ; il est fort possible que la plupart du temps, vous souhaitiez importer des données de fichier Excel ou de fichier CSV dans la base de données MySQL dans Codeigniter ; si vous savez comment c'est fait, ça va, mais si vous ne savez pas comment construire cette fonctionnalité, cela devient une douleur intense.

Par conséquent, nous allons vous expliquer comment importer dynamiquement des données d'un fichier Excel vers MySQL dans CodeIgniter. Nous partagerons des instructions spécifiques qui vous aideront à étancher votre soif de créer une fonctionnalité simple pour importer un fichier CSV dans la base de données MySQL Codeigniter.

Télécharger le projet Codeigniter

Lancez la première étape de création de l'application Web Codeigniter, et il existe deux façons simples.

Vous pouvez télécharger via l'interface de ligne de commande et exécuter la commande ci-dessous, mais assurez-vous que Composer est configuré sur votre machine.

composer create-project codeigniter4/appstarter

Ou, vous pouvez télécharger directement l'application Codeigniter directement depuis leur site officiel.

Après avoir téléchargé l'application, décompressez le projet et renommez-le.

Configurer la gestion des erreurs

Ensuite, défini display_errorssur 1 dans app/Config/Boot/production.php , cela rend le processus de gestion des erreurs profondément facile.

ini_set('display_errors', '1');

Générer une table utilisateur dans la base de données

Nous avons fourni une requête SQL ci-dessous ; Je n'ai pas besoin de vous dire ce qu'il fait, n'est-ce pas ? Alors, ouvrez la console de requête SQL dans PHPMyAdmin, entrez cette requête ; après avoir exécuté cette requête avec succès, vous ajouterez une nouvelle table dans la base de données MySQL.

CREATE TABLE students (
    id int(11) NOT NULL AUTO_INCREMENT COMMENT 'Primary Key',
    name varchar(150) NOT NULL COMMENT 'Name',
    email varchar(255) NOT NULL COMMENT 'Email',
    phone varchar(250) NOT NULL COMMENT 'Phone',
    created_at varchar(20) NOT NULL COMMENT 'Date Created',
    PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Student table' AUTO_INCREMENT=1;

Se connecter à la base de données

Pour stocker les données du fichier CSV dans la base de données, ouvrez app/Config/Database.php , puis ajoutez les détails de la base de données comme le nom de la base de données, le nom d'utilisateur et le mot de passe.

public $default = [
        'DSN'      => '',
        'hostname' => 'localhost',
        'username' => 'root',
        'password' => '',
        'database' => 'codeigniter_db',
        'DBDriver' => 'MySQLi',
        'DBPrefix' => '',
        'pConnect' => false,
        'DBDebug'  => (ENVIRONMENT !== 'development'),
        'cacheOn'  => false,
        'cacheDir' => '',
        'charset'  => 'utf8',
        'DBCollat' => 'utf8_general_ci',
        'swapPre'  => '',
        'encrypt'  => false,
        'compress' => false,
        'strictOn' => false,
        'failover' => [],
        'port'     => 3306,
    ];

Vous pouvez ou non voir "Impossible de se connecter à la base de données : erreur Codeigniter" . Ne vous inquiétez pas; nous allons régler cela pour vous. Ajoutez l'une des valeurs dans le nom d'hôte en fonction de votre serveur local (MAMP ou XAMP).

# MAMP
public $default = [
  'hostname' => '/Applications/MAMP/tmp/mysql/mysql.sock',
]
# XAMP
public $default = [
  
  'hostname' => '/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock',
]

Créer un exemple de fichier CSV

Ne vous inquiétez pas. Si vous n'avez pas de fichier CSV, vous pouvez copier le code suivant séparé par des virgules, le coller dans l'éditeur de code et enregistrer le fichier avec l' extension .csv .

name, email, phone, created_at
Sam Coury, christine1998@yahoo.com, 772-267-3636, 2021-02-02
Chris Ellis, ellis@yahoo.com, 270-562-2304, 2020-03-03
Cameron Finley, cameron@rediff.com, 813-416-4979, 2019-01-05
Howard Schlueter, schlueter@gmail.com, 828-207-1592, 2018-05-02
Jordan Tafoya, annabell2001@hotmail.com, 512-596-3622, 2017-05-11

Créer un nouveau modèle

L'idée du modèle tourne autour de la tenue du prototype du schéma de la table de la base de données, créez par conséquent StudentModel.php dans le dossier app/Models.

Mettez à jour le fichier app/Models/StudentModel.php .

<?php 
namespace App\Models;
use CodeIgniter\Database\ConnectionInterface;
use CodeIgniter\Model;
 
class StudentModel extends Model
{
    protected $table = 'students';
    protected $allowedFields = [
        'name', 
        'email', 
        'phone',
        'created_at'
    ];
}

Générer et configurer le contrôleur

Maintenant, dans cette section, nous devons créer et configurer un fichier de contrôleur, donc créer StudentController.php dans le dossier app/Controllers. Ce fichier contient la classe unique, qui devient le lieu de diverses fonctions, qui effectue différentes tâches sous un même toit.

Mettez à jour le fichier app/Controllers/StudentController.php .

<?php 
namespace App\Controllers;
use CodeIgniter\Controller;
use CodeIgniter\HTTP\RequestInterface;
use App\Models\StudentModel;

class StudentController extends Controller
{
    public function index()
    {
        return view('index');
    }
    public function importCsvToDb()
    {
        $input = $this->validate([
            'file' => 'uploaded[file]|max_size[file,2048]|ext_in[file,csv],'
        ]);
        if (!$input) {
            $data['validation'] = $this->validator;
            return view('index', $data); 
        }else{
            if($file = $this->request->getFile('file')) {
            if ($file->isValid() && ! $file->hasMoved()) {
                $newName = $file->getRandomName();
                $file->move('../public/csvfile', $newName);
                $file = fopen("../public/csvfile/".$newName,"r");
                $i = 0;
                $numberOfFields = 4;
                $csvArr = array();
                
                while (($filedata = fgetcsv($file, 1000, ",")) !== FALSE) {
                    $num = count($filedata);
                    if($i > 0 && $num == $numberOfFields){ 
                        $csvArr[$i]['name'] = $filedata[0];
                        $csvArr[$i]['email'] = $filedata[1];
                        $csvArr[$i]['phone'] = $filedata[2];
                        $csvArr[$i]['created_at'] = $filedata[3];
                    }
                    $i++;
                }
                fclose($file);
                $count = 0;
                foreach($csvArr as $userdata){
                    $students = new StudentModel();
                    $findRecord = $students->where('email', $userdata['email'])->countAllResults();
                    if($findRecord == 0){
                        if($students->insert($userdata)){
                            $count++;
                        }
                    }
                }
                session()->setFlashdata('message', $count.' rows successfully added.');
                session()->setFlashdata('alert-class', 'alert-success');
            }
            else{
                session()->setFlashdata('message', 'CSV file coud not be imported.');
                session()->setFlashdata('alert-class', 'alert-danger');
            }
            }else{
            session()->setFlashdata('message', 'CSV file coud not be imported.');
            session()->setFlashdata('alert-class', 'alert-danger');
            }
        }
        return redirect()->route('/');         
    }
}

Après avoir téléchargé les magasins de fichiers CSV dans le répertoire local du projet Codeigniter, n'oubliez donc pas de créer le csvfiledossier dans le répertoire public.

Configurer des itinéraires

La classe de contrôleur est prête, et maintenant nous devons exécuter les fonctions que nous avons définies dans la classe de contrôleur, entrer dans le fichier Routes et créer la méthode get et post en utilisant $routes, get charge le modèle de vue. En revanche, la publication invoque la demande de stockage des données du fichier CSV dans la base de données.

Mettez à jour le fichier app/Config/Routes.php .

$routes->get('/', 'StudentController::index');
$routes->post('import-csv', 'StudentController::importCsvToDb');

Créer un fichier de vue Codeigniter

Dans cette section, nous travaillerons avec le fichier de vue ; ce fichier affichera les données du fichier CSV d'importation dans le composant de base de données MySQL, créez donc index.php dans le dossier app/Views.

Nous devons concevoir le formulaire à l'aide de Bootstrap 5, créer un formulaire de téléchargement de fichier Codeigniter, lier le formulaire à l'itinéraire de publication et informer l'utilisateur de la progression du téléchargement de fichier à l'aide de la boîte d'alerte Bootstrap 5.

Mettez à jour le fichier app/Views/index.php .

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Laravel Import Excel CSV to MySQL</title>
	<meta name="description" content="The tiny framework with powerful features">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	
	<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet">
	<style>
	  .container {
		max-width: 500px;
	  }
	</style>
</head>
<body>
<div class="container mt-5">
	<div class="card">
		<div class="card-header text-center">
			<strong>Upload CSV File</strong>
		</div>
		<div class="card-body">
		<div class="mt-2">
			<?php if (session()->has('message')){ ?>
				<div class="alert <?=session()->getFlashdata('alert-class') ?>">
					<?=session()->getFlashdata('message') ?>
				</div>
			<?php } ?>
			<?php $validation = \Config\Services::validation(); ?>
		</div>	
			<form action="<?=site_url('import-csv') ?>" method="post" enctype="multipart/form-data">
				<div class="form-group mb-3">
					<div class="mb-3">
						<input type="file" name="file" class="form-control" id="file">
					</div>					   
				</div>
				<div class="d-grid">
					<input type="submit" name="submit" value="Upload" class="btn btn-dark" />
				</div>
			</form>
		</div>
	</div>
</div>
</body>
</html>

Démarrer l'application IC

L'idée de cette dernière section est de tester la fonctionnalité que nous avons construite.

Ainsi, nous devons passer par quelques étapes, comme démarrer le serveur Codeigniter, copier l'URL donnée, la coller dans le navigateur et afficher l'application.

php spark serve
http://localhost:8080

Codeigniter 4 Importer un fichier CSV dans une base de données MySQL Exemple

Conclusion

Alors, c'était ça; jusqu'à présent, nous avons décrit chaque information pour vous aider à créer une fonctionnalité simple, importer un fichier Excel CSV dans la base de données MySQL dans Codeigniter.

Nous avons fait de notre mieux et n'avons rien négligé, et vous pouvez assimiler ce guide profond; à partir de maintenant, vous pourrez répliquer efficacement cette fonctionnalité dans vos projets CodeIgniter.

Travailler avec des données est la principale exigence ; nous ne savons pas dans quel format ni dans quel format nous recevons les données, c'est notre travail de placer les données dans la base de données de manière pragmatique, et c'est exactement ce que nous avons fait dans cet exemple d'importation de données de fichier CSV Codeigniter 4 vers la base de données MySQL.

Source : https://www.positronx.io/codeigniter-import-csv-file-data-to-mysql-database-tutorial/

#mysql #csv #database #codeigniter