logo Homepage
Pages: [1] 2
  Imprimer  
Auteur Fil de discussion: [Php/MySql] Création d'une base de donnée à partir d'un fichier .txt  (Lu 9925 fois)
Gelope
Profil challenge

Classement : 8995/54318

Néophyte
*
Hors ligne Hors ligne
Messages: 16


Voir le profil
« le: 05 Juillet 2008 à 08:11:18 »

Voilà, je débute en php, et je dois créer un programme, en php, qui va à partir d'un txt formaté, avec pour chaque ligne plusieurs champs bien découpés, créer une base de donnée, où forcément, chaque champs du txt correspondra à un champs dans la BDD...
Accessoirement, je recevrais chaque jour un nouveau fichier txt qui devra mettre à jour la BDD...

Quelqu'un aurait un tutoriel à me proposer car j'avoue être perdu..

Merci d'avance
Journalisée
Al3x
Profil challenge

Classement : 1108/54318

Membre Junior
**
Hors ligne Hors ligne
Messages: 54


Voir le profil
« #1 le: 05 Juillet 2008 à 08:48:13 »

Pour du PHP c'est plutôt dans la section Langage Web qu'il faudrait poster. 

Pour faire ce que tu souhaites, tu peux faire comme ça :
Code:
$fic = fopen("tonfichier.txt", "r");

do {
       $ligne = fgets($fic);
       $ligne = rtrim($ligne); // pour retirer le saut de ligne
       $champs = explode('le_caractere_de_delimitation', $ligne);

      /*Crée ta requête sql en utilisant les champs dans le tableau $champs */

      mysql_query($ta_requete) or die(mysql_error());

} while(!feof($fic));

fclose($fic);



Pour les détails regarde la documentation sur http://php.net.
Journalisée
Gelope
Profil challenge

Classement : 8995/54318

Néophyte
*
Hors ligne Hors ligne
Messages: 16


Voir le profil
« #2 le: 05 Juillet 2008 à 09:06:30 »

Merci, oui pour langage web, c'est le Bordeau d'appellation AOC qui fait que je me suis trompé, si un modo pouver chagner le fichier de place!

Il subsite pour le moment deux problèmes :s

->Les champs ne sont pas délimités à chaque fois par le même caractère :s Parfois ce sont des étoiles, parfois, parfois, comme par exemple pour les champs nom prénom, ce sont des espaces :s

->De plus, pour le cas du matricule, qui sera en fait la clé, il prend plusieurs "formes": C'est à chaque fois une suite de chiffres, mais parfois "tous collés" (ex: 21212122121) et parfois une suite de chiffre limités par des espaces (2chiffre - Un espace: ex: 21 21 21 21)...... On peut savoir quel structure aura la clé en fonction d'un des autres champs (Si le champs vaut une certaine valeur, se sera le premier cas, autre valeur, le deuxième cas....)

->Enfin, il y a des parties inutiles au fichier: Je m'explique: On peut dire que les données à traiter se trouvent dans des sortes de tableaux (Encadrée par des **,  voir à la fin du post pour l'exemple). Il y a ce qu'on pourrait appeler une entête au début, puis différentes séparations entre les "tableaux": en gros, le txt se présente de la facon suivante: Entête - Tab de données à traiter - Entête ...... Je dois laisser le fichier tel quel... Je me demandais s'il n'était pas possible de créer une copie du fichier(avec une ligne de code bien sur), et ensuite de pouvoir à l'aide de boucles supprimer mes entêtes: En effet, comme les lignes à traitée commence toutes par des étoiles, suivie de 13 chiffres, on peut lui dire un truc du genre: "Lit le fichier, si la ligne ne commence pas par une étoile suivie de treize entiers, tu la supprime....." Je ne vois que cette méthode pour avoir un fichier "utilisable" mais étant un nouveau en prog, je n'ai pas encore une expérience suffisante pour détecter tous les cas de figures et trouver les solutions optimisées....
« Dernière édition: 05 Juillet 2008 à 09:42:47 par Gelope » Journalisée
mansonboy

Profil challenge

Classement : 662/54318

Membre Junior
**
Hors ligne Hors ligne
Messages: 61


Voir le profil
« #3 le: 05 Juillet 2008 à 16:43:47 »

Post un contenu d'un de ces fichier txt pour voire. Sa sera plus facile je pense de t'aider.
Journalisée
Gelope
Profil challenge

Classement : 8995/54318

Néophyte
*
Hors ligne Hors ligne
Messages: 16


Voir le profil
« #4 le: 08 Juillet 2008 à 08:00:36 »

Désolé je ne peux pas, à cause du secret profesionnel...
Journalisée
_o_
Relecteur

Profil challenge

Classement : 42/54318

Membre Héroïque
*
Hors ligne Hors ligne
Messages: 1258


