begin process at 2012 05 31 12:19:40
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Web 2.0

 > 

Autre

 > 

problème de boucle foreach PHP-XML ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

problème de boucle foreach PHP-XML ?

vendredi 1 janvier 2010 à 19:56:18 | problème de boucle foreach PHP-XML ?

10demon10

bonjour à tous et bonne année 2010

voila j'ai un petit problème avec ma boucle "do-while" je souhaiterai afficher uniquement les 10 premier article de mon fichier XML pourtant il me semble oublier quelque chose car cela ne fonctionne pas ???

voici mon code PHP

Code PHP :
<?php
$fichier = "news.xml";
$dom = new DOMDocument();


if (!$dom->load($fichier)) 
{
    die('Impossible de charger le fichier XML');
}

$count = 0;
do{


$itemList = $dom->getElementsByTagName('element');


foreach ($itemList as $item) {
	
	$count = $count + 1;
	
    $titre = $item->getElementsByTagName('titre');
    
    if ($titre->length > 0) 
    {
        echo $titre->item(0)->nodeValue;
    } 
    else 
    {
        echo '(sans titre)';
    }
  
    echo '<br />'."\n";

    $desc = $item->getElementsByTagName('date');
    if ($desc->length > 0) 
    {
        echo ' '.$desc->item(0)->nodeValue.'<br/><br/>'."\n";
    }
    
    $desc = $item->getElementsByTagName('content');
    if ($desc->length > 0) 
    {
        echo ' '.$desc->item(0)->nodeValue.'<br/>'."\n";
    }
    
    
    
    $lien = $item->getElementsByTagName('classeur');
    if ($lien->length >0)
    {
        echo ' <a href="'.$lien->item(0)->nodeValue.'"> + (photos, docs,&#8230;)</a>';
    }

    echo '<br/><br/><br/>----------------------------------------------------------<br/><br/>'."\n";
  }
  
}while ($count <11)
 

?>


et un fichier XML de ce genre


Code XML :
<xmlfile>

<titre>mon titre</titre>
<date>01/01/10</date>
<content>mon content</content>
<classeur><a href ="#" target="_blank">les photos ici</a></classeur>


<titre>mon titre 2</titre>
<date>02/01/10</date>
<content>mon content le retour</content>
<classeur><a href ="#" target="_blank">les photos ici</a></classeur>

</xmlfile>


si quelqu'un à une suggestion je suis preneur :)
mardi 5 janvier 2010 à 23:38:22 | Re : problème de boucle foreach PHP-XML ?

neigedhiver

Salut et bonne année également,

Tout d'abord, je continue de penser comme dans mon précédent message, que tu devrais encapsuler les éléments correspondant à un item (je ne sais pas si c'est un article ou autre chose). XML est un langage de DESCRIPTION de données. Ton fichier, tel que tu nous le présente, décrit bien les différents items, mais ne les hiérarchise pas ; or c'est indispensable : comment savoir que tel titre correspond à tel item, et un autre titre à un autre item ? Là, on pourrait légitimement penser que l'item intitulé "mon titre" est associé à la date 02/01/10 : la règle comme quoi une nouvelle balise titre implique que les balises suivantes décrivent un nouvel item n'est pas écrite... Et justement, l'exemple que je donnais n'était rien de plus que l'écriture de cette règle, qui permet de savoir que telles balises décrivent tel item, telles autres tel autre item.

Sinon, les balises HTML dans l'élément <classeur> sont probablement mal interprétées, du fait que le parser DOM va les considérer comme des balises XML.
Pour éviter cela, il faut préciser au parser qu'il s'agit de données :
Code XML :
<classeur><![CDATA[<a href="".........>.....</a>]]></classeur>


Ce n'est peut-être pas la seule erreur, mais c'est celle que je vois là tout de suite... Il faudrait préciser ce qui ne fonctionne pas plus précisément, parce que "ça ne fonctionne pas" ce n'est pas très parlant... Est-ce qu'il y a un message d'erreur, que se passe-t-il d'inattendu, qu'attends-tu, ... ?

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
mardi 5 janvier 2010 à 23:53:51 | Re : problème de boucle foreach PHP-XML ?

10demon10

Je te remercie pour ton message

