Lire un ficher text et remplir la bd

- - Dernière réponse : XavLeVrais
Messages postés
22
Date d'inscription
vendredi 25 mars 2016
Statut
Membre
Dernière intervention
16 octobre 2019
- 19 juil. 2016 à 04:16
Bonjour,
j'ai besoin d'un code qui peut lire un .txt et remplir ma bd merci
Afficher la suite 

3 réponses

Messages postés
27002
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 décembre 2019
318
merci bcp j'ai essayer ms pas de solution



<?php
$data = file_get_contents("exemple rrc.txt"); //read the file
$convert = explode(";", $data); //create array separate by new line



for ($i=0;$i<count($convert);$i++)
{
echo $convert[$i]=$_POST['i'];
//write value by index

$req=$pdo->prepare('INSERT INTO adherant SET matcle=?,nompre=?,datena=?,dateem=?,sexe=?,scepss=?,indica=?,fonper=?,sceper=?,domain=?,echelo=?')
$req->exec([$cnonvet[$i],$cnonvet[$i],$cnonvet[$i],$cnonvet[$i],$cnonvet[$i],$cnonvet[$i],$cnonvet[$i],$cnonvet[$i],$cnonvet[$i],$cnonvet[$i],$cnonvet[$i]])
}


?>
jordane45
Messages postés
27002
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
10 décembre 2019
318 > medzo -
Où as tu mis le code de connexion à la BDD ?
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 ??
connexion BDD

<?php
try {
$pdo = new PDO('mysql:host=localhost;dbname=retraite', 'root', '');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


} catch(PDOException $e) {
echo $e->getMessage();
die();
}

echo 'pas d erreure';


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;
Raul duke
Messages postés
70
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
17 mai 2019
2 -
d’où elle sort
$cnonvet
Commenter la réponse de jordane45
Messages postés
22
Date d'inscription
vendredi 25 mars 2016
Statut
Membre
Dernière intervention
16 octobre 2019
1
0
Merci
pour toi

http://youtu.be/vdQ2Imi8jng

je t'ai fais un code en live
Commenter la réponse de XavLeVrais
Messages postés
22
Date d'inscription
vendredi 25 mars 2016
Statut
Membre
Dernière intervention
16 octobre 2019
1
0
Merci
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);
Commenter la réponse de XavLeVrais