Pages :
(reprise du message précédent)

Bon ben tu as l'air de vouloir faire ça avec simpleXML alors bonne chance Smiley smile

a+

EDIT : heu sinon essaye ça :
<?php







/* début du code de la page */







/* on crée un objet DOMDocument puis on récupère le fichier XML */



$photos = new DOMDocument;



$photos->load('http://adresse.de/mon/fichier.xml');







/* on compte le nombre de photos grâce à une requête XPath 



   http://fr3.php.net/manual/fr/function.dom-domxpath-evaluate.php    */

$nombreDePhotos = $photos->getElementsByTagName('IMAGE')->length;











echo '<table id="photos">';







/* et après on boucle */



for($i=0;$i<=ceil($nombreDePhotos/5);$i++)



{



echo '<tr>';







for($j=1;$j<=5;$j++)



{



$numeroPhoto = $i*5+$j;



// on vérifie qu'on ne dépasse pas le nombre de photos présentes dans le fichier



if($numeroPhoto <= $nombreDePhotos)



{



echo '<td><img src="';



echo $photos->getElementsByTagName('IMAGE')->item($numeroPhoto)->textContent();



echo '" alt="';



echo $photos->getElementsByTagName('CAPTION')->item($numeroPhoto)->textContent();



echo '"/></td>';



}



}



echo '</tr>';



}







echo '</table>';







/* fin du code */



?>

Modifié par SirWam (01 May 2006 - 16:53)
Point du tout !! c'est seulement que j'ai réussit à le faire avec ... mais je l'ai dit dans mon post précédent ... pas le reste, à savoir la présentation sous forme de tableau et les liens ...

Voila ce que me donne ton script :
Fatal error: Call to undefined method DOMElement::textContent() in /var/www/sdc/8/0/lulusurf/ptbum5/xml5.php on line 213


Alors continons sur cette lancée Smiley cligne
Là essaye de remplacer les textContent() par firstChild ou firstChild() Smiley cligne

a+
Modifié par SirWam (01 May 2006 - 18:01)
avec firstchild, voici la réponse en html :
<tr><td><img src="Object id #2"alt=""/></td><td><img src="Object id #3"alt=""/></td><td><img src="Object id #2"alt=""/></td><td><img src="Object id #3"alt=""/></td><td><img src="Object id #2"alt=""/></td></tr> ... <td><img src=""alt=""/></td></tr><tr></tr></table>


firstChild() ne fonctionnait pas
Modifié par azhdar (01 May 2006 - 18:33)
Forcément puisque le premier enfant (first child) de <IMAGE> dans ton fichier XML est <NAME> !

Donc il faut réadapter :
<?php

/* début du code de la page */

/* on crée un objet DOMDocument puis on récupère le fichier XML */
$photos = new DOMDocument;
$photos->load('http://adresse.de/mon/fichier.xml');

/* on compte le nombre de photos */
$nombreDePhotos = $photos->getElementsByTagName('IMAGE')->length;


echo '<table id="photos">';

/* et après on boucle */
for($i=0;$i<=ceil($nombreDePhotos/5);$i++)
{
echo '<tr>';

for($j=1;$j<=5;$j++)
{
$numeroPhoto = $i*5+$j;

// on vérifie qu'on ne dépasse pas le nombre de photos présentes dans le fichier
if($numeroPhoto <= $nombreDePhotos)
{
echo '<td><img src="';
echo $photos->getElementsByTagName('NAME')->item($numeroPhoto)->firstChild();
echo '" alt="';
echo $photos->getElementsByTagName('CAPTION')->item($numeroPhoto)->firstChild();
echo '"/></td>';
}

}

echo '</tr>';

}

echo '</table>';

/* fin du code */

?>


++
fisrtChild ne fonctionne pas avec ()

et ça me donne:
<img src="Object id #2" alt=""/>

Modifié par azhdar (01 May 2006 - 18:49)
et bien là tu débugges en rajoutant nodeName après tes firstChild pour saoir ou tu es :
...firstChild->nodeName;


