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 :

Formater un champ pour le séparer dans 3 autres


Sujet :

Langage PHP

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    Points : 288
    Points
    288
    Par défaut Formater un champ pour le séparer dans 3 autres
    Bonjour,

    Je dois faire un export à partir de ma base de données pour importer des données dans un autre logiciel.

    Le problème est au sujet de l'adresse:
    Dans ma base de données, l'adresse est dans un champ de 225 caracteres, et dans le logiciel, il y a 3 champs limmités a 35 caractères chacun.
    Il faut donc que je scinde mon adresse.

    En gros il faut que :
    Si l'adresse fait moins de 35 caractères, alors je met tous dans adresse1,
    Si l'adresse fait plus de 35 caractères, il faut que je mette le maximum de caractères dans adresse1, mais sans coupé de mot, puis mettre le reste dans adresse2 (idem dans adresse 2, si il y a plus de 35 caracteres je dois mettre le max sans coupé de mots et le reste dans adresse3)...

    Ma question est comment faire?
    Je ne maitrise pas tres bien les regexp, et je ne vois pas comment m'y prendre pour prendre le maximum de caracteres sans couper de mots?

    J'espere que j'ai réussi a etre clair car c'est pas facile a expliquer...
    Merci d'avance pour votre aide.

  2. #2
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    Essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list($adress1, $adress2, $adress3) = explode(wordwrap( $text, 35, "\n"), "\n");
    Si tu as des retours à la ligne dans ta ligne de 255 caractères, remplace les 2 "\n" par une chaine que tu es SUR qui ne sy trouvera pas

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    Points : 288
    Points
    288
    Par défaut
    En gros il me faudrait un truc du genre:
    je pars d'une variable adresse que je dois repartir dans adress1 adresse2 et adresse3.

    On dit qu'un mot est séparé par un espace.
    Donc on met le premier mot dans adresse1, si (longueur mot1+1(espace)+longueur mot2)<35 alors on met le mot2 dans adresse1 sinon on met mot2 dans adresse2, si on a mis mot2 dans adresse1, alors on essaye de mettre mot3 dans adresse1 si ca fait toujours moins de 35 sinon on met mot 3 dans adresse2....

    Un peu d'aide serait bienvenue...

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    Points : 288
    Points
    288
    Par défaut
    Je viens d'essayer, mais ca ne marche pas...
    J'ai meme tester la fonction wordwrap toute seule:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $chaine="Parfois il m'arrive de lire la doc, mais pas assez pour découvrir ce genre de fonction qui peut s'avérer vraiment utile";
    	echo wordwrap($chaine,20);
    Et ca me retourne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parfois il m'arrive de lire la doc, mais pas assez pour découvrir ce genre de fonction qui peut s'avérer vraiment utile
    Au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Parfois il m'arrive
    de lire la doc, mais
    pas assez pour
    découvrir ce genre
    de fonction qui peut
    s'avérer vraiment
    utile
    Pourquoi?

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    Points : 288
    Points
    288
    Par défaut
    C'est bon ca marche!!!

    En fait les parametre de la fonction explode étaient inversés...
    Merci beaucoup Korko Fain!

    Voila le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    list($adresse1, $adresse2, $adresse3) = explode("##",wordwrap($adresse,35,"##"));
    Je pensais pas qu'il existait une fonction aussi bien que wordwrap!
    Je me voyais deja faire une boucle tres compliquée!!

    Merci merci!

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

Discussions similaires

  1. Réponses: 20
    Dernier message: 01/04/2011, 08h00
  2. [Toutes versions] Verrouillage d'un champ pour certains enregistrements dans formulaire en colonnes
    Par Thomas75005 dans le forum IHM
    Réponses: 1
    Dernier message: 07/01/2011, 18h15
  3. Réponses: 11
    Dernier message: 22/06/2009, 09h58
  4. Problème format de champs pour insertion dans une base FileMaker
    Par guiguikawa dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 28/03/2007, 22h27
  5. valeur d'un champ pour l'utiliser dans une requete
    Par bachilbouzouk dans le forum ASP
    Réponses: 4
    Dernier message: 08/04/2005, 16h58

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