Fichier texte a insérer dans une base automatiquement!

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Fichier texte a insérer dans une base automatiquement!

par sadeq » 07 oct. 2008, 13:00

Regarde la fonction de mysql : LOAD DATA IN FILE.

Voici un tuto : http://www.phpfrance.com/forums/viewtop ... =load+data

Fichier texte a insérer dans une base automatiquement!

par ced007 » 07 oct. 2008, 09:40

Bonjour,
Je débute en ce qui concerne le php et la création de site aussi.
Voila les données du problème.

J'ai mon frère a un garage automobile et m'a demandé de l'aider à créer un site Internet.
Il utilise un logiciel dans lequel il rentre tous ces véhicules ainsi que ses photos. celui-ci crée alors un fichier ASCII (ANSI), et l'envoi automatiquement par FTP, avec les photos associées, sur un serveur de mon choix. (son futur site)

Le fichier alors créé sera comme ça:

Véhicules_site.txt

EXEMPLE DU FICHIER GENERE PAR LE LOGICIEL (3 véhicules juste, mais il y en auras des centaines:

1;40;VO;PEUGEOT;307 SW;SW PACK 2.0 HDI 110;BREAK;5;DIESEL;BVM5;6;107;2002;08/11/2002;103335;GRIS;1;Autoradio CD Laser, Lève Vitres éléctrique, Ordinateur de Bord, Jantes en alliage, Airbags conducteur et passagers, Fermeture centralisée, Climatisation automatique;12900;;6 MOIS;6;;
2;15;VO;RENAULT;TWINGO;;BERLINE;3;ESSENCE;;5;80;2004;30/06/2004;60930;BLEU;0;Autoradio CD Laser, Lève Vitres éléctrique, Régulateur de vitesse, Jantes en alliage, Climatisation;9900;;6 MOIS;6;;
3;6;VO;RENAULT;MEGANE;CFT EXPRESSION 1.9DCI 5P;BERLINE;5;DIESEL;;7;130;2003;02/04/2003;106218;BLEU;0;Autoradio CD Laser, Ordinateur de Bord, Rétroviseur électrique, 4 Vitres éléctriques, Airbags frontaux et latéraux conducteur et passager, Fermeture centralisée, Direction assistée, Climatisation automatique;10500;;6 MOIS;6;cuir;

Donc 23 champs /ligne

Les données transmises correspondent au format suivant, dans l'ordre indiqué :

- ID ( ID du véhicule
- N° VO (peut être nul en cas de stock virtuel)
- Type de véhicules (VO, VN, ..)
- Marque
- Modèle
- Version
- Carrosserie
- Nb Portes
- Energie
- Boite Vitesse
- Puissance Fiscale
- Puissance DIN
- Millésime
- Date M.E.C.
- Kilométrage
- Couleur
- Première main (0/1)
- Options (séparées par des virgule-espace ", " : "ABS, 4 Airbags, Climatisation automatique")
- Prix Public
- Prix Marchand
- Garantie (libellé)
- Durée de la garantie (mois)
- Sellerie



il y a un véhicule par ligne : CRLF (retour chariot) entre chaque enregistrements.
Les données sont séparées par des points-virgules (";")

Les fichiers sont transférés par FTP dans le répertoire de mon choix. (
Il est possible de spécifier deux répertoires de destination différents :
- un répertoire pour le fichier texte (\texte\)
- un répertoire pour les photos (photos\)

Donc voila ce que j'ai fais.

J'ai créé une nouvelle base: (auto)
dans laquelle j'ai créé une table (vehicules) avec 23 champs.


Ensuite ma question est de savoir comment les données stockées dans mon fichier vehicules_site.txt vont se retrouvées automatiquement dans ma base? Et comment se met-il a jour automatiquement. Puisque a chaque mise a jour du logiciel ce fichier est recré et renvoyé sur mon FTP

Ouf je crois que je me lance dans un énorme projet, mais je suis assez motivé même si cela prendra du tps.

Merci de votre attention...en espérant trouver un peu d'aide.
Cédric

Voila ce que j'ai commencé a faire avec un peu d'aide:
<?php
$contenu_fichier = file_get_contents("vehicules_site.txt");

// Declaration de la variable qui reccueillera les VALUES de toutes les voitures
$requete_finale = '';

// premier explode sur le retour chariot pour traiter les voitures unes à unes
$liste_voitures = explode("
",$contenu_fichier);
foreach($liste_voitures as $voiture) 
{
	// Declaration/remise à zéro de la variable qui reccueillera les VALUES de chaque voiture unes à unes
	$values = '';
	$liste_caracteristiques = explode(";",$voiture);
	foreach($liste_caracteristiques as $valeur_caracteristique) 
	{
		//test obligatoir pour mettre une virgule entre chaque valeurs mais pas au debut et pas à la fin de values
		if( $values == '' ) { $values = $valeur_caracteristique; }
		else { $values .= ','.$valeur_caracteristique; }
	}
	$values = '('.addslashes($values).')';
	
	//test obligatoir pour mettre une virgule entre chaque VALUES mais pas au debut et pas à la fin requete_finale
	if( $requete_finale == '' ) { $requete_finale = '('.$values.')'; }
	else { $requete_finale .= ',('.$values.')'; }
}

// Connexion au serveur
mysql_connect('localhost', 'root',  '') or die("erreur de connexion au serveur");
//ouverture de la Base 
$bdd = 'auto';
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");


mysql_query("INSERT INTO vehicules VALUES".$requete_finale);



mysql_close(); // Déconnexion de MySQL

?>