Comment faire recherche fulltext [PHP]
Posté : 22 févr. 2008, 15:53
Bonjour,
Je m'explique, j'ai une base donnée SQLite qui comprend un champs "description" dans laquelle je souhaite faire une recherche fulltext afin de ne ressortir que les ID ou le ce champs "description contient une année précise (2007).
J'ai essayer pas mal de chose, mais je ne vois plus ou essayer et surtout si mon ecriture etait bonne.
- J'ai essayer la technique du WHERE LIKE sur le champs.
- j'ai essayer lors de la création de la base de ne pas enregistrer les ID dont la description ne contenait pas 2007
- j'ai essayer aussi le DELETE WHERE LIKE juste apres la creation.
Rien ne marchais mais comme je l'ai dit il y de grande chance pour que mon ecriture ne soit pas correcte.
Le champs dans lequelle se trouve l'année est "description" variable $desc et l'année qu'il me faut est 2007 que j'ai mis en variable $an.
Voici la creation de la base
Voici l'affichage de la base
Un tout grand merci d'avance à celui qui m'aidera a écrire la ligne adéquate et à me dire ou je doit la mettre.
Je m'explique, j'ai une base donnée SQLite qui comprend un champs "description" dans laquelle je souhaite faire une recherche fulltext afin de ne ressortir que les ID ou le ce champs "description contient une année précise (2007).
J'ai essayer pas mal de chose, mais je ne vois plus ou essayer et surtout si mon ecriture etait bonne.
- J'ai essayer la technique du WHERE LIKE sur le champs.
- j'ai essayer lors de la création de la base de ne pas enregistrer les ID dont la description ne contenait pas 2007
- j'ai essayer aussi le DELETE WHERE LIKE juste apres la creation.
Rien ne marchais mais comme je l'ai dit il y de grande chance pour que mon ecriture ne soit pas correcte.
Le champs dans lequelle se trouve l'année est "description" variable $desc et l'année qu'il me faut est 2007 que j'ai mis en variable $an.
Voici la creation de la base
Code : Tout sélectionner
/ 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)."')");
}
}
}
}
Code : Tout sélectionner
<?
// AFFICHAGE DES NEWS
$deb = @$_GET["deb"]; if(!$deb) $deb=0;
$SQL = " FROM item INNER JOIN flux ON item.IDflux=flux.ID";
$lien = "";
// sélection de news
if(@$_GET["rubrique"]) {
$SQL .= " AND flux.rubrique='".$_GET["rubrique"]."'";
$lien .= "&rubrique=".urlencode($_GET["rubrique"]);
}
if(@$_GET["flux"]) {
$SQL .= " AND flux.ID=".$_GET["flux"];
$lien .= "&flux=".urlencode($_GET["flux"]);
}
// Sélection des news
$SQL = "SELECT flux.url as url,item.titre as titre,item.pubdate as pubdate,item.lien as lien,
item.ID as ID,item.description as description"
.$SQL." ORDER BY pubdate DESC LIMIT ".$deb.",".$maxperpage;
// et zou... lecture
$result = sqlite_query($db,$SQL);
echo "<dl>"; $temp="";
// Pour chaque news
while($val=sqlite_fetch_array($result)) {
// affiche la news
echo "<dd>
<i>".date("d/m/Y",$val["pubdate"])."</i>
<A ";
// lien vers le site
echo "target='_blank' href='".$val["lien"];
echo "'>".utf8_decode($val["titre"])."</A>";
echo "<br> <i>".utf8_decode($val["description"])."</i></dd>";
}
echo "</dl>";
echo $pagine;
?>