Récupérer Des Données De La Base De Données MySQL à L'aide D'AJAX

 MySQL est un système de gestion de base de données relationnelle basé sur SQL - Structured Query Language, et la gestion des données dans MySQL n'est pas si difficile.

Dans ce guide détaillé, nous allons découvrir comment récupérer des données de la base de données MySQL en utilisant AJAX dans l'application Node js. Nous allons construire un élément déroulant HTML dans lequel nous obtiendrons les enregistrements de la base de données.

Nous allons installer certains packages à partir du registre NPM, et ces packages nous aideront à connecter Node à la base de données MySQL et à créer les routes API qui interagiront avec la base de données.

De plus, nous allons créer le script de nœud, qui nous aidera à exécuter le serveur de nœud.

Découvrons comment travailler avec la base de données MySQL via un environnement de nœud.

Comment obtenir des données de la base de données MySQL à l'aide de Node Js et jQuery Ajax

  • Étape 1 : Créer une application de nœud
  • Étape 2 : Ajouter des modules NPM
  • Étape 3 : Créer une table dans la base de données
  • Étape 4 : connexion à la base de données
  • Étape 5 : Créer un fichier serveur
  • Étape 6 : Rendre et afficher les données en HTML
  • Étape 7 : Projet de nœud de service

Créer une application de nœud

Tapez la commande mkdir suivie du nom de votre projet et appuyez sur Entrée pour créer un nouveau dossier.

mkdir node-vlog

Ensuite, déplacez-vous dans le dossier de l'application.

cd node-vlog

Utilisez la commande npm init, cette commande crée le fichier package.json , où les méta-informations de votre projet restent.

npm init

À la racine du projet, créez un fichier app.js , enregistrez le nom du fichier dans la section des scripts afin que ce script de nœud puisse être appelé à l'aide de l'outil de ligne de commande.

{
  "main": "app.js",
}

Ajouter des modules NPM

Nous allons installer les packages ci-dessous à partir du registre npm, exécuter la commande et installer les modules simultanément.

npm install ejs express cors mysql body-parser nodemon

Créer une table dans la base de données

Dans votre base de données, vous devez avoir une table avec quelques enregistrements, afin que vous puissiez obtenir les données de la base de données.

Si vous n'avez pas créé de table, exécutez la commande sql donnée à partir de l'onglet sql.

CREATE DATABASE nodedb;

CREATE TABLE Country (
  id int not null,
  name varchar(150) not null);
INSERT INTO country VALUES(1,'Colombia');
INSERT INTO country VALUES(2,'Estonia');
INSERT INTO country VALUES(3,'Belgium');
INSERT INTO country VALUES(4,'Austria');
INSERT INTO country VALUES(5,'Denmark');</code></pre>

Connexion à la base de données

Dans votre projet de nœud, créez le fichier database.js , puis dans le code donné, ajoutez vos informations d'identification de base de données afin de connecter la base de données à l'application de nœud.

var mysql = require('mysql')
var connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '',
  database: 'test'
})
connection.connect((err) => {
  if (err) {
    console.log(err)
    return
  }
  console.log('Database connected')
})
module.exports = connection

Créer un fichier serveur

Ouvrez le fichier de script app.js , dans ce fichier mettez le code donné.

var express = require('express')
var path = require('path')
var createError = require('http-errors')
var cors = require('cors')
var bodyParser = require('body-parser')
var app = express()

var dbMySQLNode = require('./database')
// view engine setup
app.set('views', path.join(__dirname, '/'))
app.set('view engine', 'ejs')
app.use(bodyParser.json())
app.use(
  bodyParser.urlencoded({
    extended: true,
  }),
)

app.use(cors())
app.get('/', (req, res) => {
  res.render('index')
})
app.get('/fetch-countries', function (req, res) {
  dbMySQLNode.query('SELECT * FROM Country ORDER BY id desc', function (
    error,
    response,
  ) {
    if (error) {
      res.json({
        msg: error,
      })
    } else {
      res.json({
        msg: 'Data successfully fetched',
        country: response,
      })
    }
  })
})
app.listen(5555, function () {
  console.log('Node app is being served on port: 5555')
})
module.exports = app

Le script suivant est chargé de configurer le moteur de vue ejs, de définir le paramètre cors, de déclarer la route qui communiquera avec la base de données et de définir le port d'application.

Rendu et affichage des données en HTML

