Salut Medzo !!
Bon je t'ai fait une petite vidéo de code en live ou je developpe le truc ;-) ou j'explique ce dont tu as besoin :-) tu adaptera a ton besoin.
voici le lien : https://youtu.be/vdQ2Imi8jng
architecture des fichiers :
|[-]class
| |-class_mysql.php
| |-class_extractFromTxtToPhpSql.php
|[-]urlToTheFileText
| |-text.txt
|-index.php
j'ai orienté le code en objet :
il fonctionne avec 2 classes :
la première qui vas se connecter à la BDD que voici :
<?php
class mysqlconnector{
public $db;
function __construct() {
try {
$this->db = new PDO('mysql:host=localhost;dbname=medzo', 'root', '');
$this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
}catch (PDOException $e) {
echo $e->getMessage();
echo "IMPOSSIBLE DE SE CONNECTER A LA BASE DE DONNEES";
die();
}
}
}
Je l'ai nomer mis dans un repertoire /class/ avec le nom : class_mysql.php
La seconde qui fait le traitement :
<?php
class extractFromTxtToPhpSql{
public $db;
public $response;
function __construct($filePath) {
$file = utf8_decode(file_get_contents($filePath));
$r = $this->txtToPhpUnserialize($file);
require_once 'class_mysql.php';
$pdo = new mysqlconnector();
$this->db = $pdo->db;
foreach ($r as $key => $value) {
var_dump($value['0']);
if($this->checkIfUserExist($value['0'])){
$this->setUser($value);
}else{
$this->response .= "l'utilisateur : ".$value['1']." n'as pas été ajouté car il y a déja ce matricule dans la base de données<br>";
}
}
$this->response .= "opération réussi !! ";
}
function txtToPhpUnserialize($string,$separateurDeChamps=";",$separateurDeLigne="|"){
$lines = explode($separateurDeLigne, $string);
$i=0;
foreach ($lines as $key => $value) {
$i++;
$r[$key]= explode($separateurDeChamps, $value);
}
$this->response .= "nous à avons ajouter : ".$i." user(s)<br>";
return $r;
}
function setUser($user){
$r = $this->db->prepare('INSERT INTO users SET matcle=?, nompre=?, datena=?, dateem=?, sexe=?, scepss=?, indica=?, fonper=?, sceper=?, domain=?, echelo=?');
$r->execute([
$user['0'],
$user['1'],
$user['2'],
$user['3'],
$user['4'],
$user['5'],
$user['6'],
$user['7'],
$user['8'],
$user['9'],
$user['10']
]);
$this->response .= "l'utilisateur : ".$user['1']." à bien été ajouté<br>";
}
function checkIfUserExist($matricule){
$r = $this->db->prepare('SELECT * FROM users WHERE matcle = ? ;');
$r->execute([$matricule]);
$res = $r->fetchAll();
if(count($res)==0){
return true;
}else{
return false;
}
}
}
dans le repertoire /class/ avec le nom : class_extractFromTxtToPhpSql.php
et la fichier PHP a la racine : index.php
require_once 'class/class_extractFromTxtToPhpSql.php';
$insertor = new extractFromTxtToPhpSql('urlToTheFileText/text.txt');
echo utf8_decode($insertor->response);
8 juil. 2016 à 18:14
8 juil. 2016 à 18:35
Où sont passé les bloc TRY/CATCH expliqués dans le lien que je t'ai donné ?
As tu au moins fais un print de ta variable $convert pour savoir si ce qu'elle contient est bon et sous quel forme il se présente ??
9 juil. 2016 à 04:46
la variable affiche
19550;ELY SAVI OULD SIDI ;201505; 1618830; 2312620;ASSISTANT CONTROLE;115000 ;NDB ;C1 ;1979-12-31;2010-12-22;1;2015-05-01;
18 juil. 2016 à 15:19