Lire un ficher text et remplir la bd

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

7 réponses

jordane45 21169 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 25 mai 2018 Dernière intervention - 8 juil. 2016 à 09:39
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 21169 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 25 mai 2018 Dernière intervention > medzo - 8 juil. 2016 à 18:35
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 67 Messages postés vendredi 16 décembre 2005Date d'inscription 18 juillet 2016 Dernière intervention - 18 juil. 2016 à 15:19
d’où elle sort
$cnonvet
Commenter la réponse de jordane45
XavLeVrais 20 Messages postés vendredi 25 mars 2016Date d'inscription 11 juin 2017 Dernière intervention - Modifié par XavLeVrais le 19/07/2016 à 02:26
0
Utile
pour toi

http://youtu.be/vdQ2Imi8jng

je t'ai fais un code en live
Commenter la réponse de XavLeVrais
XavLeVrais 20 Messages postés vendredi 25 mars 2016Date d'inscription 11 juin 2017 Dernière intervention - 19 juil. 2016 à 04:16
0
Utile
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.