A la racine de votre application, créez le fichier index.ejs , ce fichier gérera la vue de votre application node. Il affichera les enregistrements que vous obtenez de la base de données.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <link
      href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"
      rel="stylesheet"
    />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  </head>
  <body>
    <div class="container">
      <h2 class="mb-4">Node js Ajax Get Data from MySQL Example</h2>
      <div class="form-group">
        <label><strong>Countries</strong></label>
        <select class="form-control" id="dynamicDropdown"></select>
      </div>
    </div>
    <script>
      $(document).ready(function () {
        function showCountryCollection() {
          var count_id = this.value;
          $("#dynamicDropdown").html("");
          $.ajax({
            url: "http://localhost:5555/fetch-countries",
            type: "GET",
            dataType: "json",
            success: function (res) {
              console.log(res);
              $("#dynamicDropdown").html('<option value="">Select</option>');
              $.each(res.Country, function (key, value) {
                $("#dynamicDropdown").append(
                  '<option value="' + value.id + '">' + value.name + "</option>"
                );
              });
            },
          });
        }
        showCountryCollection();
      });
    </script>
  </body>
</html>

Projet de nœud de service

En fin de compte, vous devez évoquer la commande suggérée pour démarrer l'application de nœud.

nodemon

Vous devez utiliser cette URL pour tester l'application :

http://localhost/:5555

Conclusion

Dans ce guide, nous avons examiné le processus d'obtention des résultats de la base de données MySQL dans l'application Node js.

Nous avons expliqué comment récupérer les données de la base de données MySQL et afficher les enregistrements dans la liste déroulante de sélection HTML dans une application Node js à l'aide des dépendances externes.

Nous espérons que vous avez aimé ce guide et que vous le partagez avec d'autres. 

Source : https://www.positronx.io/node-ajax-retrieve-records-from-mysql-database-tutorial/

#mysql #database #node #ajax 

What is GEEK

Buddha Community

Récupérer Des Données De La Base De Données MySQL à L'aide D'AJAX
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

Récupérer Des Données De La Base De Données MySQL à L'aide D'AJAX

 MySQL est un système de gestion de base de données relationnelle basé sur SQL - Structured Query Language, et la gestion des données dans MySQL n'est pas si difficile.

Dans ce guide détaillé, nous allons découvrir comment récupérer des données de la base de données MySQL en utilisant AJAX dans l'application Node js. Nous allons construire un élément déroulant HTML dans lequel nous obtiendrons les enregistrements de la base de données.

Nous allons installer certains packages à partir du registre NPM, et ces packages nous aideront à connecter Node à la base de données MySQL et à créer les routes API qui interagiront avec la base de données.

De plus, nous allons créer le script de nœud, qui nous aidera à exécuter le serveur de nœud.

Découvrons comment travailler avec la base de données MySQL via un environnement de nœud.

Comment obtenir des données de la base de données MySQL à l'aide de Node Js et jQuery Ajax

  • Étape 1 : Créer une application de nœud
  • Étape 2 : Ajouter des modules NPM
  • Étape 3 : Créer une table dans la base de données
  • Étape 4 : connexion à la base de données
  • Étape 5 : Créer un fichier serveur
  • Étape 6 : Rendre et afficher les données en HTML
  • Étape 7 : Projet de nœud de service

Créer une application de nœud

Tapez la commande mkdir suivie du nom de votre projet et appuyez sur Entrée pour créer un nouveau dossier.

mkdir node-vlog

Ensuite, déplacez-vous dans le dossier de l'application.

cd node-vlog

Utilisez la commande npm init, cette commande crée le fichier package.json , où les méta-informations de votre projet restent.

npm init

À la racine du projet, créez un fichier app.js , enregistrez le nom du fichier dans la section des scripts afin que ce script de nœud puisse être appelé à l'aide de l'outil de ligne de commande.

{
  "main": "app.js",
}

Ajouter des modules NPM

Nous allons installer les packages ci-dessous à partir du registre npm, exécuter la commande et installer les modules simultanément.

npm install ejs express cors mysql body-parser nodemon

Créer une table dans la base de données

Dans votre base de données, vous devez avoir une table avec quelques enregistrements, afin que vous puissiez obtenir les données de la base de données.

Si vous n'avez pas créé de table, exécutez la commande sql donnée à partir de l'onglet sql.

CREATE DATABASE nodedb;

CREATE TABLE Country (
  id int not null,
  name varchar(150) not null);
INSERT INTO country VALUES(1,'Colombia');
INSERT INTO country VALUES(2,'Estonia');
INSERT INTO country VALUES(3,'Belgium');
INSERT INTO country VALUES(4,'Austria');
INSERT INTO country VALUES(5,'Denmark');</code></pre>

Connexion à la base de données

Dans votre projet de nœud, créez le fichier database.js , puis dans le code donné, ajoutez vos informations d'identification de base de données afin de connecter la base de données à l'application de nœud.

var mysql = require('mysql')
var connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '',
  database: 'test'
})
connection.connect((err) => {
  if (err) {
    console.log(err)
    return
  }
  console.log('Database connected')
})
module.exports = connection

Créer un fichier serveur

Ouvrez le fichier de script app.js , dans ce fichier mettez le code donné.

var express = require('express')
var path = require('path')
var createError = require('http-errors')
var cors = require('cors')
var bodyParser = require('body-parser')
var app = express()

var dbMySQLNode = require('./database')
// view engine setup
app.set('views', path.join(__dirname, '/'))
app.set('view engine', 'ejs')
app.use(bodyParser.json())
app.use(
  bodyParser.urlencoded({
    extended: true,
  }),
)

app.use(cors())
app.get('/', (req, res) => {
  res.render('index')
})
app.get('/fetch-countries', function (req, res) {
  dbMySQLNode.query('SELECT * FROM Country ORDER BY id desc', function (
    error,
    response,
  ) {
    if (error) {
      res.json({
        msg: error,
      })
    } else {
      res.json({
        msg: 'Data successfully fetched',
        country: response,
      })
    }
  })
})
app.listen(5555, function () {
  console.log('Node app is being served on port: 5555')
})
module.exports = app

Le script suivant est chargé de configurer le moteur de vue ejs, de définir le paramètre cors, de déclarer la route qui communiquera avec la base de données et de définir le port d'application.

Rendu et affichage des données en HTML

A la racine de votre application, créez le fichier index.ejs , ce fichier gérera la vue de votre application node. Il affichera les enregistrements que vous obtenez de la base de données.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <link
      href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"
      rel="stylesheet"
    />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  </head>
  <body>
    <div class="container">
      <h2 class="mb-4">Node js Ajax Get Data from MySQL Example</h2>
      <div class="form-group">
        <label><strong>Countries</strong></label>
        <select class="form-control" id="dynamicDropdown"></select>
      </div>
    </div>
    <script>
      $(document).ready(function () {
        function showCountryCollection() {
          var count_id = this.value;
          $("#dynamicDropdown").html("");
          $.ajax({
            url: "http://localhost:5555/fetch-countries",
            type: "GET",
            dataType: "json",
            success: function (res) {
              console.log(res);
              $("#dynamicDropdown").html('<option value="">Select</option>');
              $.each(res.Country, function (key, value) {
                $("#dynamicDropdown").append(
                  '<option value="' + value.id + '">' + value.name + "</option>"
                );
              });
            },
          });
        }
        showCountryCollection();
      });
    </script>
  </body>
</html>

Projet de nœud de service

En fin de compte, vous devez évoquer la commande suggérée pour démarrer l'application de nœud.

nodemon

Vous devez utiliser cette URL pour tester l'application :

http://localhost/:5555

Conclusion

Dans ce guide, nous avons examiné le processus d'obtention des résultats de la base de données MySQL dans l'application Node js.

Nous avons expliqué comment récupérer les données de la base de données MySQL et afficher les enregistrements dans la liste déroulante de sélection HTML dans une application Node js à l'aide des dépendances externes.

Nous espérons que vous avez aimé ce guide et que vous le partagez avec d'autres. 

Source : https://www.positronx.io/node-ajax-retrieve-records-from-mysql-database-tutorial/

#mysql #database #node #ajax 

Léon  Peltier

Léon Peltier

1655995200

Importer Un Fichier CSV Dans La Base De Données MySQL à L'aide De Node

Dans ce tutoriel, vous découvrirez comment importer un fichier CSV dans la base de données MySQL à l'aide de Node js et du package Fast CSV.

Le téléchargement de fichiers vers des bases de données est facilité par le package Multer. Multer est un package npm populaire qui permet de télécharger des fichiers de manière moins atroce.

Il est conçu pour node js, un middleware puissant qui gère les données multipart/form et est principalement utilisé pour télécharger des fichiers.
Nous combinerons multer avec le module Fast-csv pour importer des fichiers dans la base de données MySQL.

Fast CSV est un package pratique qui analyse et formate les fichiers CSV ou tout autre fichier de valeurs délimitées dans l'environnement node js.

Il existe également d'autres modules que nous utiliserons dans ce guide; ces packages nous aideront à créer la fonctionnalité d'importation de fichiers csv dans Node js.

Comment transférer des données d'un fichier CSV dans une base de données MySQL à l'aide de Node Js

  • Étape 1 : Créer une application de nœud
  • Étape 2 : Installer les modules NPM
  • Étape 3 : Générer une table MySQL
  • Étape 4 : Créer un formulaire d'importation de fichier HTML
  • Étape 5 : Créer un fichier serveur
  • Étape 6 : Exécuter le projet de nœud

