Injecter dans une fonction le contenu d'un tableau

Petit nouveau ! | 2 Messages

20 janv. 2015, 21:28

Bonjour à tous,

Je coince. Je coince sérieusement, même. Je suis un codeur débutant, et je me suis sorti de tous les écueils rencontrés jusque là, mais maintenant, j'ai besoin de vous !

J'ai développé un petit script php qui me permet de parser le graph de facebook et d'obtenir du JSON.

Ce que fait le fichier fonctions.php :
<?
function likes($page) {
 
  $pageData = @file_get_contents('https://graph.facebook.com/'.$page);
  $pageData = json_decode($pageData);
    $likes = "$pageData->likes";
    return $likes;
};
 
function name($page) {
 
  $pageData = @file_get_contents('https://graph.facebook.com/'.$page);
  $pageData = json_decode($pageData);
      $name = "$pageData->name";
      return $name;
};
 
?>
Un autre script appelle fonctions.php, il permet de me sortir un JSON dans une variable c'est le script update.php
<?
 
  function update($page) {
 
    include ('fonctions.php');
 
    $date=date(dmY);
 
    // vérifie la présence, par l'affichage des variables retournées par les scripts
 
    $likes_up = likes($page);
    $name_up =  name($page);
    $talking_about_count_up = talking($page);
    $source_up = photo($page);
 
    // echo $likes_up;
    // echo $name_up;
    // echo $talking_about_count_up;
    // echo $source_up;
 
    $data["$date"]["$name_up"][likes] = $likes_up;
    $data["$date"]["$name_up"][talking] = $talking_about_count_up;
 
    $datajson = json_encode($data);
 
    $str     = str_replace('\u','u',$datajson);
    $datajson = preg_replace('/u([\da-fA-F]{4})/', '&#x\1;', $str);
 
  }
 
?>
Un autre script appelle update.php : datasave.php :
<?<br><br>$Cocacola= 'cocacola';<br>$Pepsi= 'pepsi';<br>$Orangina= 'orangina';<br><br>$listeupdate = array(<br>  "$Cocacola",<br>  "$Pepsi",<br>  "$Orangina",<br>);<br><br><br>include ('datasave.php');<br><br>foreach ($listeupdate as $page) {<br><br>  update($page);<br><br>  file_put_contents ("./data/data.json", $datajson, FILE_APPEND);<br><br>};<br><br>?>
Dans ce dernier, je stocke les identifiants des fanpages que je souhaite appeler les unes après les autres pour leur appliquer la fonction update. En sortie, j'aimerais bien obtenir quelque chose comme :
{"20012015":{"nom_de_la_fanpage1":{"likes":"5059","talking":"8"}}}
{"20012015":{"nom_de_la_fanpage2":{"likes":"456","talking":"1"}}}
{"20012015":{"nom_de_la_fanpage3":{"likes":"234","talking":"2"}}}
...

N fois.

Ensuite, avec un put_file_content, je les sotcke en JSON dans un fichier localement.

Problème :

En sortie, quand j'appelle la fonction JSON j'obtiens seulement, une ligne :

{"20012015":{"Coca-Cola":{"likes":"92975287","talking":"1862156"}}}.

Je n'arrive pas à résoudre ce problème, j'ai essayé array_walk array_map etc. Mais rien n'y fait...

Je sais que mon code n'est pas parfait etc. Je suis preneur de toutes remarques constructives !

Auriez-vous une solution svp ?

Un grand merci par avance !

Choncha

Mammouth du PHP | 1967 Messages

21 janv. 2015, 11:48

pas facile de s'y retrouver avec toutes ces pages et surtout sur la 3eme qui affiche des <br> au lieu des retour à la ligne et les fautes de syntax

Mais je pense que tu dois regarder du coté de ton foreach dans ce 3eme script, il faut que tu remplisse une variable avec les retour de tes appels à la fonction update et puis tu les mets dans ton fichier JSON
Si ton file_put_content est dans ta boucle, tu écrase le contenu de ton fichier et tu ne gardera que la dernière inclusion.

Petit point en plus
Personnellement je n'aime pas utiliser les balise php courte <? ?> sur certain serveur elles pourraient ne pas fonctionner et rajouter 3 lettres n'est pas compliqué pour utilisé <?php ?>
quand tu d"fini ton tableau listeupdate, les guillemets sont inutile, tu peux directement faire ceci :
$listeupdate = array(
$Cocacola,
$Pepsi,
$Orangina
);
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube