Invité
Invité n'ayant pas de compte PHPfrance
19 févr. 2008, 14:03
Bonjour et merci de m'aiguiller
étant nouveau j'ai un peu hésité sur la section ... j'avais l'impression que c'était plus du SQlite.
Si non, personne ne sait !
J'imagine que le plus simple pour la taille de la base sqlite serai lors de la création de la base de ne garder que les items dont la description contient la valeur choisie.
Voici mon début de code pour ceux que ça inspirerait:
<?php
// Connexion/création de la base
$db = @sqlite_open($db_path) or die("Impossible de créer la base !");
// Génération des tables
@sqlite_query($db,"CREATE TABLE flux(
ID INTEGER PRIMARY KEY,
titre varchar(50),
url varchar(255),
rubrique varchar(20),
maj INTEGER
)");
@sqlite_query($db,"CREATE TABLE item(
ID INTEGER PRIMARY KEY,
IDflux INTEGER,
titre varchar(50),
lien varchar(255),
pubdate INTEGER,
description TEXT
)");
// SQLite n'aime pas les ' :s
function sql($txt) { return str_replace("'","’",$txt); }
// Extrait le nom du site de l'url
function site($url) {
$site = parse_url($url);
return str_replace("www.","",$site["host"]);
}
// Date française (Merci Fabrice :)
function datefr($time) {
setlocale(LC_TIME, "fr");
return ucfirst(strftime("%A %d %B %Y",$time));
}
// Mise à jour de la base
function lit_rss($url) {
global $db;
// Récupération de l'ID du flux
$result = sqlite_query($db,"SELECT ID FROM flux WHERE url='".$url."'");
$id = sqlite_fetch_single($result);
// Lecture du flux
if($flux=simplexml_load_file($url)) {
$flux = $flux->channel;
$titre = $flux->title;
// Mise à jour du flux
sqlite_query($db,"UPDATE flux SET titre='".sql($titre)."',maj=".time()." WHERE ID=".$id);
// Pour chaque <item>
foreach($flux->item as $item) {
// On récupère les champs
$date = strtotime($item->pubDate); if(!$date) $date=time();
$titre = $item->title;
$lien = $item->link;
$desc = $item->description;
// Anti-doublon sur URL
$result = sqlite_query($db,"SELECT ID FROM item WHERE lien='".$lien."' AND IDflux=".$id);
// Mise à jour
if(sqlite_num_rows($result)>0) {
sqlite_query($db,"UPDATE item SET titre='".sql($titre)."',description='".sql($desc)
."' WHERE ID=".sqlite_fetch_single($result));
// ou ajout à la BD
} else {
sqlite_query($db,"INSERT INTO item(IDflux,titre,lien,pubdate,description)
VALUES(".$id.",'".sql($titre)."','".$lien."',".$date.",'".sql($desc)."')");
}
}
}
}
update();
?>