Je te reassure ,en éffet j'ai encapsuler le fichier XML comme tu me l'avais conseillé et cela fonctionne très bien(j'ai juste fait un copier coller de mon précédent poste méacoulpa ^^)

Pour le classeur il ne me poste aucun problème non plus de ce côté là non il s'agissait vraiment d'un problème de boucle.

J'ai remplacé mon do-while par un if ($count <11) et cela fonctionne ;)

mon fichier xml est de ce type
Code XML :

<xmlfile>

<element id="24">
<titre>mon titre</titre>
<date>01/01/10</date>
<content>mon content</content>
<classeur><a href ="#" target="_blank">les photos ici</a></classeur>
</element>

</xmlfile>



mais mon but est surtout de gérer l'affichage comme tu la deviné " des articles " certainement cela peut être possible par la balise <element> mais je vois pas comment dans le détail ?

(example: de FaceBook => "afficher plus" et il affiche 10 articles précédents supplémentaires)
mercredi 6 janvier 2010 à 00:06:18 | Re : problème de boucle foreach PHP-XML ?

neigedhiver

Sinon, il doit être possible de parcourir les éléments i à j (i et j étant variables en fonction de ceux que tu souhaites afficher) avec une boucle for.
La méthode getElementsById() retourne une instance de DOMNodeList, et on peut accéder à chaque élément par son index. Donc pour afficher les 10 éléments les plus récents (en toute logique, ceux d'indice 0 à 9, puisqu'ils doivent être les plus premiers de ton fichier XML), on doit pouvoir faire comme ça :
Code PHP :
$itemList = $dom->getElementsByTagName('element');
for ($i=0 ; $i<10 ; $i++) {
  $item = $itemList -> item($i);
  // etc
}


Inutile d'utiliser foreach si tu ne parcours pas l'intégralité des éléments ;)

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
mercredi 6 janvier 2010 à 18:26:18 | Re : problème de boucle foreach PHP-XML ?

10demon10

Merci beaucoup pour ta collaboration tous fonctionne correctement ;)


Cette discussion est classée dans : item, titre, xml, echo, desc


Répondre à ce message

Sujets en rapport avec ce message

problème de boucle foreach PHP-XML [ par 10demon10 ] Bonjour à tous voici mon petit soucis j'ai ce code php [code=php]load($fichier)) { die('Impossible de charger le fichier XML'); } $itemList = $ xml et php [ par karouani ] voila une partie de mon fichier XML NOVANCIA Bachelor http://www.mon-ecole-commerce.com/ecole-de-commerce/ecole-apres-bac/ecole-en-3-ans/bachelor-nov UPDATE Requete preparé PDO help [ par Rido159 ] Bonjour tout le monde ^_^ voila je fais un projet pour l'ecole, ça fais 3 jours que je suis bloqué aidé moi svp (si c'est possible de m expliqué ou Comparer une chaine avec un fichier xml et isoler les doublons [ par lestephnet ] Bonsoir, Je trouve en rond avec un code et plus j'avance et plus ca devient n'importe quoi, je pense qu'il y a beaucoup plus simple. J'ai un fichier isset qui ne fonctionne pas [ par tif27940 ] Bonjour voila j'ai un formulaire en post : [code=html] Information client urgent besoin d'aide pour si quelqu'un connait la répense [ par remyhoussem ] <?php include( problème d'affichage de page [ par morgain63 ] bonjour, à la base ça me supprimait l'affichage des deux pages (il me restait plus que le menu et le font d'écran) et la bdd était pas modifiée mainte écrire bonne endroit fichier [ par loblobloblob ] Bonjour, je vous expose mon probléme en espérant que vous pourrais m'aider. je dois faire un menu extensible sur un site, pour cela j'ai créé une BDD Problème Site pré fabriqué! [ par satan2006 ] Je suis ent rin de créer depuis 3 semaines un programme de site préfabriqué!Mais l'affichage plante pour une érreure de requète ke je n'arrive po a tr RSS dans un tableaux :'( [ par greg1386 ] Bonjour a tous voila j'ai un problemme j'ai 2 code php ( 1 tableaux et 1 lecteur rss php5 ) les voici :Tableaux :Echo "    &l


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,468 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales