Filtrer un tableau en fonction d'une valeur
Posté : 27 août 2013, 01:40
Bonsoir,
Je viens vers vous car cela fait maintenant plusieurs jours que je n'arrive pas à résoudre mon soucis. Je souhaiterais afficher un tableau en fonction d'une valeur contenue dans une cellule. Je n'ai pas accès à la base de données, je reçois un flux rss que je dois parser puis trier en fonction de la valeur contenu dans le tag "nom_nature". Celle-ci qui peut avoir trois valeurs différentes.
J'ai utilisé rsslib pour parser le flux rss, que j'ai adapté pour les besoins de mises en forme et l'affichage du tableau. La fonction RSS_Display() est celle qui appelée dans la page d'affichage. J'ai tenté les fonctions array_filter(), array_search(),... et d'autres mais rien n'y fait. Votre aide est préconisée et je vous en remercie par avance.
Voici le code que j'utilise :
Je viens vers vous car cela fait maintenant plusieurs jours que je n'arrive pas à résoudre mon soucis. Je souhaiterais afficher un tableau en fonction d'une valeur contenue dans une cellule. Je n'ai pas accès à la base de données, je reçois un flux rss que je dois parser puis trier en fonction de la valeur contenu dans le tag "nom_nature". Celle-ci qui peut avoir trois valeurs différentes.
J'ai utilisé rsslib pour parser le flux rss, que j'ai adapté pour les besoins de mises en forme et l'affichage du tableau. La fonction RSS_Display() est celle qui appelée dans la page d'affichage. J'ai tenté les fonctions array_filter(), array_search(),... et d'autres mais rien n'y fait. Votre aide est préconisée et je vous en remercie par avance.
Voici le code que j'utilise :
$RSS_Content = array();
function RSS_Tags($item, $type)
{
$y = array();
$tnl = $item->getElementsByTagName("title");
$tnl = $tnl->item(0);
$title = $tnl->firstChild->textContent;
$tnl = $item->getElementsByTagName("link");
$tnl = $tnl->item(0);
$link = $tnl->firstChild->textContent;
$tnl = $item->getElementsByTagName("description");
$tnl = $tnl->item(0);
$description = $tnl->firstChild->textContent;
$tnl = $item->getElementsByTagName("reference");
$tnl = $tnl->item(0);
$reference = $tnl->firstChild->textContent;
$tnl = $item->getElementsByTagName("consultation");
$tnl = $tnl->item(0);
$consultation = $tnl->firstChild->textContent;
$tnl = $item->getElementsByTagName("nom_nature");
$tnl = $tnl->item(0);
$nom_nature = $tnl->firstChild->textContent;
$tnl = $item->getElementsByTagName("nom_collectivite");
$tnl = $tnl->item(0);
$nom_collectivite = $tnl->firstChild->textContent;
$tnl = $item->getElementsByTagName("datelimite");
$tnl = $tnl->item(0);
$datelimite = $tnl->firstChild->textContent;
$tnl = $item->getElementsByTagName("nom_procedure");
$tnl = $tnl->item(0);
$nom_procedure = $tnl->firstChild->textContent;
$y["title"] = $title;
$y["link"] = $link;
$y["description"] = $description;
$y["reference"] = $reference;
$y["consultation"] = $consultation;
$y["nom_nature"] = $nom_nature;
$y["nom_collectivite"] = $nom_collectivite;
$y["datelimite"] = $datelimite;
$y["nom_procedure"] = $nom_procedure;
$y["type"] = $type;
return $y;
}
function RSS_Channel($channel)
{
global $RSS_Content;
$items = $channel->getElementsByTagName("item");
// Processing channel
$y = RSS_Tags($channel, 0); // get description of channel, type 0
array_push($RSS_Content, $y);
// Processing articles
foreach($items as $item)
{
$y = RSS_Tags($item, 1); // get description of article, type 1
array_push($RSS_Content, $y);
}
}
function RSS_Retrieve($url)
{
global $RSS_Content;
$doc = new DOMDocument();
$doc->load($url);
$channels = $doc->getElementsByTagName("channel");
$RSS_Content = array();
foreach($channels as $channel)
{
RSS_Channel($channel);
}
}
function RSS_RetrieveLinks($url)
{
global $RSS_Content;
$doc = new DOMDocument();
$doc->load($url);
$channels = $doc->getElementsByTagName("channel");
$RSS_Content = array();
foreach($channels as $channel)
{
$items = $channel->getElementsByTagName("item");
foreach($items as $item)
{
$y = RSS_Tags($item, 1); // get description of article, type 1
array_push($RSS_Content, $y);
}
}
}
function RSS_Links($url, $size = 15)
{
global $RSS_Content;
$page = "<table width='700' border='1'>
<tr>
<td class='rose'>Référence</td>
<td>Intitulé</td>
<td>Type de marché</td>
<td>Service</td>
<td>Date limite de remise des plis</td>
<td>Type de procédure</td>
</tr>";
RSS_RetrieveLinks($url);
if($size > 0)
$recents = array_slice($RSS_Content, 0, $size + 1);
foreach($recents as $article)
{
$type = $article["type"];
if($type == 0) continue;
$title = $article["title"];
$link = $article["link"];
$consultation = $article["consultation"];
$nom_nature = $article["nom_nature"];
$page .= "<td><a href=\"$link\"><br></td><td>$title</a>$consultation</td>\n";
}
$page .="</tr></table>\n";
return $page;
}
function fourniture($tri){
if ($tri=="Fournitures"){
return true;
}
return false;
}
function RSS_Display($url, $size = 0, $site = 0)
{
global $RSS_Content;
$opened = false;
$page = "";
$site = (intval($site) == 0) ? 1 : 0;
$y["nom_nature"]= "Fournitures";
RSS_Retrieve($url);
if($size > 0)
$recents = array_slice($RSS_Content, $site, $size + 1 - $site);
$tri = array_filter($y, 'fourniture');
foreach($recents as $article)
{
$type = $article["type"] ;
if($type == 0)
{
if($opened == true)
{
$page .="</ul>\n";
$opened = false;
}
$page .="<b>";
}
else
{
if($opened == false)
{
$page .= "<table width='700' cellpadding='0' cellspacing='0'>
<tr>
<td class='bleu'>Reference</td>
<td class='bleu'>Intitule</td>
<td class='bleu'>Type de marche</td>
<td class='bleu'>Service</td>
<td class='bleu'>Date limite de remise des plis</td>
<td class='bleu'>Type de procedure</td>
</tr>";
$opened = true;
}
}
$title = $article["title"];
$link = $article["link"];
$description = $article["description"];
$reference = $article["reference"];
$nom_nature = $article["nom_nature"];
$consultation = $article["consultation"];
$nom_collectivite = $article["nom_collectivite"];
$datelimite = $article["datelimite"];
$nom_procedure = $article["nom_procedure"];
$page .= "<tr>
<td><a href=\"$link\">$reference</a></td>
<td><a href=\"$link\">$title</a></td>
<td><a href=\"$link\">$nom_nature</a></td>
<td><a href=\"$link\">$nom_collectivite</a></td>
<td><a href=\"$link\">$datelimite</a></td>
<td><a href=\"$link\">$nom_procedure</a></td>
</tr>";
if($description != false)
{
$page .= "";
}
$page .= "\n";
if($type==0)
{
$page .="</b><br /></tr>";
}
}
if($opened == true)
{
$page .="</tr></table>\n";
}
if($opened == false)
{
$page .="<h1>Il n'y a pas actuellement de consultation RFI</h1><br /><br /><br /><br />\n";
}
return $page."\n";
}
?>