Bonsoir l'idée est là mais pas la syntaxe ^^
foreach ($list_new as $key=>$value) {
$xml->body->addChild('article', $xml->body->article->addChild($key,$value));
}
}
Concrètement J'ai un tabeau:
array (size=2)
0 =>
object(stdClass)[3]
public 'id' => string '...' (length=1)
public 'author' => string '... (length=4)
public 'title' => string '...' (length=14)
public 'slug' => string '... (length=14)
public 'date_inline' => string '...' (length=10)
public 'img_name' => string '...' (length=26)
public 'preview' => string '' (length=0)
1 =>
object(stdClass)[3]
public 'id' => string '...' (length=1)
public 'author' => string '... (length=4)
public 'title' => string '...' (length=14)
public 'slug' => string '... (length=14)
public 'date_inline' => string '...' (length=10)
public 'img_name' => string '...' (length=26)
public 'preview' => string '' (length=0)
Que je souhaite stoker provisoirement dans un fichier xml sous cette forme:
<body>
<article>
<id>...</id>
<author>...</author>
<title>...</title>
<slug>...</slug>
<date_inline>...</date_inline>
<img_name>...</img_name>
<preview>...</preview>
</article>
<article>
<id>...</id>
<author>...</author>
<title>...</title>
<slug>...</slug>
<date_inline>...</date_inline>
<img_name>...</img_name>
<preview>...</preview>
</article>
</body>
Sa marche presque bien pour un sauf que sa génére des erreur normal ^^
Warning: SimpleXMLElement::addChild() expects parameter 2 to be string, object given in on line
Finalement je vais m’orienter vers du JSON et même me créé une petit CLASS pour gérer tout sa :D
Dans ta boucle for, la variable $value ne serait pas un objet par hasard ? Car si c'est le cas, la fonction demande un String, il te faudrait alors créer une méthode toString() par exemple afin de pouvoir récupérer cet ta liste de news sous forme de String :)
@Sankaman
il n'y a pas de boucle for. Se qui est mon avis une erreur je pense qu'il faut que j'utilise une boucle for.
Non $value n’est pas un objet elle fait référence au contenu de $key qui appartient au tableau $list_new
Quoi qu’il arrive je suis obligé de renvoyer un string mais il peut être vide :)
foreach est une boucle for (mais seulement pour les tableaux et objets) ^^
Sinon tu peux faire un var_dump de $value ?
Pour le moment j'arrive grâce ce code à créé mes deux enfants article
foreach ($list_new as $list_new) {
$xml->body->addChild('article', '');
}
Maintenant il faut les remplirs ^^
je dézoom ^^
$list_new = $pdo->prepare("SELECT id, author, title, slug, date_inline, img_name, preview FROM articles WHERE inline=1 ");
$list_new->execute();
if($list_new)
{
$list_new = $list_new->fetchAll();
foreach ($list_new as $key=>$value) {
$xml->body->addChild('article', '');
}
$xml->asXML($file_xml);
foreach($list_new as $list_new){
foreach ($list_new as $key => $value) {
$xml->body->article->addChild("id", "lol");
}
}
$xml->asXML($file_xml);
}
D'après ton code je pense que $list_new est un tableau de tableau ou un tableau d'objet ^^
Pourrais-tu faire un var_dump($value) à l'intérieur du premier foreach stp ? :)
object(stdClass)[3]
public 'id' => string '...' (length=1)
public 'author' => string '...' (length=4)
public 'title' => string '...' (length=14)
public 'slug' => string '...' (length=14)
public 'date_inline' => string '...' (length=10)
public 'img_name' => string '...' (length=26)
public 'preview' => string '' (length=0)
object(stdClass)[3]
public 'id' => string '...' (length=1)
public 'author' => string '...' (length=4)
public 'title' => string '...' (length=14)
public 'slug' => string '...' (length=14)
public 'date_inline' => string '...' (length=10)
public 'img_name' => string '...' (length=26)
public 'preview' => string '' (length=0)
Du coup $value est bien un objet ;)
Tu pourrais faire quelque chose du style
$news = $value->author;
$news .= $value->title;
// Tu rajoutes les donnees que tu veux garder et tu formattes le texte comme tu le veux
Puis tu ajouteras $news (Un string donc) a la place de $value qui est un objet ;)
En boufant la doc PHP, hum c'est bon, je me rencontre que je n'utilise peut être pas la bonne méthode.
DOM semble plus "approprié" ?