THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline

#1 question sur xml

(02-11-2010 15:54:03)


Bonjour à tous,

es ce que qlq un sait comment récupérée l'id d'un sous balise

<racine>
<balize1 id="1">
     <balize2 id="x"></balize2>
</balize1>
</racine>

On peut bien récupérer l'id du balize1 mais pour balize2, je suis un peu perdu


merci pour un repose rapide.

favory.

Offline

#2 Re: question sur xml

(02-11-2010 16:21:16)


en php ? en javascript ?


OpenStudio Toulouse

Offline

#3 Re: question sur xml

(02-11-2010 16:36:28)


Bonjour Roadster,

récupération en php

voici le code complet pour récupérer l'id du balise 1 


<?php

class CCommune
{
    public function __construct($id)
    {
       
    }
   
    public static function writeArray($array)
    {
        $string = '<?xml version="1.0" encoding="utf-8"?>'."\n";
       
        $string.= '<racine>'."\n";
       
        foreach($array as $id => $detail) {
           
            $string.= "\t".'<commune id="'.$id.'" lien="index.php?c='.$id.'">'."\n";
           
            $string.= "\t\t".'<nom><![CDATA['.$detail['nom'].']]></nom>'."\n";
            $string.= "\t\t".'<cp><![CDATA['.$detail['cp'].']]></cp>'."\n";
            $string.= "\t\t".'<population><![CDATA['.$detail['population'].']]></population>'."\n";
            $string.= "\t\t".'<annee><![CDATA['.$detail['annee'].']]></annee>'."\n";
            $string.= "\t\t".'<description><![CDATA['.$detail['description'].']]></description>'."\n";
           
            $string.= "\t".'</commune>'."\n";
           
        }       
       
        $string.= '</racine>'."\n";
       
        file_put_contents(PATH_RACINE.'/villes_quartiers.xml', $string);
       
    }
   
    public static function list_cp()
    {
        $xml = simplexml_load_file(PATH_RACINE.'/villes_quartiers.xml');
        $list = array();
       
        foreach ($xml->children() as $com) {
            if(!empty($com->cp)) {   
                $list[] = (string)$com->cp;
            }
        }
       
        return $list;
    }
   
    public static function toArray($id = 0)
    {
        $xml = simplexml_load_file(PATH_RACINE.'/villes_quartiers.xml');
        $coms = array();
       
        foreach ($xml->children() as $com) {   
            $coms[(int)$com['id']] = array(
                'etat' => (string)$com['etat'],
                'nom' => (string)$com->nom,
                'cp' => (string)$com->cp,
                'population' => (string)$com->population,
                'annee' => (string)$com->annee,
                'description' => (string)$com->description
            );
        }
       
        if($id > 0) {
            return $coms[$id];
        }
       
        return $coms;
    }
   
    public static function swap_state($id)
    {
        $tree = self::toArray();
       
        $etat = $tree[$id]['etat'];
       
        if($etat == 'publie') {
            $tree[$id]['etat'] = 'masque';
        }
        else {
            $tree[$id]['etat'] = 'publie';
        }
       
        self::writeArray($tree);
       
    }
   
    public static function get_option($id)
    {
        $list = CCommune::list_all('nom');
        $options = '';
        foreach($list as $commune) {
            if($id == $commune['id']) {       
                $options.= '<option value="'.$commune['id'].'" selected="selected">'.stripslashes($commune['nom']).'</option>';
            }
            else {
                $options.= '<option value="'.$commune['id'].'">'.stripslashes($commune['nom']).'</option>';
            }
        }
       
        return $options;
    }
   
    public static function check_cp($_cp)
    {       
        $xml = simplexml_load_file(PATH_RACINE.'/villes_quartiers.xml');
       
        foreach ($xml->children() as $com) {   
            $cp = (string)$com->cp;       
            if($cp == $_cp) {
                return true;       
            }
        }
       
        return false;
    }
   
    public static function list_all($order = 'id')
    {
        $list = array();
       
        $xml = simplexml_load_file(PATH_RACINE.'/villes_quartiers.xml');
       
        foreach ($xml->children() as $com) {   
            $key = '';   
            switch($order) {
                case 'nom':
                    $key = $com->nom;                   
                    break;
                case 'id':
                default:
                    $key = $com['id'];
                    break;
            }
           
            $list[''.$key] = array(
                'id' => $com['id'],
                'nom'=>(string)$com->nom,
                'cp'=>(string)$com->cp,
                'etat' => (string)$com['etat']
             );           
        }
       
        ksort($list);
       
        return $list;
       
    }
}

?>


c'est 1 code qui récupèrent tous les données des communes mais pour une commune, elle appartient à plusieurs quartiers.
donc je veux récupérer aussi les id ainsi que les données des quartiers.

<commune id="1">
        <nom>nom_commune</nom>
        <population>population</population>
        <annee>année</annee>
        <description>escription</description>
        <quartier id="1">
            <nom>Quartier1</nom>
            <population>population</population>
            <annee>année</annee>
            <description>description</description>
        </quartier>
        <quartier id="2">
            <nom>nom_quartier</nom>
            <population>population</population>
            <annee>année</annee>
            <description>description</description>
        </quartier>
</commune>


merci

Offline

#4 Re: question sur xml

(02-11-2010 17:36:32)


mais 1 code simple en php pour récupérer l'id de la balise2 se serait ok

<balize1 id="x">
        <blaize2 id="y"></balize2>
</balize1>

Offline

#5 Re: question sur xml

(02-11-2010 22:56:14)


Si la taille de ton XML n'est pas trop importante, tu peux utiliser la fonction PHP xml_parse_into_struct, qui génère des structures en tableaux qui peuvent être parcourues à la façon d'un arbre.


OpenStudio Toulouse

Offline

#6 Re: question sur xml

(06-11-2010 06:56:42)


Bonjour,

J'ai ça comme résultat; ce qui reste à faire ce de collecter les id, nom, cp, description, population, etat mais je suis un peu perdu

** Base d'objets AminoAcid : Array ( [0] => AminoAcid Object ( [etat] => [nom] => nom_quartier [cp] => [population] => 250 [annee] => 1934 [description] => Courte description ) [1] => AminoAcid Object ( [etat] => [nom] => quartier du Petit-Saconnex et de la Servette [cp] => [population] => 250 [annee] => 1934 [description] => Courte description ) [2] => AminoAcid Object ( [etat] => [nom] => nom_quartier [cp] => [population] => 250 [annee] => 1934 [description] => Courte description ) [3] => AminoAcid Object ( [etat] => [nom] => nom_quartier[cp] => [population] => 250 [annee] => 1934 [description] => Courte description ) [4] => AminoAcid Object ( [etat] => [nom] =>nom_quartier[cp] => [population] => 250 [annee] => 1934 [description] => Courte description ) [5] => AminoAcid Object ( [etat] => [nom] => nom_quartier [cp] => [population] => 250 [annee] => 1934 [description] => Courte description ) [6] => AminoAcid Object ( [etat] => [nom] => nom_quartier[cp] => [population] => 250 [annee] => 1934 [description] => Courte description ) [7] => AminoAcid Object ( [etat] => [nom] => nom_quartier [cp] => [population] => 250 [annee] => 1934 [description] => Courte description ) [8] => AminoAcid Object ( [etat] => [nom] => nom_quartier[cp] => [population] => 250 [annee] => 1934 [description] => Courte description ) [9] => AminoAcid Object ( [etat] => [nom] => nom_quartier [cp] => [population] => 250 [annee] => 1934 [description] => Courte description ) )

merci

Offline

#7 Re: question sur xml

(06-11-2010 22:14:30)


Documente toi sur la boucle foreach de PHP, et sur l'utilisation des tableaux.


OpenStudio Toulouse

Offline

#8 Re: question sur xml

(13-11-2010 05:00:05)


ok roadster document bien lu sur foreach php problème résolu

- Actuellement je un pt souci avec un point, c'est l'affichage automatique des données du formulaire (comme nom, prénom,...) en fonction de l'e-mail.

c apprécié d'avoir une réponse rapide.

merci

Offline

#9 Re: question sur xml

(13-11-2010 07:10:08)


d'accord, c qu'il faut faire ce de collecter les valeur dans la base en fonction de l'e-mail saisi et de changer les value pour les valeur des champs dans la base

ok c resolu. donc je rien dit