Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/03/2006, 12h19   #1
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 134
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 134
Points : 36
Points : 36
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
winnie82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2006, 12h43   #2
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
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.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2006, 14h17   #3
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 134
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 134
Points : 36
Points : 36
Voilà une partie du code présent dans la variable $resultat :

Code :
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.
winnie82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2006, 14h29   #4
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Visiblement, tu n'as rien de fiable pour séparer les tuples. Tant pis, nous ferons sans.

Code :
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(preg_match_all('/([^ ]+) [0-9]+ [a-z]+ [a-z]+ ([0-9.]+)/i', $string, $matches, PREG_SET_ORDER)){
   foreach($matches AS $match){
      echo $match[1].' / '.$match[2],'<br />';
   }
}
 
?>
</pre>
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2006, 14h50   #5
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 134
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 134
Points : 36
Points : 36
Je te remercie bcp de ton aide. T'es trop fort.

Est ce que tu pourrais m'expliquer cette ligne :

Code :
IF(preg_match_all('/([^ ]+) [0-9]+ [a-z]+ [a-z]+ ([0-9.]+)/i', $string, $matches, PREG_SET_ORDER)){
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.
winnie82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2006, 16h13   #6
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 134
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 134
Points : 36
Points : 36
personne a de réponses ?
winnie82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 14h18   #7
Invité de passage
 
Inscription : 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é
Citation:
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
fabou83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 16h54   #8
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
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 :
' / ([^ ]+) [0-9]+ [a-z]+ ([a-z]+) ([0-9.]+) /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.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 17h13   #9
Invité de passage
 
Inscription : mars 2006
Messages : 3
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 3
Points : 3
Points : 3
Merci de me corriger, ça ne peut que m'aider
fabou83 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2006, 17h20   #10
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
C'est l'objectif
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h53.


 
 
 
 
Partenaires

Hébergement Web