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

Bibliothèques et frameworks PHP Discussion :

[DOM] Moteur de recherche pour XML


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 146
    Points : 72
    Points
    72
    Par défaut [DOM] Moteur de recherche pour XML
    Bonjour , je souhaiterai créer un moteur de recherche en php pour recuperer des informations dans un fichier xml
    donc voila mon fichier xml
    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
    <?xml version="1.0" encoding="windows-1252"?>
    <BIENS>
    <BIEN>
    <NEGOCIATEUR>azerty</NEGOCIATEUR>
    <VILLE_OFFRE>PARIS 16</VILLE_OFFRE>
    <CATEGORIE>APPARTEMENT</CATEGORIE>
    <NB_PIECES>4</NB_PIECES>
    <TEXTE_FR>Paris 16e arr.  Rue des vignes.
     
    Appartement de 4 pièces de 93 m2 carrez, au 6ème étage avec ascenseur,entièrement refait, 3 chambres  avec une grande entrée une cuisine séparée et équipée, une salle de bain, wc séparé, belle hauteur sous plafond, parquet, moulures, cheminée dans chaque pièce, parties communes de haut standing, accès sécurisé par digicode et vidéophone, cave en sous sol.
    Appartement vendu rénové.
    r</TEXTE_FR>
    </BIEN>
    <BIEN>
    <NEGOCIATEUR>querty</NEGOCIATEUR>
    <VILLE_OFFRE>NEUILLY SUR SEINE</VILLE_OFFRE>
    <CATEGORIE>APPARTEMENT</CATEGORIE>
    <NB_PIECES>7</NB_PIECES>
    <TEXTE_FR>Peniche, Un hôtel particulier flottant construit par un architecte de renom avec une coque béton. Elle est non navigable, frais très réduit pour l entretien de la coque.  360 m2 sur 2 étages + 2 terrasses bien exposé au calme avec vue dégagée sur la seine et les canaux. Affectation bureau possible. Pas de frais de notaire. A voir !
    </BIEN>
    </BIENS>
    je voudrais quand on rentre le nom de la ville dans le champ il m'affiche toute les informations qui correspondent ( le negociateur ,la categorie le nombre de piece , le texte_fr...)

  2. #2
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    Ile xiste pas mal de chose pour recuperer des infos dans un xml.
    Voici une liste non exhaustive :
    http://fr.php.net/manual/fr/refs.xml.php

    Personnellement, je connais DOM avec XPATH, et ca fonctionne pas mal.
    XPATH permet de lancer une recherche dans un fichier XML et de recuperer tous les noeuds correspondant aux cirtères.

    Z.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 146
    Points : 72
    Points
    72
    Par défaut
    j'arrive a récupérer toute les donnée de mon xml et les afficher avec ce 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
    <?php
    	  $dom = new DomDocument;	  
    	  $dom->load("Ludwig.XML");
     
    	  $biens = $dom->getElementsByTagName("BIEN");
    	  foreach($biens as $BIEN )
    	  {
     
    		  $negociateurs = $BIEN->getElementsByTagName("NEGOCIATEUR");
    		  $negociateur = $negociateurs->item(0)->nodeValue;  //recupere tous les nom des negociateurs
     
     
    		  $villes = $BIEN->getElementsByTagName("VILLE_OFFRE");
    		  $ville = $villes->item(0)->nodeValue;  //recuperer tous les villes
     
    		  $annonces = $BIEN->getElementsByTagName("TEXTE_FR");
    		  $annonce = $annonces->item(0)->nodeValue; //recupere toutes les annonces
     
    		  echo "$negociateur - $ville - $annonce <br /> <br />" ;
     
    	  }
    je voulais savoir si il était possible de faire une recherche directement sur la variable $ville par exemple vu qu'elle recupere toutes villes ?

  4. #4
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    Il faut utiliser xpath : c'est lui qui permet de construire la requete, un espece de google du xml.
    Par exemple, avec ton xml (je n'ai pas testé, et ca faoit longtemps que je n'ai pas fait de xml) :
    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
    <?php
    //cahrgement de ton fichier
    $doc = new DOMDocument;
    $doc->Load("Ludwig.XML");
     
    //creation d'un objet xpath, utiliser pour la requete xpath
    $xpath = new DOMXPath($doc);
     
    //construit la requete : 
    //Rechercher tous les noeuds BIEN sous le chemin /BIENS/ dont le noeud fils VILLE_OFFRE est égal à 'PARIS 16'
    $query = "/BIENS/BIEN[VILLE_OFFRE='PARIS 16']";
     
    //execute la requete
    $noeuds_resultats = $xpath->query($query);
     
    //parcours les resultats
    foreach ($noeuds_resultats as noeud) {
      //action
      }
    En tres gros, c'est comme une base de donnée : tu la charges, tu prepare une requete que tu executes, et tu utilises les resultats

    Z.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 146
    Points : 72
    Points
    72
    Par défaut
    ah super , sa marche bien merci
    j'aurais une autre question comment je peux faire pour faire une recherche avec plusieurs critères par exemple , que les appartement de PARIS 16 ou que les appartements qui ont que 3 pièces

  6. #6
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $query = "/BIENS/BIEN[VILLE_OFFRE='PARIS 16'][NB_PIECES=3]";
     
    ou
     
    $query = "/BIENS/BIEN[VILLE_OFFRE='PARIS 16' and NB_PIECES=3]
    Z.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 146
    Points : 72
    Points
    72
    Par défaut
    j'ai une petite erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    foreach ($noeuds_resultats as $noeuds)
    {
    	...
    	$prixs =  $noeuds->getElementsByTagName("PRIX");
    	$prix =  $prixs->item(0)->nodeValue;
    }
    j'ai ce message d'erreur
    " Notice: Trying to get property of non-object in C:\wamp\www\tests\recherche.php on line 73 "

    je fais une recherche de prix entre 2 tranches de prix
    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
     
    if($budget_max != NULL || $budget_max != "")
    {
    	$query = $query."[PRIX <= '$budget_max' ]";
    }
     
    else
    {
    	$budget_max = 100000;
    }
    if($budget_min != NULL || $budget_min != "")
    {
    	$query = $query."[PRIX >= '$budget_min' ]";
    }
    else
    {
    	$budget_min = 0;
    }
    je pense que le problème viens d"ici je pense

  8. #8
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    Tu utilises des guillemets simples (chaine de caractère) alors que tu compares des nombres décimaux.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 146
    Points : 72
    Points
    72
    Par défaut
    enfaite j'ai trouvé le problème c'est le fichier xml j'ai des balises <PRIX> et des fois des balise <LOYER> a la place du coup il recherche des prix dans la dans la balise <LOYER> et génère cette erreur


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <BIEN>
    <PRIX>820000</PRIX>
    <CP_OFFRE>75004</CP_OFFRE>
    <CATEGORIE>APPARTEMENT</CATEGORIE>
    <SURF_HAB>73</SURF_HAB>
    ...
    <BIEN>
    <LOYER>29000</LOYER>
    <CP_OFFRE>75008</CP_OFFRE>
    <CATEGORIE>BOUTIQUE</CATEGORIE>
    <SURF_HAB>130</SURF_HAB>
    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
     
    foreach ($noeuds_resultats as $noeuds)
    {		
     
    	$prixs = $noeuds->getElementsByTagName("PRIX");
    	$prix = $prixs->item(0)->nodeValue;
     
    	$loyers = $noeuds->getElementsByTagName("LOYER");
    	$loyer = loyers->item(0)->nodeValue;
    ...
     
    echo "$cp_offre -$prix - $categorie - $surf_hab <br />  $texte_fr <br /><br />";
     
     
     
     
    }
    mais j'arrive toujours pas a résoudre cette erreur je voudrais que sa m'affiche quand même le loyer et le prix

  10. #10
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    Salut,

    ici, je place tout dans un tableau associatif. Reste plus qu'a recuperer les valeurs de ce tableau qu'on désire :

    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
    <?php
     
    // phpinfo();
    //cahrgement de ton fichier
    $doc = new DOMDocument();
    $doc->Load("Ludwig.XML");
     
    //creation d'un objet xpath, utiliser pour la requete xpath
    $xpath = new DOMXPath($doc);
     
    //construit la requete : 
    //Rechercher tous les noeuds BIEN sous le chemin /BIENS/ dont le noeud fils VILLE_OFFRE est égal à 'PARIS 16'
    $query = "/BIENS/BIEN[VILLE_OFFRE = 'PARIS 16'][NB_PIECES = 4]";
     
    //execute la requete
    $noeuds_resultats = $xpath->query($query);
     
    //parcours les resultats
    foreach ($noeuds_resultats as $noeud) {
    	unset($results);
    	foreach($noeud->childNodes as $noeud_courant) {
    		if ($noeud_courant->nodeType == XML_TEXT_NODE) continue;
    		$results[$noeud_courant->nodeName] = $noeud_courant->nodeValue;
    		}
    	print_r($results);
      }
    ?>
    Ce qui affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Array
    (
        [NEGOCIATEUR] => azerty
        [VILLE_OFFRE] => PARIS 16
        [CATEGORIE] => APPARTEMENT
        [NB_PIECES] => 4
        [TEXTE_FR] => Paris 16e arr.  Rue des vignes.
     
                Appartement de 4 pièces de 93 m2 carrez, au 6ème étage avec ascenseur,entièrement refait, 3 chambres  avec une grande entrée une cuisine séparée et équipée, une salle de bain, wc séparé, belle hauteur sous plafond, parquet, moulures, cheminée dans chaque pièce, parties communes de haut standing, accès sécurisé par digicode et vidéophone, cave en sous sol.
                Appartement vendu rénové.
                r
    )
    Z.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 146
    Points : 72
    Points
    72
    Par défaut
    salut ,
    j'ai essayer d 'accéder au champ du table avec un getElementsByTagName() mais j'ai une erreur

  12. #12
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    chez moi, ca fonctionne.
    Quelle est ton erreur ?

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 146
    Points : 72
    Points
    72
    Par défaut
    l'erreur doit venir de ma part , j'arrive pas a lire un champ dans le tableau mais ton code marche bien

    je te fais montrer a quoi ressemble mon moteur ( avec mon code actuel )
    http://misakilou.ifrance.com/

    bon j'ai quelque soucis avec la classe DOM que je règlerai plus tard mais pour que mes annonce s'affiche correctement je suis obligé de mettre une valeur dans la champ budget min ou budget max et pourtant je force le champ a 0 dans mon code php

    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
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Recherche XML</title>
    </head>
     
    <body>
    <?php
    phpinfo();
    $doc = new DOMDocument;
    $doc->Load("Ludwig.XML");
     
    //creation d'un objet xpath
    $xpath = new DOMXPath($doc);
     
    //declaration des variables
    $codepostal = $_POST['codepostal'];
    $categorie = $_POST['categorie'];
    $budget_min = $_POST['budget_min'];
    $budget_max = $_POST['budget_max'];
    $choix = $_POST['choix'];
     
    //recherche tous les noeuds BIEN dans /BIENS
    $query = "/BIENS/BIEN";
     
    if($choix == "vente")
    {
    	echo "$choix <br /><br />";
    	if($codepostal != NULL || $codepostal != "")  //si la chaine du champ categorie est different de nul
    	{
    		$query = $query."[CP_OFFRE = '$codepostal' ]";  //on recupere les resultats correspondant au code postal
    	}
     
     
    	if($categorie != NULL || $categorie != "")
    	{
    		$query = $query."[CATEGORIE = '$categorie' ]";
    	}
     
     
    	if($budget_max != NULL )
    	{
    		$query = $query."[PRIX <= '$budget_max' ]";
    	}
     
    	else
    	{
    		$budget_max = 1000000;
    	}
     
    	if($budget_min != NULL)
    	{
    		$query = $query."[PRIX >= '$budget_min' ]";
    	}
    	else
    	{
    		$budget_min = 0;
    	}
     
    	$noeuds_resultats = $xpath->query($query);  
     
    	foreach ($noeuds_resultats as $noeuds)
    	{		
     
     
    		$prixs = $noeuds->getElementsByTagName("PRIX");     //ERREUR
    		$prix = $prixs->item(0)->nodeValue;
     
    		//resultat pour les code postal
    		$cp_offres = $noeuds->getElementsByTagName("CP_OFFRE");
    		$cp_offre = $cp_offres->item(0)->nodeValue;
     
    		//resultats pour les annonces
    		$textes_fr = $noeuds->getElementsByTagName("TEXTE_FR");
    		$texte_fr = $textes_fr->item(0)->nodeValue;
     
    		//resultats pour les categories
    		$categories = $noeuds->getElementsByTagName("CATEGORIE");
    		$categorie = $categories->item(0)->nodeValue;
     
     
     
    /*		$loyers = $noeuds->getElementsByTagName("LOYER");	 //ERREUR
    		$loyer = $loyers->item(0)->nodeValue;*/
     
    		$surf_habs = $noeuds->getElementsByTagName("SURF_HAB");
    		$surf_hab = $surf_habs->item(0)->nodeValue;
     
    			echo "$budget_min <br />$cp_offre -$prix €- $categorie - $surf_hab m² <br />  $texte_fr <br /><br />";
    	}
    }
     
    /********************************** RECHERCHE PAR LOCATION***********************************
    
    */
     
    else
    {
    	echo "$choix <br /><br />";
    	if($codepostal != NULL || $codepostal != "")  //si la chaine du champ categorie est different de nul
    	{
    		$query = $query."[CP_OFFRE = '$codepostal' ]";  //on recupere les resultats correspondant au code postal
    	}
     
     
    	if($categorie != NULL || $categorie != "")
    	{
    		$query = $query."[CATEGORIE = '$categorie' ]";
    	}
     
     
    	if($budget_max != NULL || $budget_max != "")
    	{
    		$query = $query."[LOYER <= '$budget_max' ]";
    	}
     
    	else
    	{
    		$budget_max = 1000000;
    	}
    	if($budget_min != NULL || $budget_min != "")
    	{
    		$query = $query."[LOYER >= '$budget_min' ]";
    	}
    	else
    	{
    		$budget_min = 0;
    	}
     
    	$noeuds_resultats = $xpath->query($query);  
     
    	foreach ($noeuds_resultats as $noeuds)
    	{		
     
    		$loyers = $noeuds->getElementsByTagName("LOYER");	 //ERREUR
    		$loyer = $loyers->item(0)->nodeValue;
     
    		//resultat pour les code postal
    		$cp_offres = $noeuds->getElementsByTagName("CP_OFFRE");
    		$cp_offre = $cp_offres->item(0)->nodeValue;
     
    		//resultats pour les annonces
    		$textes_fr = $noeuds->getElementsByTagName("TEXTE_FR");
    		$texte_fr = $textes_fr->item(0)->nodeValue;
     
    		//resultats pour les categories
    		$categories = $noeuds->getElementsByTagName("CATEGORIE");
    		$categorie = $categories->item(0)->nodeValue;
     
    /*		$prixs = $noeuds->getElementsByTagName("PRIX");     //ERREUR
    		$prix = $prixs->item(0)->nodeValue;*/
     
    		$surf_habs = $noeuds->getElementsByTagName("SURF_HAB");
    		$surf_hab = $surf_habs->item(0)->nodeValue;
     
    			echo "$cp_offre - $loyer € - $categorie - $surf_hab m²<br />  $texte_fr <br /><br />";
    	}
    }
     
    ?>
    </body>
    </html>

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 146
    Points : 72
    Points
    72
    Par défaut
    je pense que je vais etre amené a faire un tri par prix , je suis obligé de faire des tableaux ?

  15. #15
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    Xpath dans php ne permet pas de faire un tri.
    Mes souvenirs de XSLT me communiquent une possibilité de le faire via ce type de requete, mais je ne l'ai jamais exploité via php.

    Le plus simple (je vise toujours le plus simple) serait donc de recuperer tes noeuds dans un tableau associatif avec le prix comme clé, et de le trier.

    Z.

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 146
    Points : 72
    Points
    72
    Par défaut
    avec print_r($results);

    je me retrouve avec sa
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Array ( [CODE_CLIENT] => [TYPE_OFFRE] => 1 [CODE_SOCIETE] => 6358 [CODE_SITE] => 01 [NO_ASP] => 3410513 [NO_DOSSIER] => 00622 [DATE_OFFRE] => 04/08/2008 [PRIX] => 219000 [CP_OFFRE] => 94350
    .....
    après je récupère les prix comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat_prix = $results['PRIX'];
    c'est a partir de la que je suis bloqué j'arrive pas a faire le tri j'ai essayé avec cette fonction array_multisort() mais il me dit que $resultat_prix n'est pas un array

  17. #17
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    Salut,

    Alors tout d'abord, tu recupères tes fiches dans un tableau associatif, en utilisant comme clé ce que tu veux trier.

    Ensuite, tu appliques la fonction ksort, qui trie un tableau associatif en fonction des clés. Attentient si tu veux trier par valleur numérique ou par valeur alphanumérique :
    Numérique :
    1
    2
    11
    Alphanumérique :
    1
    11
    2

    Il faut donc utiliser le bon parametre de trie.

    Puis tu parcours ton tableau pour l'afficher via un foreach.

    Z.

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 146
    Points : 72
    Points
    72
    Par défaut
    j'ai essayé de faire quelque chose comme cela
    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
     
    foreach ($noeuds_resultats as $noeud)
    {
       unset($results);
       foreach($noeud->childNodes as $noeud_courant) 
       {
    	if ($noeud_courant->nodeType == XML_TEXT_NODE) continue;
    	$results[$noeud_courant->nodeName] =  $noeud_courant->nodeValue;
     
       }
     
        $resultat_categorie = strtoupper($results['CATEGORIE']); 
        $resultat_prix = $results['PRIX'];
        $resultat_cpoffre = $results['CP_OFFRE'];
        $array = array("prix" => $resultat_prix );
        ksort($array);
        print_r($array);
    }
    mais sa a pas l'air de trier :s

  19. #19
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    Essais avec ca :
    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
    <?php
    foreach ($noeuds_resultats as $noeud)
    {
       unset($results);
       foreach($noeud->childNodes as $noeud_courant) 
       {
    	if ($noeud_courant->nodeType == XML_TEXT_NODE) continue;
    	$results[$noeud_courant->nodeName] =  $noeud_courant->nodeValue;
     
       }
     
        $resultat_prix = $results['PRIX'];
        $array[$resultat_prix]['resultat_categorie'] = strtoupper($results['CATEGORIE']); 
        $array[$resultat_prix]['resultat_cpoffre'] = $results['CP_OFFRE'];
    }
     
    ksort($array);
    print_r($array);
    ?>

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 146
    Points : 72
    Points
    72
    Par défaut
    ta solution marche par contre pour afficher que la categorie je suis obligé de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $array[$resultat_cpoffre]['resultat_categorie'];
    ?
    parce que je pense sa va me faire changer tous mon code mais j'en suis pas sur
    http://nopaste.php-q.net/251994

    je sais si il y a une autre solution adapté a mon code

Discussions similaires

  1. Moteur de recherche pour un site Web
    Par itmak dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 07/12/2007, 17h05
  2. Indexation / Moteur de recherche spécial XML
    Par norkius dans le forum XQUERY/SGBD
    Réponses: 2
    Dernier message: 02/10/2007, 14h23
  3. [JBoss Portal] Moteur de recherche pour Jboss portal
    Par maikof dans le forum Portails
    Réponses: 3
    Dernier message: 11/05/2007, 06h28
  4. Moteur de recherche pour le site
    Par Mister Nono dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 14/01/2007, 19h33
  5. Moteur de recherche pour base de données
    Par jolinar13 dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 17/12/2006, 10h12

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