Voir le profil
« #5 le: 08 Juillet 2008 à 09:15:46 »

Désolé je ne peux pas, à cause du secret profesionnel...

Ben, ça va être dur de répondre dans ces conditions.

Mon point de vue à ce sujet, puisqu'on est dans un environnement professionnel :
D'abord, il doit y avoir une spécification d'interface qui décrit le fichier en question, et qui permet d'en déduire les manips à faire côté base de données. Si ce n'est pas le cas, ben heu... c'est pas pro. Une fois la spécification connue, ce n'est qu'une question d'algorithmique pour transposer ça dans le langage de tonchoix.

Le truc qui me chiffonne surtout, c'est qu'on a l'impression que tu cherches à nous faire faire le travail pour lequel tu es payé, et là, c'est plus que discutable. Si tu ne parviens pas à réaliser ce travail dans l'état de tes connaissances, de deux choses l'une : ou tu le signales à ta hiérarchie (la transparence, ça a du bon); ou tu te débrouilles par toi-même pour t'auto-former (en l'occurrence en PHP/SQL). Il y a suffisamment de tutoriels sur le net dans ce domaine pour que cela ne soit pas une barrière insurmontable.
Note que les deux propositions ne sont pas mutuellement exclusives : il m'arrive régulièrement de signaler à mes chefs qu'ils m'ont collé sur le dos un truc que je sais pas faire, mais qu'avec un peu plus de temps que prévu au départ, je peux m'en sortir. Ça participe aussi à la relation de confiance avec ton patron. Tu es franc sur les problèmes rencontrés, mais tu proposes une solution réaliste aux soucis rencontrés.
Journalisée

Les épreuves de hack de NC sont trop faciles ? Et pourtant ! Bienvenue dans la vraie vie : http://thedailywtf.com/Articles/So-You-Hacked-Our-Site!.aspx
Gelope
Profil challenge

Classement : 8995/54318

Néophyte
*
Hors ligne Hors ligne
Messages: 16


Voir le profil
« #6 le: 08 Juillet 2008 à 10:21:12 »

Le projet ne consiste pas seulement à découper les champs d'un fichier texte!

Il y a une semaine je ne connaissais rien au php, maintenant je dois me débrouiller pour dans trois semaines sortir un projet qui est je pense complexe en respectant le cahier des charges!

 Oui je traine sur les tutoriaux, pour moi le forum c'est un tutorial+: C'est interractif, on peut avoir des réponses à ses problèmes et de facon plus adaptée.

Tu ne veux pas m'aider, que veux tu que je te dises? Ne m'aide pas, j'espère que sur la toile il y aura bien quelqu'un capable de m'aider si je coince vraiment!

MErci
Journalisée
_o_
Relecteur

Profil challenge

Classement : 42/54318

Membre Héroïque
*
Hors ligne Hors ligne
Messages: 1258


Voir le profil
« #7 le: 08 Juillet 2008 à 12:59:41 »

Le projet ne consiste pas seulement à découper les champs d'un fichier texte!

Je m'en doute. C'est pourquoi en général, on écrit des spécifications avant de développer. De cette manière, il ne doit quasiment plus y avoir de point d'ombre lors de la conception et du développement de l'application.

Citation
Tu ne veux pas m'aider, que veux tu que je te dises? Ne m'aide pas, j'espère que sur la toile il y aura bien quelqu'un capable de m'aider si je coince vraiment!