et au fait serait-t-il possible de voir le fichier XML en entier ?
Modifié par SirWam (01 May 2006 - 19:05)
Voilà ce code fonctionne :

<?php

header('Content-Type:text/plain');

/* début du code de la page */

/* on crée un objet DOMDocument puis on récupère le fichier XML */
$photos = new DOMDocument;
$photos->load('http://lulusurf.free.fr/ptbum5/imageData.xml');

/* on compte le nombre de photos */
$nombreDePhotos = $photos->getElementsByTagName('IMAGE')->length;


echo '<table id="photos">';
/* et après on boucle */

for($i=0;$i<=ceil($nombreDePhotos/5);$i++)
{
	echo '<tr>';
	for($j=1;$j<=5;$j++)
	{
		$numeroPhoto = $i*5+$j;
		// on vérifie qu'on ne dépasse pas le nombre de photos présentes dans le fichier
		if($numeroPhoto < $nombreDePhotos)
		{
			echo '<td><img src="';
			echo $photos->getElementsByTagName('NAME')->item($numeroPhoto)->firstChild->data;
			echo '" alt="';
			echo $photos->getElementsByTagName('CAPTION')->item($numeroPhoto)->firstChild->data;
			echo '"/></td>';
			echo "\n";
		}
	}
	echo '</tr>'."\n";
}

echo '</table>';

/* fin du code */

?>


En fait il fallait rajouter ->data.
En plus, vu qu'un DOMNodeList commence à 0 (le 1er noeud se récupère avec l'indice 0, "->item(0)"), il fallait faire "if($numeroPhoto < $nombreDePhotos)"

Et j'ai mis le type-mime text/plain juste pour faciliter le dévellopement, mais bien sûr il faut le mettre à "text/html" quand on fait du html.

Voilà a+
superbe! c'est exactement ce que je cherchais... Smiley biggrin

tu as répondu à ma question principale et merci bcp Smiley cligne ...et j'ai encore une autre petite question, celle concernant l'affichage des photos 25 par 25 ... malgré tes conseils, je n'y suis pas arrivé ... Smiley decu
<?php

header('Content-Type:text/html;charset=iso-8859-1');
?>

<html>
<body>

<?php
/* début du code de la page */

/* on crée un objet DOMDocument puis on récupère le fichier XML */
$photos = new DOMDocument;
$photos->load('http://lulusurf.free.fr/ptbum5/imageData.xml');

/* on compte le nombre de photos */
$nombreDePhotos = $photos->getElementsByTagName('IMAGE')->length;

/* on récupère la photo de départ */
if(!isset($_GET['page']) || empty($_GET['page']) || !is_numeric($_GET['page']))
{
	$photoDeDepart = 0;
}
else
{
	$photoDeDepart = $_GET['page']*25-25;
}


echo '<table id="photos">';
/* et après on boucle */

for($i=$photoDeDepart;$i<$photoDeDepart+5;$i++)
{
	echo '<tr>';
	for($j=0;$j<5;$j++)
	{
		$numeroPhoto = $i+$j;
		// on vérifie qu'on ne dépasse pas le nombre de photos présentes dans le fichier
		if($numeroPhoto < $nombreDePhotos)
		{
			echo '<td><img src="';
			echo $photos->getElementsByTagName('NAME')->item($numeroPhoto)->firstChild->data;
			echo '" alt="';
			echo $photos->getElementsByTagName('CAPTION')->item($numeroPhoto)->firstChild->data;
			echo '"/>Texte</td>';
			echo "\n";
		}
	}
	echo '</tr>'."\n";
}

echo '</table>';

/* calcul le nombre de page */

$nombreDePages = ceil($nombreDePhotos/25);

/* puis on affiche les liens vers les pages */

for($i=1;$i<=$nombreDePages;$i++)
{
	echo '<a href="xml.php?page='.$i.'">Page n°'.$i.'</a> ';
}

/* fin du code */

?>
</body>
</html>


bug sur la dernière page, à toi de voir ça.

++
Pages :