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 :

Recuperer une table html pour la sauvegarder en fichier


Sujet :

Langage PHP

  1. #1
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut Recuperer une table html pour la sauvegarder en fichier
    Bonjour à tous

    C'est mon premier post sur ce sous-forum, et mes premiers pas avec PHP, alors soyez indulgents, merci d'avance

    Voila mon problème :

    Je construis une petite appli bête , que je voudrais en html/php pur.. (si c'est possible !!)

    • J'ai un fichier representant un tableau (texte)
    • J'ai une page html (fichier .php), avec un script PHP qui lit ce fichier, et va le charger dans une table HTML dont plusieurs cellules sont avec l'attribut contenteditable="true"
    • J'aimerais (soit sous forme du submit si je l'inclue dans une form, soir par tout autre moyen) avoir un bouton sur cette page qui permette, lorsque l'on a fini de modifier le tableau, de remplacer le fichier du tableau.



    Je bloque sur le 3ième point :

    je trouve des choses de lecture de fichiers html contenant des tables, mais on lit des pages statiques. Je trouve aussi des trucs avec du mysql ou ajax...

    J'aimerais savoir si c'est faisable en php pur, et si oui comment le faire (sur la même page html)

    Je vous mets un exemple de code :

    Code php : 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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    ...
    <link rel="stylesheet" type="text/css" href="cssheading">
    </head>
    ...
      <body>
    ....
    <table>
    <tbody>
    <body dir="ltr" style="max-width:21.001cm;margin-top:1cm; margin-bottom:1cm; margin-left:2cm; margin-right:2cm; writing-mode:lr-tb; "><table border="0" cellspacing="0" cellpadding="0" class="ta1"><colgroup><col width="89"/><col width="165"/><col width="165"/><col width="165"/><col width="165"/><col width="165"/><col width="165"/></colgroup>
     
    <?php
    $lines=array();
    $count = integer ;
     
    $annu = fopen('table.txt', 'r');
    if ( $annu)
    { 
      while ( ($line=fgets($annu)) !== False ){
         $lines[]= trim( $line);
      }
        if (!feof($annu)) {
            echo 'Error: unexpected fgets() fail\n';
        }			
    fclose($annu);
     }
    else
      {
    echo 'error could not open file';
      }
     
     
      $count=0 ;
      foreach ($lines as $row ) 
      {
        if ( (($count)%7) == 0 ){
          if ( ($count) == 0){
        echo '<tr class="ro1">';
        }else{
        echo '<tr class="ro2">';
        }
        }
     
        if ( ($count) < 7 )
          {
    	if (($count) == 0 ) {
               echo '<td style="text-align:left;width:2.046cm; " class="ce1"><p>'.$row.'</p></td>';
    	}else{
               echo '<td style="text-align:left;width:3.6cm; " class="ce1"><p>'.$row.'</p></td>';
    	}
          }
          else
           {
    	 if ( (($count)%7) == 0 ){
               echo '<td style="text-align:left;width:2.046cm; " class="ce2"><p>'.$row.'</p></td>';
    	 }else{
               echo '<td style="text-align:left;width:3.062cm; " class="ce2" contenteditable="true">'.$row.'</td>';
    	 }
           }
     
         $count = $count + 1 ;
         if ( (($count)%7) == 0 ){
        echo '</tr>';
      }
      }
    ?>
    </tbody>
    </table>
    ....

    En résumé :

    Le code me construit une belle table avec 7 colonnes et N lignes.. à partir du fichier "table.txt".
    J'aimerais dans ce code ajouter de quoi écrire le fichier "newtable.txt" en sauvegardant les modifs faites par l'utilisateur dans les cellules...

    Voilà

    Merci de votre aide
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Si par php/html pur, tu sous-entend "pas de javascript", ça va coincer. L'attribut contentEditable est une notion HTML pure, donc client, donc PHP n'a aucune idée de ce que tu fais dedans.

    Donc il faut que tu transmettes tes modifications à ton script PHP. Le plus simple, c'est un formulaire, et si tu utilises des zones éditables à la place de champs de formulaire, il va falloir que tu fasses des champs cachés et un peu de JS pour alimenter ces champs cachés à partir des zones éditables.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Ben justement j'aurais voulu éviter le javascript... (un peu pour une question de principe : html affiche, php est censé s'occuper côté serveur... J'admet donc qu'il faille 2 langages... Mais 3 ?? )

    Donc tu dis qu'au lieu de d'utiliser une table, il faudrait que je me la fabrique à la main avec des champs de texte dans un form, c'est ça ?

    Et aussi une question annexe : est-il possible d'avoir la fonction ou script associé au submit dans la même page ?
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu peux tout à fait faire dans un seul script. Il faut juste diriger le formulaire vers la page courante. En général, on met le traitement du formulaire au début du script, ce qui permet de faire facilement des affichages d'erreur par exemple.

    Tu as tout à fait compris le principe : HTML affiche, PHP traite. Le problème c'est la communication entre les deux : le serveur PHP ne connait que ce qui arrive dans les requêtes faites au serveur. Et dans une page HTML, les seules choses qui font des requêtes serveurs, ce sont les formulaires. Donc tout ce qui n'est pas dans un champ de formulaire ne part pas vers le serveur.

    D'où trois possibilités :
    - tu mets des champs de formulaire à la place de tes cases éditables
    - tu gardes tes cases éditables, tu ajoutes des champs de formulaire cachés et tu mets à jour les champs à partir des cases via un script JS.
    - tu gardes tes cases éditables et tu fais carrément la requête en AJAX via un script JS.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    OK, donc le plus simple est de faire le formulaire avec des champs dedans...

    Merci


    Maintenant, 2 dernières questions :

    • y-a-til un moyen de faire des variables globales entre différents scripts php ?

      Je m'explique.. Si je prend donc cette structure, j'ai donc quelque chose comme :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      <hmtl>
      <body>
      ...
      <form...
      ..
      <table>
      <?php
      ...
      echo .... $elt ;
      ?>
      </table>
      ..
      </form>
      Mais je dois aussi avoir le script php "if (submit)".. Il sera en dehors de la table, et donc n'aura plus accès aux variables dont je me suis servi dans la construction de la table..

    • Et enfin, est-il possible de garder un peu le formatage que j'avais plus haut en mettant des champs ? Un peu comme ceci :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
                 echo '<td style="text-align:left;width:2.046cm; " class="ce2"><p>'.$row.'</p></td>';
      mais en y associant le champ :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      <input type="text" name="cellule"/>
      (et même en modifiant le nom au fur et à mesure, dynamiquement.. Mais je crois que si on donne pas, ça va dans $_POST, non ?)





    [EDIT]

    Et une petite dernière pour la route : comment fait-on un champ de formulaire caché ??

    [/EDIT]
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    • y-a-til un moyen de faire des variables globales entre différents scripts php ?
    OK ça j'ai trouvé

    Me reste les 2 autres...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    OK presque tout marche...

    Il me reste un truc :

    je n'arrive pas à enlever les bordures des champs de texte du formulaire..

    J'ai regardé partout, j'ai vu des border=0, boder:none, border:transparent, border-width=0, j'ai tout essayé mais ça me donne toujours les bordures...

    Vous auriez pas des idées par hasard ?


    PS: le truc de mettre les cases du formulaires dans la table ça marche bien
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu peux essayer outline:none;.
    Sinon, pose la question dans le forum CSS, ils seront sans doute plus à même de répondre à ce genre de problématique.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    merci beaucoup de ton aide


    Je met ce thread résolu
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/10/2014, 11h19
  2. [Débutant] [aide]comment recuperer une information precise dans une table html
    Par daroz dans le forum VB.NET
    Réponses: 0
    Dernier message: 03/03/2014, 14h05
  3. script pour convertir une table HTML en fichier CSV (ou excel)
    Par whitespirit dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 20/08/2008, 08h30
  4. [HTML] Parcours d'une table HTML pour creer un fichier CSV : comment faire ?
    Par Thomus38 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 28/06/2007, 12h19

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