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

Langage PHP Discussion :

creation de champs dynamique


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut creation de champs dynamique
    Salut a tous
    je suis debutant donc je me permets de poster pour poser un question.
    Voila, j'ai un fichier ascii qui contient des registres.
    Chaque registre possede un nombre variable de lignes, selon les infos qu'il contient. Par contre ils sont separes par un CODE "LDR" qui est toujours le meme et creer toujours de la meme maniere:
    Voici un extrait du fichier:

    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
    000000001 LDR   L -----nam--2200301Ia-45e0
    000000001 00809 L 1220s9999    xx            000 0 und d
    000000001 022   L $$a0081-3397
    000000001 041   L $$aESPA�OL
    000000001 042   L $$a1
    000000001 088   L $$aJ.E.N. 551
    000000001 100   L $$aROMERO,-L.;TRAVESI,-A.;
    000000001 245   L $$aCODIGO "REX" PARA AJUSTE DE DATOS EXPERIMENTALES A FUNCIONES EXPONENCIALES Y SU REPRESENTACION GRAFICA
    000000001 901   L $$aJUNTA DE ENERGIA NUCLEAR (J.E.N.)
    000000001 902   L $$a11/05/89
    000000001 910   L $$aINFORMES JEN
    000000001 FMT   L BK
    000000002 LDR   L -----nam--2200301Ia-45e0
    000000002 00809 L 1220s9999    xx            000 0 und d
    000000002 022   L $$a0081-3397
    000000002 041   L $$aESPA�OL
    Comme vous pouves le voir, le registre commence par LDR et temine par FMT, les bornes en somme...
    Ensuite vous voyez que les registres ont leur numero d'ordre 0000001 0000000n et apres le code du champs.

    Mon but c'est de lire le fichier en entier et pour chaque registre, detecter certains champs, tester le contenu et en fonction du contenu, mettre une valeur dans une variable:

    ex:
    si j'ai ceci:
    000000002 041 L $$aESPA�OL
    donc le 041 comme valeur español, je voudrais que ma variale LNG soit = a 'spa'
    et comme ca avec 2 ou 3 autres champs,
    a la fin je voudrais creer un autre champs qui n'existe pas qui a une structure speciale avec les variables concatenees.

    Je sais pas si je m'explique bien....

    si j'ai ceci:
    000000001 590 L $$aINFORME
    $lettre='t'

    000000002 041 L $$aESPA�OL
    $lng='spa'
    et a la fin je voudrais avoir un champs comme ceci

    008 1023002\\\\\\\\t\\\\\\\spa
    donc le 008 el le num c'est fixe
    ensuite le t sort seulement si 590=INFORME et spa si 041 = español

    voili voilou

    J'espere que vous pourrez m'aider

    D'avance merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je n'ai rien compris a la logique de ton exemple (notamment d'ou sors le "t").

    Mais ton fichier doit pouvoir être lu comme un csv avec une tabulation comme séparateur si je devine bien.
    Donc en utilisant fgetcsv()
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Salut
    alors le fichier est un fichier MARC21....c'est un format de cataloguage pour bibiotheques...
    Donc le "t" ici en code Marc21 signifie que le doc est un RAPPORT..
    En español on dit INFORME
    c'est pourquoi lorsque le php trouve lke champs 590$aINFORME il faut mettre en memoire "t" pour le concatener a la fin...
    J'espere qu'avec cette info ca aidera a comprendre d'ou sort le "t" jajajaja c'est vrai que c'est pas super clair.

    Pour le coup, et vue que j'y connais vraiment rien en programation
    T'aurais pas un petit exemple de code pour lire un fichier etc¿

    D'avance merci
    PS: Pour ma part je vais chercher des exemples aussi.

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Je viens de trouver ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    $row = 1;
    $handle = fopen("test.csv", "r");
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $num = count($data);
        echo "<p> $num fields in line $row: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
        }
    }
    fclose($handle);
    ?>
    je comprend que ceci ouvre le fichier...le 1000 apres handle ca veut dire quoi?
    Et alors si je comprend bien tout va se passer dans le while.
    Comment je fais pour dire au code que LDR c'est le debut d'un registre et que FMT la fin??

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    1000 c la taille maximale d'une ligne

    Pour voir ce que tu recoltes en faisant comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    $row = 1;
    $handle = fopen("test.csv", "r");
    while (($data = fgetcsv($handle, 1000, "\t")) !== FALSE) {
       foreach ($data as $colonne=>$valeur) {
            echo "colonne " . $colonne . " : " . $valeur . " ; ";
       }
    }
    fclose($handle);
    ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    whaaa c'est bien ce programme,
    ca recupere effectivement les champs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    colonne 0 : =LDR  00000nam  2200000Ia 45e0 ; colonne 0 : =008  100211s9999\\\\xx\\\\\\\\\\\\000\0\und\d ; colonne 0 : =020  \\$aISBN ; colonne 0 : =020  \\$aISBN ; colonne 0 : =020  \\$aISBN ; colonne 0 : =020  \\$aISBN ; colonne 0 : =020  \\$aISBN ; colonne 0 : =020  \\$aISBN ; colonne 0 : =020  \\$aISBN ; colonne 0 : =020  \\$aISBN ; colonne 0 : =020  \\$aISBN ; colonne 0 : =020  \\$aISBN ; colonne 0 : =LDR  00000nam  2200000Ia 45e0 ; colonne 0 : =008  100211s9999\\\\xx\\\\\\\\\\\\000\0\und\d ; colonne 0 : =022  \\$a0081-3397 ; colonne 0 : =041  \\$aESPA��<91>OL ; colonne 0 : =042  \\$a1 ; colonne 0 : =088  \\$aJ.E.N. 551 ; colonne 0 : =090  \\$aINFORMES JEN ; colonne 0 : =245  \\$aCODIGO "REX" PARA AJUSTE DE DATOS EXPERIMENTALES A FUNCIONES EXPONENCIALES Y SU REPRESENTACION GRAFICA ; colonne 0 : =250  \\$a1 ED ; colonne 0 : =260  \\$aMADRID $b JUNTA DE ENERGIA NUCLEAR$c1983 ; colonne 0 : =300  \\$a58 P. + 5 REFERENCIAS BIBLIOGR., 1 H. DE FICHAS CON REFERENCIA BIBLIOGRAFICA Y RESUMEN DEL INFORME ; colonne 0 : =340  \\$aPAPEL ; colonne 0 : =440  \\$aINFORMES TECNICOS J.E.N. ; colonne 0 : =505  \\$aEL PROGRAMA "REX", ESCRITO EN LENGUAJE FORTRAN IV, REALIZA EL AJUSTE DE UNA SERIE DE DATOS EXPERIMENTALES A DISTINTOS TIPOS DE FUNCIONES, TALES COMO: RECTA (Y=A+BX), Y EXPONENCIALES DE DIVERSOS TIPOS (Y=A B SUP X, Y=A X SUP B, Y=A EXP (BX)), EMPLEANDO EL CRITERIO DE MINIMOS CUADRADOS. DICHOS AJUSTES SE PUEDEN HACER INDEPENDIENTE, O SIMULTANEAMENTE LOS CUATRO, LO QUE PERMITE SELECCIONAR LA FUNCION A LA QUE MEJOR SE AJUSTEN LOS DATOS, DADO QUE PRESENTA EN CADA UNO, LOS DATOS ESTADISTICOS DEL AJUSTE. ASIMISMO, PERMITE REPRESENTAR GRAFICAMENTE, A TRAVES DE UN REGISTRO GRAFICO X-Y, LA FUNCION AJUSTADA, EN UN SISTEMA DE EJES COORDENADOS, AJUSTADOS AUTOMATICAMENTE AL RANGO DE VALORES UTILIZADO. UNA OPCION ADICIONAL, PERMITE REPRESENTAR GRAFICAMENTE, LOS DATOS EXPERIMENTALES UTILIZADOS PARA EL AJUSTE. LOS DATOS NECESARIOS PARA LA EJECUCION DEL PROGRAMA, SON PEDIDOS POR LA PANTALLA MEDIANTE UN LETRERO, EN FORMA DE DIALOGO PANTALLA-OPERADOR, Y SE INTRODUCEN MEDIANTE EL TECLADO DE LA CO ; colonne 0 : NSOLA. EL PROGRAMA PUEDE SER EJECUTADO A TRAVES DE CUALQUIER TERMINAL DE PANTALLA GRAFICA CON TECLADO (CU
    Comment je fais pour dire que ceci colonne 0 : =LDR est le debut de chaque enregistrement?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Javascript] Création d'un champ dynamique ??
    Par alex75 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/04/2006, 23h10
  2. [CR] Taille champ dynamique
    Par reflex dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 06/08/2004, 08h43
  3. [struts] probleme champs dynamiques
    Par rocco dans le forum Struts 1
    Réponses: 28
    Dernier message: 07/06/2004, 21h26
  4. ajouter un champ dynamiquement à une instance de table
    Par maniack dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/02/2004, 23h58
  5. Creation de fiche dynamique
    Par Mouss26 dans le forum C++Builder
    Réponses: 7
    Dernier message: 24/07/2002, 07h56

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