IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

enregistrer des données CSV dans une BDD


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 75
    Points : 38
    Points
    38
    Par défaut enregistrer des données CSV dans une BDD
    Bonjour,

    je suis nouveau sur le fourm et j'aimerai que l ' on m'aide à résoudre mon problème.

    J'ai un fchiers CSV et je souhaite enregistrer une partie de ces données dans ma BDD.

    Le probleme c'est que je sais comment afficher les champ de ce fichiers avec du codage php mais je ne sais pas comment recupérer chaque champ (chacun étant séparé par ";"), le stocker dans une variable et ensuite le stocker dans une champ de ma BDD.

    Par exemple :

    "M;Dupont;Henri;HenriDupont@domain.com;....."

    stocker par exemple Dupont dans une vraiable $Nom.

    Voici actuellement mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <? 
    	$file = "Destinataires.csv";
     
    	$taille = 1024;
     
    	$delimiteur = ";";
     
    	/* ouverture en lecture */
     
    	if($fp = fopen($file,"r")) 
    {
       		/* extraction d'une ligne */
     
       		while ($ligne = fgetcsv($fp, $taille, $delimiteur)) 
    		{
     
            	/* affichage des champs */
     
            	foreach($ligne as $elem) 
    		{
                	        echo "$elem <br>";
            	}fun du foreach
     
        	}fin du while
     
        /* fermeture fichier */
     
        fclose ($fp);
     
    	} fin du if
     
    else
     {
        	echo "Ouverture impossible.";
     
    	}fin du else
     
    	?>

    Après pour l'insertion dans la BDD j'ai pu aucun pd(un pti insert et c bon)

    Voila si vous avez besoin de plus d'explication n'hesitez pas et merci à ceux qui m'aideront.

  2. #2
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    regarde du coté de la fonction explode
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 75
    Points : 38
    Points
    38
    Par défaut
    merci pour ta reponse avec le explode mais je n'ai pas reussi à résoudre mon probleme.

    J'ai modifier mon code de cette maniere mais j'obtiens l'erreur undefinied offet 4 (ligne 12 correspondant à : $login = $ChaineARecuperer[4]; )

    Cela veut dir que la case de mon tableau n'existe pas ? Pourtant la fonction explode devrait bien me renvoyer un tableau non ?

    Pour info mon fichier est un csv mais je ne pense pas que la fonction getcsv me soit utile estant donné que je souhaite récupérer une chaine précise de mon fichier.

    Petite description du fichier :


    [Adresse mails supprimées]
    ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <? 
    	$file = "Destinataires.csv";
    	/* ouverture en lecture */
    	if($fp = fopen($file,"r")) {
       		/* extraction d'une ligne */
       		while (!feof($fp)) 
    		{
    			$buffer = fgets($fp,4096);
    			$ChaineARecuperer = explode(";",$buffer); 
    			$login = $ChaineARecuperer[4];
    			echo "$login";
     
        	}
        /* fermeture fichier */
        fclose ($fp);
    	} else {
        	echo "Ouverture impossible.";
    	}
    	?>

    edit : je comprend d'ou viens le probleme :

    je declare une variable buffer qui va contenir l'ensemble de mon fichier et je vais chaque ";" mettre une information entre";" dans une case.

    Ce que je souhaiterai c'est a chaque ligne recuperer l'adresse mail correspondant ici au 3eme champ et la stocker mais je dois dire que j'ai un peu de mal

    Il fodrait que je rechange mon code mais à cette heure ci j'ai pu trop les idées claires .

    Si une ame charitable pouvait m'éclairer un peu je l'en remercierai beacoup .

  4. #4
    Expert éminent
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Points : 7 285
    Points
    7 285
    Par défaut
    effectivement, explode renvoie bien un tableau, mais en PHP, les indices dans les tableaux commencent à 0

    de plus en regardant les lignes que vous avez collées, toutes ne sont pas identiques et n'ont pas la même longueur... certaines ont 5 champs, d'autrees 4 seulement. Dur d'harmoniser ça

    Ex : M.;Denis;dupond;dupontont@fai.fr;HTML + ACROBAT;

    dans cette ligne, le mail est le 4° champ, et non pas le 3° comme vous le suggerez dans votre post ci-dessus...
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 75
    Points : 38
    Points
    38
    Par défaut
    Mes excuses j'ai malencontresement modifier mes lignes car au debut je ne comprenait pas pourquoi j'avais deux ";;" dan certaine sligne en fait c'est car le prenom de la personne n'a pas été saisi ( ce qui est bizarre enfin bref) revoila le bon texte :

    [adresses mails supprimées]

    Mon but étant toujours de recupérer les adress mail et de les 'insérer dans le champ login d'une de mes tables de ma BDD mais le plus important étant d'abord de récupérer ce champ .

    edit : ca y est c'est deja mieux je récupère les adresses.

    Petit hic : dois-je tenir compte du message :
    Notice: Undefined offset: 3 in d:\easyphp1-8\www\pages web\test.php on line 26 $login = $ChaineARecuperer[3]; ).

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <?  
    	//include('connexion.php');
    	$Chemin = $_POST['CSV_File'];
    	$longueur = strlen($Chemin);
    	$pos = strpos($Chemin,'.');
    	for($i=1;$i<=$longueur;$i++)
    	{
    		if(($car = substr($Chemin,$i,1)) == '.')
    		{
    			$extension = substr($Chemin,$pos+1); //on récupère l'extension du fichier
    			if($extension == "csv") 
    			{
    				echo "ok, c'est fichier csv <br><br>";
    				$file = "Destinataires.csv";
    				// ouverture en lecture 
    				if($fp = fopen($file,"r")) 
    				{
       					while (!feof($fp)) 
    					{
    						$buffer = fgets($fp,4096);//on parcours le fichier ligne par ligne
    						$ChaineARecuperer = explode(";",$buffer); //découpage des champs
    						if('\n')
    						{
    							$login = $ChaineARecuperer[3];//on récupère le 3eme champ gra^ce à la fonction explode
    							echo "$login <br>";
    						}
    					}
        			// fermeture fichier 
        			fclose ($fp);
    				} 
    				else
    				{
        				echo "Ouverture impossible.";
    				}
    			}
    			else	
    			{
    				echo "erreur, ce n'est pas un fichier csv <br>";
    			}
    		}
    	}
    ?>
    Petite question : peut-on rediriger en php vers un formulaire (par exemple ici je souhaiterai rediriger apres quelques secondes vers mon formulaire de sélection de fichier si ce n'est pas l extension de fichier désirée

    Merci

    En tout cas je te remerci beaucoup de ton aide

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Points : 624
    Points
    624
    Par défaut
    en PHP non, mais en javascript (beurk) oui !

    voila une cochone... heu un exemple :

    echo '<script language="javascript">function redirige() { self.location.href = "./index.php"; } setInterval("redirige()", 3000);</script>';
    Si vous avez un message d'erreur, n'oubliez pas de le lire, la réponse à votre problème est surement dedans !

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 75
    Points : 38
    Points
    38
    Par défaut
    Merci pour ton aide.

    Cependant lorsque j'execute mon fichier php et que je tape un mauvais nom de fichier pour tester ma redirection j obtient comme message "d n'est pas un protcole reconnu" . Que signifie ce message ?

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<script language="javascript">function redirige() { self.location.href = "D:\EasyPHP1-8\www\pages\ChargerCSV.htm"; } setInterval("redirige()", 3000);</script>';
    alors j'ai peut-être recopié bêtement mais en javascript j'y connais que dalle .

Discussions similaires

  1. Importer des données sqlite dans une BDD Postgresql
    Par flilou dans le forum PostgreSQL
    Réponses: 0
    Dernier message: 18/09/2013, 11h53
  2. Réponses: 2
    Dernier message: 19/03/2008, 14h51
  3. Réponses: 5
    Dernier message: 06/02/2008, 16h01
  4. Réponses: 1
    Dernier message: 08/11/2007, 12h20
  5. Réponses: 2
    Dernier message: 14/05/2007, 09h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo