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 :

manipulation d'une chaine de caractères sous format xml


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Par défaut manipulation d'une chaine de caractères sous format xml
    Bonjour,
    dans mon script php j'ai une chaine de caractères ,que je récupère en exécutant un programme externe,qui égale à "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    "<?xml version='1.0' encoding='ISO-8859-1' ?>
    <Carte>
      <Nbr_cartes>2</Nbr_cartes>
      <Stat_Ip>4119</Stat_Ip>
      <Type_carte>DTA-115 (#2)</Type_carte>
      <Taux_flux_transport>-858993460 bps</Taux_flux_transport>
      <Type_Modulation>?</Type_Modulation>
      <Frequence>578.00 MHz</Frequence>
      <Niveau_signal>-27.5 dBm</Niveau_signal>
      <Adresse_IP>204.204.204.204:52428</Adresse_IP>
      <Protocole>UDP</Protocole>
    </Carte>"
    Je veux manipuler cette chaine afin d'enregistrer chaque valeur entre deux balises dans un champs d'une table de la base de données mySql

  2. #2
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2003
    Messages : 152

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Par défaut
    C'est bon,j'ai réussi à le faire à l'aide du simpleXML,là il me reste à convertir la valeur de Fréquence (ex: 666MHz) en entier(666),mais en sait pas s'il y a 2 ou 3 chiffres ou s'il y a des chiffres après la virgule

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Par défaut
    C'est bon avec (int)$frequence;
    J'ai un autre problème,quand j'effectue l'insertion dans la base de données,il me retourne erreur voici le code
    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
    16
    17
    18
    19
      //...............
    	$cartes = new SimpleXMLElement($xmlstr);
    	$freq = (FLOAT)$cartes->Carte[0]->Frequence;
    	$txt = (String)$cartes->Carte[0]->asXML();
     
    	//echo $freq;
    	//echo $txt;
    	//echo"\n";
    	$req = "INSERT INTO dtinv_log_agent VALUES (DEFAULT,DEFAULT,NOW(),$freq,1,$txt)";
    	//$dataset = mysql_query($req);
    	$dataset = mysql_query($req) or die($req.mysql_error());
    	 if($dataset)
         	 {
    		echo("Données Insérées avec succès\n") ;
    	 }
    	 else
    	 {
    		echo("L'opération à échouée") ;
    	 }
    et voici l'erreur retournée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    )You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '<Carte>
      <Nbr_cartes>2</Nbr_cartes>
      <Stat_Ip>4119</Stat_Ip>
      <Type_carte>DTA' at line 1
    le champs correspondant à $txt dans la table est de type text.
    Sachant que quand j'enlève "$txt" de la requête et je la remplace par "qlqChose" ça marche

  5. #5
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2003
    Messages : 152
    Par défaut
    Y'a pas de quote entourant $txt dans ta requete, sont-ils dans $txt ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Par défaut
    voici la valeurde $txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    "<Carte>
      <Nbr_cartes>2</Nbr_cartes>
      <Stat_Ip>4119</Stat_Ip>
      <Type_carte>DTA-115 (#2)</Type_carte>
      <Taux_flux_transport>-858993460 bps</Taux_flux_transport>
      <Type_Modulation>?</Type_Modulation>
      <Frequence>578.00 MHz</Frequence>
      <Niveau_signal>-27.5 dBm</Niveau_signal>
      <Adresse_IP>204.204.204.204:52428</Adresse_IP>
      <Protocole>UDP</Protocole>
    </Carte>"

  7. #7
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2003
    Messages : 152
    Par défaut
    Avec ou sans les double quote dedans ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $txt = "<Carte>
      <Nbr_cartes>2</Nbr_cartes>
      <Stat_Ip>4119</Stat_Ip>
      <Type_carte>DTA-115 (#2)</Type_carte>
      <Taux_flux_transport>-858993460 bps</Taux_flux_transport>
      <Type_Modulation>?</Type_Modulation>
      <Frequence>578.00 MHz</Frequence>
      <Niveau_signal>-27.5 dBm</Niveau_signal>
      <Adresse_IP>204.204.204.204:52428</Adresse_IP>
      <Protocole>UDP</Protocole>
    </Carte>";
    Ou bien ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $txt = "\"<Carte>
      <Nbr_cartes>2</Nbr_cartes>
      <Stat_Ip>4119</Stat_Ip>
      <Type_carte>DTA-115 (#2)</Type_carte>
      <Taux_flux_transport>-858993460 bps</Taux_flux_transport>
      <Type_Modulation>?</Type_Modulation>
      <Frequence>578.00 MHz</Frequence>
      <Niveau_signal>-27.5 dBm</Niveau_signal>
      <Adresse_IP>204.204.204.204:52428</Adresse_IP>
      <Protocole>UDP</Protocole>
    </Carte>\"";

  8. #8
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Par défaut
    je pense qu'il y a un problème au niveau de ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $txt = (String)$cartes->Carte[0]->asXML();
    parce que je lui dis de convertir en string,un résultat qui déjà en sortie sous format xml,est ce que quelqu'un connait autre commande que asXML?

  9. #9
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    A mon avis c'est dans $txt que tu as des caractères qui ne passent pas pour la requête et non le asXml().

    Tu peux essayer en passant par un $txt que tu donnes en dur avec juste les balises <Carte>abeukdfuh</Carte>, tu auras déjà des pbs

    voir l'échappement de $txt pour les balise et aussi pour les caractères spéciaux

  10. #10
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Par défaut
    -->djibxav: c'est la première que j'ai
    -->Fench: oui je pense aussi,mais est ce qu'il y a une solution pour résoudre ça?

  11. #11
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Par défaut
    j'ai essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = "INSERT INTO dtinv_log_agent VALUES (DEFAULT,DEFAULT,NOW(),$freq,1,'<Carte>abeukdfuh</Carte>')";
    ça marche !

  12. #12
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2003
    Messages : 152
    Par défaut
    Citation Envoyé par mawkli Voir le message
    -->djibxav: c'est la première que j'ai
    On est donc d'accord que:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $req = "INSERT INTO dtinv_log_agent VALUES (DEFAULT,DEFAULT,NOW(),$freq,1,$txt)";
    Créera la requete:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    INSERT INTO dtinv_log_agent VALUES (DEFAULT,DEFAULT,NOW(),$freq,1,<Carte>
      <Nbr_cartes>2</Nbr_cartes>
      <Stat_Ip>4119</Stat_Ip>
      <Type_carte>DTA-115 (#2)</Type_carte>
      <Taux_flux_transport>-858993460 bps</Taux_flux_transport>
      <Type_Modulation>?</Type_Modulation>
      <Frequence>578.00 MHz</Frequence>
      <Niveau_signal>-27.5 dBm</Niveau_signal>
      <Adresse_IP>204.204.204.204:52428</Adresse_IP>
      <Protocole>UDP</Protocole>
    </Carte>)
    Alors qu'on devrait avoir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    INSERT INTO dtinv_log_agent VALUES (DEFAULT,DEFAULT,NOW(),$freq,1,'<Carte>
      <Nbr_cartes>2</Nbr_cartes>
      <Stat_Ip>4119</Stat_Ip>
      <Type_carte>DTA-115 (#2)</Type_carte>
      <Taux_flux_transport>-858993460 bps</Taux_flux_transport>
      <Type_Modulation>?</Type_Modulation>
      <Frequence>578.00 MHz</Frequence>
      <Niveau_signal>-27.5 dBm</Niveau_signal>
      <Adresse_IP>204.204.204.204:52428</Adresse_IP>
      <Protocole>UDP</Protocole>
    </Carte>')
    Ce qui explique l'erreur:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '<Carte>
    <Nbr_cartes>2</Nbr_cartes>
    <Stat_Ip>4119</Stat_Ip>
    <Type_carte>DTA' at line 1

  13. #13
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Par défaut
    exactement! j'ai rajouté les apostrophes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = "INSERT INTO dtinv_log_agent VALUES (DEFAULT,DEFAULT,NOW(),$freq,1,'''+$txt+''')";
    et ça marche ! merci bcp

  14. #14
    Membre confirmé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Par défaut
    ou bien juste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req = "INSERT INTO dtinv_log_agent VALUES (DEFAULT,DEFAULT,NOW(),$freq,1,'$txt')";
    ça marche aussi

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

Discussions similaires

  1. [XL-2010] Manipulation d'une chaine de caractères
    Par CristofMartins dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 07/05/2013, 16h14
  2. [MySQL] Manipulation d'une chaine de caractère.
    Par Tanoak_LaCapuche dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/07/2012, 10h01
  3. Chercher et insérer une chaine de caractères dans du XML
    Par imen1986 dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 23/04/2010, 01h19
  4. Réponses: 7
    Dernier message: 07/04/2010, 17h52
  5. Réponses: 3
    Dernier message: 01/02/2006, 19h26

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