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 :

problème avec simpleXML et boucle while


Sujet :

Langage PHP

  1. #1
    Membre du Club
    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
    Points : 68
    Points
    68
    Par défaut problème avec simpleXML et boucle while
    Bonjour,
    dans mon script php je manipule des chaine de caractères sous format xml avec simpleXML,ces informations récupérées via des cartes video,quand il y a juste une carte à traiter(une carte avec scan_agent='1',le script marche très bien,mais quand je veux tester sur trois cartes il m'envoie les erreurs suivantes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    PHP Warning:  SimpleXMLElement::__construct(): Entity: line 15: parser error : XML declaration allowed only at the start of the document in /var/www/dtinv/script_agent.php on line 46
    PHP Warning:  SimpleXMLElement::__construct(): <?xml version='1.0' encoding='ISO-8859-1' ?> in /var/www/dtinv/script_agent.php on line 46
    PHP Warning:  SimpleXMLElement::__construct():      ^ in /var/www/dtinv/script_agent.php on line 46
    PHP Warning:  SimpleXMLElement::__construct(): Entity: line 16: parser error : Extra content at the end of the document in /var/www/dtinv/script_agent.php on line 46
    PHP Warning:  SimpleXMLElement::__construct(): <Cartes> in /var/www/dtinv/script_agent.php on line 46
    PHP Warning:  SimpleXMLElement::__construct(): ^ in /var/www/dtinv/script_agent.php on line 46
    PHP Fatal error:  Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /var/www/dtinv/script_agent.php:46
    Stack trace:
    #0 /var/www/dtinv/script_agent.php(46): SimpleXMLElement->__construct('<?xml version='...')
    #1 {main}
      thrown in /var/www/dtinv/script_agent.php on line 46
    je n'arrive pas à identifier c'est quoi l'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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
    <?php
    //On définit les 4 variables nécessaires à la connexion MySQL :
    	$hostname = "localhost";
    	$user     = "root";
    	$password = "infra44";
    	$nom_base_donnees = "dtinv";
    //Connexion permanente au serveur MySQL : mysql_Pconnect
    	$conn = mysql_pconnect($hostname, $user, $password) or die(mysql_error());
    //Choix de la base sur laquelle travailler
    	mysql_select_db($nom_base_donnees, $conn);
     
    //On récupère les données des tables dtinv_spooler & dtinv_pc_spooler
     
    	$req = "SELECT Id_spooler, no_adaptateur, scan_agent, dtinv_type_carte.Type, dtinv_spoolers.`id_bandeau _spooler`,IP
    	FROM dtinv_spoolers JOIN dtinv_pc_spoolers USING ( `id_pc_spooler` )
    	JOIN dtinv_type_carte USING (`id_type`)
    	WHERE scan_agent='1' ";
     
    	//$dataset = mysql_query($req);
    	$result = mysql_query($req) or die($req."<br />\n".mysql_error());
    	$total  = mysql_num_rows($result);
     
    	if($total) 
    	{
    		 while($row = mysql_fetch_array($result)) 
    		 {
    			echo 'carte '.$row['Type'].' connecté sur bandeau n°: '.$row['id_bandeau _spooler'].'  ';
    			$ip = $row['IP'];
    			$n_carte = $row['no_adaptateur'];
    			$id_spo = $row['Id_spooler'];
    			//On récupère les données xml
    		 	$command = 'zabbix_get -s'.$ip.' -k dektecAgent['.$n_carte.']';
    			exec($command, $output, $return_var);
    			var_dump($output, $return_var);
    			$chaine = implode("\n",$output);		
    			echo"\n";
     
    			//...............
    			$cartes = new SimpleXMLElement($chaine);	
    			$txt = (String)$cartes->Carte->asXML();
    			$xml = simplexml_load_string($chaine);
    			$inUse = (int)$cartes->Carte[0]->Api_in_use;
     
    			If ($inUse == 1)  //si la carte est utilisée par streamXpress
    			{		
     
    				$req_d = "INSERT INTO dtinv_log_agent VALUES (DEFAULT,$id_spo,NOW(),NULL,$inUse,'Carte en utilisation')";			
    				$dataset = mysql_query($req_d) or die($req_d.mysql_error());
    				$id_log = mysql_insert_id();
     
    			       if($dataset)
    				{
    					echo("Données Insérées avec succès\n") ;
    				}
    				else
    				{
    					echo("L'opération a échouée") ;
    				}
    				$req1 = "DELETE FROM dtinv_last_log"; 
    				$req2 = "INSERT INTO dtinv_last_log VALUES ($id_spo,$id_log)";
    				$dataset1 = mysql_query($req1) or die($req1.mysql_error());
    				$dataset2 = mysql_query($req2) or die($req2.mysql_error());
     
    			}	
    			ElseIf ($inUse == 0) //si la carte n'est pas utilisée par streamXpress
    			{
     
    				$freq = (FLOAT)$cartes->Carte[0]->Frequence;
    				$req_u = "INSERT INTO dtinv_log_agent VALUES (DEFAULT,".$id_spo.",NOW(),".$freq.",".$inUse.",'".mysql_escape_string($txt)."')"; 
    				$dataset = mysql_query($req_u) or die($req_u.mysql_error());
    				$id_log = mysql_insert_id();
    				if($dataset)
    				{
    					echo("Données Insérées avec succès\n") ;
    				}
     
    				else
    				{
    					echo("L'opération a échouée") ;
    				}
    				$req1 = "DELETE FROM dtinv_last_log"; 
    				$req2 = "INSERT INTO dtinv_last_log VALUES ($id_spo,$id_log)";
    				$dataset1 = mysql_query($req1) or die($req1.mysql_error());
    				$dataset2 = mysql_query($req2) or die($req2.mysql_error());
     
     
    			}
     
    				mysql_close();
     
     
    		}
    	}
    ?>
    Merci d'avance pour vos idées

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    On dirait que soit
    • tu as plusieurs fois le tag <?xml ?>
    • tu as quelque chose avant <?xml ?>


    Dans tous les cas, l'erreur mentionnée est l'incapacité de SimpleXML à interpréter ton XML donc il doit forcément être invalide.

  3. #3
    Membre du Club
    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
    Points : 68
    Points
    68
    Par défaut
    merci pour la réponse, j’ai pas trouvé d'anomalie au niveau de la structure XML, puisqu'il marche quand y a une seule carte

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

Discussions similaires

  1. Problème avec variable dans boucle DO WHILE
    Par bandit_debutant dans le forum Langage
    Réponses: 13
    Dernier message: 25/02/2008, 16h34
  2. [SimpleXML] Problème avec simpleXML : il n'affiche pas le contenu de mon élément
    Par ploxien dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 05/05/2007, 19h43
  3. Problème avec if dans un while.
    Par rutabagas dans le forum C
    Réponses: 7
    Dernier message: 28/02/2007, 12h36
  4. [Tableaux] problème avec str_replace en boucle
    Par kev2259 dans le forum Langage
    Réponses: 2
    Dernier message: 21/02/2007, 16h46
  5. [SimpleXML] Problème avec simplexml
    Par hxt dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 20/07/2006, 16h17

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