Créer une application de nœud

Accédez à l'invite de commande de votre terminal et exécutez la commande donnée pour rendre le dossier vide pour le projet de nœud.

mkdir node-csv

Entrez dans le dossier vide :

cd node-csv

Tapez la commande suggérée, puis exécutez la commande donnée pour générer le nouveau fichier package.json .

npm init

Maintenant, le script de nœud a été créé, il doit être enregistré dans la section des scripts comme indiqué, assurez-vous d'ajouter le nom du script dans le fichier package.json .

{
  "main": "app.js",
}
Install NPM Modules

De plus, nous devons taper la commande donnée sur le terminal et appuyer sur Entrée pour installer les modules donnés.

npm install fast-csv express mysql multer nodemon body-parser

Générer une table MySQL

Il est facile de créer une nouvelle table pour stocker les enregistrements de fichiers CSV, vous pouvez créer la table de données MySQL à l'aide de la commande SQL donnée.

CREATE TABLE `users` (
  `id` bigint(11) NOT NULL,
  `name` varchar(150) DEFAULT NULL,
  `email` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE= InnoDB DEFAULT CHARSET=utf8

Créer un formulaire d'importation de fichier HTML

Créons un fichier index.html , ce fichier gérera la vue de la fonctionnalité.

Nous devons ajouter le lien Bootstrap 5 dans la section head, cela nous permettra de créer un composant d'interface utilisateur de téléchargement de fichiers.

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Node CSV File Upload</title>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <link
      href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"
      rel="stylesheet"
    />
  </head>
  <body>
    <h2 class="mb-3">Node Import CSV File to MySQL database Example</h2>
    <form action="/import-csv" method="post" enctype="multipart/form-data">
      <div class="mb-3">
        <input
          type="file"
          class="form-control"
          name="import-csv"
          accept="csv"
        />
      </div>
      <div class="d-grid">
        <input type="submit" class="btn btn-dark" value="Store File" />
      </div>
    </form>
  </body>
</html>

Créer un fichier serveur

Ouvrez le fichier app.js , dans ce fichier vous devez placer le code donné ligne par ligne.

Dans ce fichier, nous établissons la connexion de la base de données à MySQL, créons les routes qui géreront le téléchargement du fichier csv vers la base de données et configurons le port d'application du nœud.

const express = require('express')
const bodyparser = require('body-parser')
const fs = require('fs');
const path = require('path')
const mysql = require('mysql')
const multer = require('multer')
const csv = require('fast-csv');
 
const app = express()
app.use(express.static("./public"))
 
app.use(bodyparser.json())
app.use(bodyparser.urlencoded({
    extended: true
}))
 
// Database connection
const db = mysql.createConnection({
    host: "localhost",
    user: "root",
    password: "",
    database: "test"
})
 
db.connect(function (err) {
    if (err) {
        return console.error(err.message);
    }
    console.log('Connected to database.');
})
 
var storage = multer.diskStorage({
    destination: (req, file, callBack) => {
        callBack(null, './uploads/')    
    },
    filename: (req, file, callBack) => {
        callBack(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname))
    }
})
 
var upload = multer({
    storage: storage
});
 
app.get('/', (req, res) => {
  res.sendFile(__dirname + '/index.html');
});
 
app.post('/import-csv', upload.single("import-csv"), (req, res) =>{
    uploadCsv(__dirname + '/uploads/' + req.file.filename);
    console.log('File has imported :' + err);
});
 
function uploadCsv(uriFile){
    let stream = fs.createReadStream(uriFile);
    let csvDataColl = [];
    let fileStream = csv
        .parse()
        .on("data", function (data) {
            csvDataColl.push(data);
        })
        .on("end", function () {
            csvDataColl.shift();
  
            db.connect((error) => {
                if (error) {
                    console.error(error);
                } else {
                    let query = 'INSERT INTO users (id, name, email) VALUES ?';
                    db.query(query, [csvDataColl], (error, res) => {
                        console.log(error || res);
                    });
                }
            });
             
            fs.unlinkSync(uriFile)
        });
  
    stream.pipe(fileStream);
}
 
