Extraire les ID des elements(paragraphe) d'un Div

Extraire les ID des elements(paragraphe) d'un Div - PHP - Programmation

Marsh Posté le 20-11-2006 à 11:08:04    

Bonjour,  
j'utilise ds mon application Xajax,  
et je rempli mon DIV par des elements , exemple  

Code :
  1. <div id="aide"> contient des
  2. <p id="p1">para1</p>
  3. <p id="p2">para2</p>
  4. </div>.


alors est qu'il y'a une methode (exemple while ou ...) pour avoir les id p1, et p2 ?  
Merci pour votre aide.  
 
Note :
Normalement j'ai pas les id statiques, j'utilise Xajax dans mon application, a chque clique sur un image, j'ajoute l'id de cette image ds le div, et a la fin lorsque l'utilisteur choisis les images qu'il veut, il y a un boutton valider, lorsqu'il clique sur 'Valider', je dois recuperer les Id des images et les stockés ds la base de données ......  

Code :
  1. function afficher($id){
  2.         $reponse = new xajaxResponse();
  3.         $rec='';
  4. $query = mysql_query("select id,nom from table1 where id='$id'" ) 
  5. or die (mysql_error ()) ;
  6.    
  7. while($array = mysql_fetch_array($query))
  8. {
  9.       $rec .='<a id="'.$array['id'].'" href=#  >
  10.                          <p>'.$array['nom'].'</p>
  11.                  </a>';
  12. }
  13.    
  14.     //version PHP <= 4.3  
  15. $reponse->addPrepend("aide", "innerHTML",utf8_decode($rec));
  16.    
  17.         return $reponse->getXML();
  18. }

Reply

Marsh Posté le 20-11-2006 à 11:08:04   

Reply

Marsh Posté le 20-11-2006 à 11:44:15    

via le dom, tu loades ton document, et tu fais un getElementsByTagName('p'), ça te donne un tableau que tu peux parcourir. Plus qu'à faire un getAttribute('id') sur chacun des elements...
 
Mais AMHA, c'est pas en php que tu vas avoir besoin de le faire mais en js ( ce qui ne change rien à la méthode vu que le dom existe aussi en js)

Reply

Marsh Posté le 20-11-2006 à 11:47:12    

est ce que t as pas un exemple qui montre comment ce faire ?
j'ai ça :
$dom = domxml_open_mem('  
    <html>  
        <body>  
            <div id="aide">  
                <p id="p1">para1</p>  
                <p id="p2">para2</p>  
            </div>  
        </body>  
    </html>  
');  
 
$xpath = $dom->xpath_new_context();  
$nodes = $xpath->xpath_eval("//div[@id='aide']/p" );  
 
$ids = array();  
foreach ($nodes->nodeset as $p)  
{  
    $ids[] = $p->get_attribute('id');  
}  
 
mais j'ai pas pu faire marché

Reply

Marsh Posté le 20-11-2006 à 12:13:47    

je l'aurais fait avec DOM et pas DOMXML ( que j'aime pas du tout). Et le XPath est un peu violent / exagéré pour ton besoin.

Code :
  1. $str = '<html>
  2.     <body>
  3.     <div id="aide">
  4.     <p id="p1">para1</p>
  5.     <p id="p2">para2</p>
  6.     </div>
  7.     </body>
  8.     </html>';
  9. $doc = new DOMDocument();
  10. $doc->loadXML($str);
  11. $ids = array();
  12. foreach( $doc->getElementsByTagName('div') as $divNode){
  13.   if ( $divNode->getAttribute('id') == 'aide'){
  14.     foreach ( $divNode->getElementsByTagName('p') as $pNode){
  15.      $ids[] = $pNode->getAttribute('id');
  16.     }
  17.   }
  18. }
  19. var_dump($ids);
  20. ?>


Notes:
- Non on peut pas faire de getElementById car j'ai pas envie de valider ce truc avec une DTD
- je me demande si tu aurais pas plus vite fait avec simple_xml :o

Reply

Marsh Posté le 20-11-2006 à 14:18:57    

une petite regexp sinon

Reply

Marsh Posté le 20-11-2006 à 14:19:51    

Comment?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed