Lire un ficher text et remplir la bd

- - Dernière réponse : XavLeVrais
Messages postés
20
Date d'inscription
vendredi 25 mars 2016
Dernière intervention
11 juin 2017
- 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 

Votre réponse

3 réponses

Messages postés
23658
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 décembre 2018
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
23658
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 décembre 2018
> 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
67
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
18 juillet 2016
-
d’où elle sort
$cnonvet
Commenter la réponse de jordane45
Messages postés
20
Date d'inscription
vendredi 25 mars 2016
Dernière intervention
11 juin 2017
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
20
Date d'inscription
vendredi 25 mars 2016
Dernière intervention
11 juin 2017
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.