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

SQL Procédural MySQL Discussion :

[SGBD] Parser une variable pour mettre données dans bdd MySQL


Sujet :

SQL Procédural MySQL

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 140
    Points : 66
    Points
    66
    Par défaut [SGBD] Parser une variable pour mettre données dans bdd MySQL
    Voici le genre de données que j'ai dans ma variable :

    GB-0002. 28800 IN A 104.100.194.168 GB002-03. 28800 IN A 107.100.194.169 gce01. 28800 IN A 10.100.192.43 gb003-ce01. 28800 IN A 102.100.192.169

    Comment récupérer seulement le nom (genre : GB-0002. qui fini par un point) et l'adresse IP dans une table MySQL ?

    Merci de votre réponse

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Il nous faudrait davantage de détails : tu as certainement un caractère particulier qui fait office de séparateur. Qu'est-ce, une tabulation ?
    Si c'est le cas, tu peux simplement utiliser split(). Sinon, peut-être pourras-tu tenter avec les expressions régulières.
    Donne-nous l'exemple dans une balise code pour bien voir, stp.

  3. #3
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    Voilà une partie du code présent dans la variable $resultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gr-br-003-sw01.uk. 28800 IN A 1.1.13.5 gr-r-3-s1-mc.uk. 28800 IN A 1.10.13.36 gr-bi03-sw02.uk. 28800 IN A 10.10.1.60 gr-br-03-s02-msfc.uk. 28800 IN A 10.10.19.37 gb-bir-003-s1.uk. 28800 IN A 10.100.13.138 gbir-003-s12.uk. 28800 IN A 108.100.195.9 gbbir-002-s13.uk. 28800 IN A 104.100.13.48
    Je ne sais pas trop si les données sont séparées par des tabulations ou simplement par des espaces. J'opterais pour la seconde mais ...

    Comment puis-je transférer le nom finissant par "uk." et l'adresse IP correspondante dans une table mysql.

    Merci pour votre aide.

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Visiblement, tu n'as rien de fiable pour séparer les tuples. Tant pis, nous ferons sans.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <pre>
    <?
     
    $string = 'gr-br-003-sw01.uk. 28800 IN A 1.1.13.5 gr-r-3-s1-mc.uk. 28800 IN A 1.10.13.36 gr-bi03-sw02.uk. 28800 IN A 10.10.1.60 gr-br-03-s02-msfc.uk. 28800 IN A 10.10.19.37 gb-bir-003-s1.uk. 28800 IN A 10.100.13.138 gbir-003-s12.uk. 28800 IN A 108.100.195.9 gbbir-002-s13.uk. 28800 IN A 104.100.13.48';
     
    if&#40;preg_match_all&#40;'/&#40;&#91;^ &#93;+&#41; &#91;0-9&#93;+ &#91;a-z&#93;+ &#91;a-z&#93;+ &#40;&#91;0-9.&#93;+&#41;/i', $string, $matches, PREG_SET_ORDER&#41;&#41;&#123;
       foreach&#40;$matches as $match&#41;&#123;
          echo $match&#91;1&#93;.' / '.$match&#91;2&#93;,'<br />';
       &#125;
    &#125;
     
    ?>
    </pre>

  5. #5
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    Je te remercie bcp de ton aide. T'es trop fort.

    Est ce que tu pourrais m'expliquer cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if&#40;preg_match_all&#40;'/&#40;&#91;^ &#93;+&#41; &#91;0-9&#93;+ &#91;a-z&#93;+ &#91;a-z&#93;+ &#40;&#91;0-9.&#93;+&#41;/i', $string, $matches, PREG_SET_ORDER&#41;&#41;&#123;
    quelle est la partie qui sert pour le nom et l'autre pour l'adresse.

    Car il faudrait que je rajoute le champ A dans le tableau qui se situe entre les données car des fois ce n'est pas A mais NS (il faudrais que je le précise dans le tableau).

    Je te remercie.

  6. #6
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 140
    Points : 66
    Points
    66
    Par défaut
    personne a de réponses ?

  7. #7
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 3
    Points : 3
    Points
    3
    Par défaut j'en ai peut etre une je te la donnerai demain au RU
    Je t'ai grillé
    if(preg_match_all(' / ([^ ]+) [0-9]+ [a-z]+ [a-z]+ ([0-9.]+) /i', $string, $matches, PREG_SET_ORDER)
    Pour le nom ca doit etre la premiere partie en rouge : une suite de caractères
    Pour l'adresse c'est celle en bleu: une suite de nombres séparés par des points
    Et du coup si j'ai bien compris le code précédent tu as chacun de tes résultats séparés par des '/' tu peux donc utiliser ce caractere pour les séparer et ne garder que celles qui t'intéressent.
    mais attention je dis peut etre une grosse connerie

  8. #8
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Désolé d'avoir zappé ta question, c'est passé complètement à la trappe... N'hésite pas à relancer (encore), dans ces cas-là !

    Effectivement, l'explication de fabou83 est partiellement correcte : ce sont les parties entre parenthèses qui récupèrent tes infos.
    Si tu souhaites également récupérer le groupe de lettres qui se trouvent avant l'IP, met des parenthèses autour du derner [a-z]+, ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ' / &#40;&#91;^ &#93;+&#41; &#91;0-9&#93;+ &#91;a-z&#93;+ &#40;&#91;a-z&#93;+&#41; &#40;&#91;0-9.&#93;+&#41; /i
    Là où fabou83 se trompe, c'est au niveau des slashes : ce sont des délimiteurs simplement pour la regex, non pour le texte. Ils permettent de mettre un modificateur (ici : "i") à la regex, par exemple pour ignorer la casse (majuscules/minuscules) comme c'est le cas présentement.

  9. #9
    Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci de me corriger, ça ne peut que m'aider

  10. #10
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    C'est l'objectif

Discussions similaires

  1. mettre à jour une variable pour le background workder
    Par rebel29270 dans le forum VB.NET
    Réponses: 0
    Dernier message: 17/09/2011, 18h41
  2. Réponses: 6
    Dernier message: 08/06/2010, 13h15
  3. parser une variable pour en avoir plusieurs
    Par icsor dans le forum PL/SQL
    Réponses: 2
    Dernier message: 27/07/2009, 11h27
  4. Utiliser une variable pour mettre des étiquettes visible
    Par patate5555 dans le forum VBA Access
    Réponses: 8
    Dernier message: 21/06/2007, 14h51
  5. Réponses: 8
    Dernier message: 27/01/2007, 14h44

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