Forum Clubic

2 questions avec fonctions simplexml

Bonsoir,
J’ai 2 questions avec mon affichage de flux xml.

<?php
 
//on charge le fichier xml
$flux = simplexml_load_file('http://www.manga-occasion.com/xml-csv/annonce_tsukai_anime.xml');
//parcours et affichage
foreach ($flux->annonce as $style) {
	//on convertit le texte dans le bon format
	echo htmlentities((string)$style->titre, ENT_QUOTES, 'UTF-8');
	echo " à ";
	
    echo "{$style->prix} euros <br />";
  ?>
	
	<a title="<?php echo htmlentities((string)$style->description, ENT_QUOTES, 'UTF-8'); ?>" href="<?php echo "{$style->url}"; ?>"	target='_blank'><img src="<?php echo "{$style->image}"; ?>" border='0'/></a> <br />
	
<?php	
	
}  
?>

La 1ere, comment je fais pour afficher un noeud aléatoirement, car là, il m’affiche tout .

La 2eme, pour l’affichage de

<a title="<?php echo htmlentities((string)$style->description, ENT_QUOTES, 'UTF-8'); ?>

sur la page web, j’ai droit dans l’infobulle au
. Il me fait pas le saut de ligne, ca m’embete un peu. Comment je peux faire ?
J’ai essayé avec nl2br, sans succès.

Merci d’avance de votre aide

Dans l’infobulle, il ne gère pas les sauts de ligne. C’est pas tellement fait pour. Faut passer par des infobulles avec css/javascript.

ex:

<a href="..."> <span class="title">ton titre bien formatté</span></a>

et:

[code]a .title {display: none; position: absolute; }
a:hover .title {display: block; }

Dans l’autre cas, ben tu peux tenter une expression xpath ou si c’est un tableau, d’accéder à l’élément N via random(), mt_rand(), etc.
Edité le 18/01/2009 à 13:03

merci, je vais essayer çà dans la journée !!

edit : jviens de lire un peu, et je crois que ca va etre compliqué !
pour le 1er point, j’ai arrété car il n’y a pas que le saut de ligne à gérer.
pour le 2eme par contre, je suis embété. Je viens de lire des tuto sur xpath.
J’ai essayé çà

$flux = simplexml_load_file('http://www.manga-occasion.com/xml-csv/annonce_tsukai_anime.xml');

$test='count(//annonce)';
$result = $flux->xpath('annonce'); 
$nb=count($result);
echo $nb;

J’obtiens 131, mais si je sélectionne au hasard entre 1 et 131, (admettons, j’obtiens 25),
comment je fais pour me positionner sur l’élément 25 car si je choisis
de “filtrier” par l’id, il se peut que l’id 25 n’existe pas.

Il faudrait que je choisisse au hasard un noeud qui existe.
Edité le 18/01/2009 à 12:45

En xpath, tu peux t’amuser avec la syntaxe xpath : annonce[25] mais elle foirera immanquablement, vu que tu n’as pas la taille :slight_smile:

Mais je pensais plus à ça :

$array = (array) $flux->annonce; // ou alors, tu transforme toi même en tableau
$nb = mt_rand(1, count($array));
$array[$nb] = ...;