const PORT = process.env.PORT || 5555
app.listen(PORT, () => console.log(`Node app serving on port: ${PORT}

Exécuter le projet de nœud

Voici la commande qui démarrera l'application de nœud, le module nodemon redémarrera votre serveur de nœud même si vous apportez des modifications mineures aux fichiers de l'application de nœud.

nodemon

Vous pouvez taper l'URL donnée sur le navigateur pour tester l'application.

http://localhost:5555

Conclusion

Node js est un excellent framework, et il permet aux développeurs de créer toutes les fonctionnalités qu'ils souhaitent pour leurs applications Web.

Merci à la communauté npm, qui fournit presque tous les types de modules nécessaires pour créer les fonctionnalités souhaitées.

Dans ce didacticiel, nous avons appris à télécharger un fichier CSV dans une base de données MySQL à l'aide de Fast CSV, Multer, MySQL et, plus important encore, d'express js. 

Source : https://www.positronx.io/node-import-csv-file-data-to-mysql-database-with-html-form/

#csv #mysql #database #html 

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 

Loma  Baumbach

Loma Baumbach

1595781840

Exploring MySQL Binlog Server - Ripple

MySQL does not limit the number of slaves that you can connect to the master server in a replication topology. However, as the number of slaves increases, they will have a toll on the master resources because the binary logs will need to be served to different slaves working at different speeds. If the data churn on the master is high, the serving of binary logs alone could saturate the network interface of the master.

A classic solution for this problem is to deploy a binlog server – an intermediate proxy server that sits between the master and its slaves. The binlog server is set up as a slave to the master, and in turn, acts as a master to the original set of slaves. It receives binary log events from the master, does not apply these events, but serves them to all the other slaves. This way, the load on the master is tremendously reduced, and at the same time, the binlog server serves the binlogs more efficiently to slaves since it does not have to do any other database server processing.

MySQL Binlog Server Deployment Diagram - ScaleGrid Blog

Ripple is an open source binlog server developed by Pavel Ivanov. A blog post from Percona, titled MySQL Ripple: The First Impression of a MySQL Binlog Server, gives a very good introduction to deploying and using Ripple. I had an opportunity to explore Ripple in some more detail and wanted to share my observations through this post.

1. Support for GTID based replication

Ripple supports only GTID mode, and not file and position-based replication. If your master is running in non-GTID mode, you will get this error from Ripple:

Failed to read packet: Got error reading packet from server: The replication sender thread cannot start in AUTO_POSITION mode: this server has GTID_MODE = OFF instead of ON.

You can specify Server_id and UUID for the ripple server using the cmd line options: -ripple_server_id and -ripple_server_uuid

Both are optional parameters, and if not specified, Ripple will use the default server_id=112211 and uuid will be auto generated.

2. Connecting to the master using replication user and password

While connecting to the master, you can specify the replication user and password using the command line options:

-ripple_master_user and -ripple_master_password

3. Connection endpoint for the Ripple server

You can use the command line options -ripple_server_ports and -ripple_server_address to specify the connection end points for the Ripple server. Ensure to specify the network accessible hostname or IP address of your Ripple server as the -rippple_server_address. Otherwise, by default, Ripple will bind to localhost and hence you will not be able to connect to it remotely.

4. Setting up slaves to the Ripple server

You can use the CHANGE MASTER TO command to connect your slaves to replicate from the Ripple server.

To ensure that Ripple can authenticate the password that you use to connect to it, you need to start Ripple by specifying the option -ripple_server_password_hash

For example, if you start the ripple server with the command:

rippled -ripple_datadir=./binlog_server -ripple_master_address= <master ip> -ripple_master_port=3306 -ripple_master_user=repl -ripple_master_password='password' -ripple_server_ports=15000 -ripple_server_address='172.31.23.201' -ripple_server_password_hash='EF8C75CB6E99A0732D2DE207DAEF65D555BDFB8E'

you can use the following CHANGE MASTER TO command to connect from the slave:

CHANGE MASTER TO master_host='172.31.23.201', master_port=15000, master_password=’XpKWeZRNH5#satCI’, master_user=’rep’

Note that the password hash specified for the Ripple server corresponds to the text password used in the CHANGE MASTER TO command. Currently, Ripple does not authenticate based on the usernames and accepts any non-empty username as long as the password matches.

Exploring MySQL Binlog Server - Ripple

CLICK TO TWEET

5. Ripple server management

It’s possible to monitor and manage the Ripple server using the MySQL protocol from any standard MySQL client. There are a limited set of commands that are supported which you can see directly in the source code on the mysql-ripple GitHub page.

Some of the useful commands are:

  • SELECT @@global.gtid_executed; – To see the GTID SET of the Ripple server based on its downloaded binary logs.
  • STOP SLAVE; – To disconnect the Ripple server from the master.
  • START SLAVE; – To connect the Ripple server to the master.

#cloud #database #developer #high availability #mysql #performance #binary logs #gtid replication #mysql binlog #mysql protocol #mysql ripple #mysql server #parallel threads #proxy server #replication topology #ripple server