Bon, je prends ta réponse comme une confirmation que tu es payé pour faire ce boulot. Si c'est le cas, tant mieux pour toi si tu trouves un pigeon pour faire gratuitement ce pour quoi tu es payé. Mais ne compte pas sur moi. Y'a une petite différence entre ça et l'entraide que l'on peut trouver sur le net (ça m'arrive de l'utiliser, et ça m'arrive de répondre aux questions des autres en retour).

Par contre, quelle que soit la situation dans laquelle tu te retrouves, je peux te garantir que tu n'auras pas de réponses potables sans expliquer exactement ce que tu souhaites faire, en fournissant les spécifications et un exemple de fichier. Et ça, ça n'a rien à voir avec mon opinion sur la question, c'est juste que personne n'a jamais réussi à répondre correctement à une question aussi vague, sans détails techniques. En fait, en l'occurrence, je ne suis même pas sûr que quelqu'un ait compris où était ton problème.
« Dernière édition: 08 Juillet 2008 à 21:22:40 par _o_ » Journalisée

Les épreuves de hack de NC sont trop faciles ? Et pourtant ! Bienvenue dans la vraie vie : http://thedailywtf.com/Articles/So-You-Hacked-Our-Site!.aspx
Gelope
Profil challenge

Classement : 8995/54318

Néophyte
*
Hors ligne Hors ligne
Messages: 16


Voir le profil
« #8 le: 08 Juillet 2008 à 13:41:21 »

Oui je suis payé pour ca.

Je demande en gros, à comment faire pour découper une ligne quand les séparateurs ne sont pas à chaque fois les même!
J'ai juste fait une disjonction de cas pour essayer d'être le plus précis possible, c'est tout!

Je me demandais en fait s'il y avait une méthode comme par exemple en vb, avec la fonction "Mid" ou l'on choisit la ènième caractère à partir duquel on découpe et combien de caractère découpe séléctionne ont à partir de celui ci...

Les spécificité du cahier des charges consistent à me dire quels sont les champs que je devrais reprendre dans la BDD, c'est tout. (pour ce qui est du découpage).
Journalisée
S0410N3
Administrateur

Profil challenge

Classement : 10/54318

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1260


Voir le profil WWW
« #9 le: 08 Juillet 2008 à 14:06:16 »

http://fr2.php.net/manual/fr/function.preg-split.php
Journalisée

Enjoy (copyleft de quelqu'un qui a trop parlé)

S0410N3

-------------------------------------------------------------------------------------
La folie est le prix à payer pour le temps passé à être trop lucide.
-------------------------------------------------------------------------------------
http://forum.hardware.fr/hfr/Discussions/Societe/francais-repere-repaire-sujet_19265_1.htm
Gelope
Profil challenge

Classement : 8995/54318

Néophyte
*
Hors ligne Hors ligne
Messages: 16


Voir le profil
« #10 le: 08 Juillet 2008 à 15:02:03 »

Merci, j'ai trouvé, avec substr c'est plus simple et extrêment efficace!

Voila _o_, maintenant je vais mériter l'argent que je vais me faire avec ce projet, happy?
« Dernière édition: 09 Juillet 2008 à 10:00:30 par Gelope » Journalisée
S0410N3
Administrateur

Profil challenge

Classement : 10/54318

Membre Héroïque
*****
Hors ligne Hors ligne
Messages: 1260


Voir le profil WWW
« #11 le: 08 Juillet 2008 à 15:32:37 »

3 jours pour trouver la fonction substr c'est pas mal.
On n'ose pas trop imaginer le temps que va prendre le reste ^^'

J'espère quand même que ce n'est pas payé à l'heure ;P
Journalisée

Enjoy (copyleft de quelqu'un qui a trop parlé)

S0410N3

-------------------------------------------------------------------------------------
La folie est le prix à payer pour le temps passé à être trop lucide.
-------------------------------------------------------------------------------------
http://forum.hardware.fr/hfr/Discussions/Societe/francais-repere-repaire-sujet_19265_1.htm
Gelope
Profil challenge

Classement : 8995/54318

Néophyte
*
Hors ligne Hors ligne
Messages: 16


Voir le profil
« #12 le: 08 Juillet 2008 à 15:55:12 »

Désolé je ne bosse pas le w-e
Journalisée
_o_
Relecteur

Profil challenge

Classement : 42/54318

Membre Héroïque
*
Hors ligne Hors ligne
Messages: 1258


Voir le profil
« #13 le: 08 Juillet 2008 à 17:43:51 »

Voila _o_, maintenant je vais méritais l'argent que je vais me faire avec ce projet, happy?

Heureux ? Non, à vrai dire, je m'en fiche pas mal que tu gagnes de l'argent d'une façon que je juge éthique ou non. Ce dont je suis sûr, c'est que si tu avais posé une question très précise m'ayant fait pensé à substr, j'y aurais répondu, et je ne me serais pas enflammé sur la justesse de ton salaire. Or, j'ai beau relire la discussion, et je ne vois aucune question de ce genre (avant 13h41, en tout cas). Aucun regret, donc. Je te suggère, par contre, d'être plus précis la prochaine fois sur ton problème. Ça évitera de tourner autour du pot toute la journée.
« Dernière édition: 08 Juillet 2008 à 17:46:11 par _o_ » Journalisée

Les épreuves de hack de NC sont trop faciles ? Et pourtant ! Bienvenue dans la vraie vie : http://thedailywtf.com/Articles/So-You-Hacked-Our-Site!.aspx
Gelope
Profil challenge

Classement : 8995/54318

Néophyte
*
Hors ligne Hors ligne
Messages: 16


Voir le profil
« #14 le: 09 Juillet 2008 à 10:04:41 »

La prochaine c'est maintenant

Je lis le fichier et ne veux utiliser que les lignes commencant par une étoile suivit d'un chiffre.

J'utilise donc un regex. Mais il ne marche pas :s

Citation
if (preg_match("#^\*[0-9]#",$ligne);

Je protège bien le métacharactère... $ligne contient la ligne pointée bien-sûr!

Voilà l'erreur!

Citation
Parse error: parse error in /var/www/html/editique2/Controle/test.php on line 17

Merci à ceux qui vont m'aider
Journalisée
Pages: [1] 2
  Imprimer  
 
Aller à: