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 :

écrire des colonnes de même largeurs dans un fichier texte


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de karimphp
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 183
    Points : 110
    Points
    110
    Par défaut écrire des colonnes de même largeurs dans un fichier texte
    bonjour
    j'ai un souci après avoir écrire dans mon fichier texte j'ai pas trouvé une commande dans php qui me permet de faire des colonnes de même largeurs dans un fichier texte comme les <td> en html
    exemple

    id_cmd | frais_livraison | net a payer | date_cmd
    id_cm2 | frais_livraiso2 | net a paye2 | date_cm2
    id_cm3 | frais_livraiso3 | net a paye3 | date_cm3

    merci d'avance

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Bonjour

    Ca n'est pas vraiment possible, parce que ca dépend complètement de ta police. A moins d'utiliser une police a largeur fixe (Courrier New par exemple) tu ne peux pas prévoir la largeur que prendra ton texte a l'avance (un "O" est beaucoup plus large que ".")

    Par contre en utilisant une police Courrier New tu peux le faire, il faut alors utiliser sprintf() pour préparer tes lignes, ca te permet de donner un nombre de caractères maximum pour ta chaîne et de remplir avec ce que tu veux (surement des espaces?) pour compléter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sprintf("%12s | %20s | %50s", $prenom, $nom, $adresse);
    ca va te mettre le prénom sur 12 caractères, alignés a droite, puis | puis le nom sur 20 caractères alignés a droite, etc.

  3. #3
    Membre régulier Avatar de karimphp
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 183
    Points : 110
    Points
    110
    Par défaut
    merci mais j'ai pas réussi a insérer des valeurs dans les lignes suivantes et que j'ai bien utiliser la fonction fseek afin de pointer sur la ligne suivante
    voila mon code il m'affiche tous dans une seule ligne
    je sais pas si j'ai bien utilisé sprintf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $fp = fopen('commande/cmd'.$refcom.'.txt', 'x');
    $str1=sprintf("%2s | %20s", "reference :", $refcom);
    fwrite($fp,$str1);
    $pos2=fseek($fp,2);
    $str2=sprintf("%2s | %20s", "nom :", $nom);
    fwrite($fp,$str2);
    fseek($fp,3);
    $str3=sprintf("%2s | %20s", "Prenom :", $prenom);
    fwrite($fp,$str3);
    fclose($fp);
    je suis vraiment perdu ,Aidez mois svp

  4. #4
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Pour aller à la ligne, il faut séparer les lignes par des \n!
    De plus, il serait beaucoup plus simple d'utiliser directement file_put_contents() plutot que fopen, fwrite et fseek (je ne comprends meme pas ce que fseek fait ici?
    Ensuite, %2s dans sprintf indique de mettre une chaine de caractères sur deux caractères, or vous lui passer "Reference :"

    faites plutot comme ca:

    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
     
    // initialise la chaine a vide
    $ligne = "";
     
    // Ajoute la référence (taille du titre : 12 caractères
    $ligne .= sprintf("%12s | %20s", "reference :", $refcom);
     
    // Met le nom sur la meme taille
    $ligne .= sprintf("%12s | %20s", "nom :", $nom);
     
    // idem prénom
    $ligne .= sprintf("%12s | %20s", "Prenom :", $prenom);
     
    // Ajoute la ligne courante dans le fichier
    file_put_contents('commande/cmd'.$refcom.'.txt', $ligne . "\n", FILE_APPEND);
    [/CODE]

  5. #5
    Membre régulier Avatar de karimphp
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 183
    Points : 110
    Points
    110
    Par défaut
    salut
    excusez moi pour le retard
    merci beaucoup ca fonctionne tres bien avec cette methode

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/07/2014, 09h15
  2. Réponses: 4
    Dernier message: 22/07/2010, 15h46
  3. Réponses: 4
    Dernier message: 14/12/2009, 13h43
  4. Réponses: 4
    Dernier message: 20/06/2009, 11h26
  5. [MySQL] Comment écrire des données de la bdd dans un fichier
    Par sandddy dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 07/11/2007, 16h13

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