[$sql = "SELECT titre, id FROM table_1 LEFT JOIN contenu ON table_1.id = table2.tit_id WHERE LIKE '%$X%'";
for($j = 1; $j < count($tab); $j++)
{
$sql .= " ".$op." post LIKE '%$X%'";
}
if(strlen($X) > 1)
{
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$nb = mysql_num_rows($req);
while ($i = mysql_fetch_array($req))
{
echo "".$i['titre']."</a> ";
}/
Il y a donc deux tables, et le contexte est celui d'un forum. table_1 contient les noms des posts avec un ID pour simplifier et table_2 correspond à la table des posts, et contient l'ID de son post père. Il s'agit dans le cadre de ce script de rechercher tous les posts contenant le mot clé designé par la variable '$X' et d'afficher donc leur titre. C'est chose faite avec le script ci dessus. Mais j'aimerais également pouvoir rechercher dans la table des titres, voir s'il n'y en a pas qui contiennent également '$X' et afficher le cas échéant les correspondances supplémentaires dans le cadre de la boucle while. C'est à dire que j'aimerais que la liste établie par le script précédent soit complétée par les topics dont le titre contient '$X' (et si possible en évitant les doublons par rapport aux résultats déjà affichés).<?$sql = "SELECT titre, id FROM table_1 LEFT JOIN contenu ON table_1.id = table2.tit_id WHERE contenu LIKE '%$X%'";
for($j = 1; $j < count($tab); $j++)
{
$sql .= " ".$op." post LIKE '%$X%'";
}
if(strlen($X) > 1)
{
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$nb = mysql_num_rows($req);
while ($i = mysql_fetch_array($req))
{
echo "".$i['titre']."</a> ";
}
?>
(...)WHERE contenu LIKE '%$X%' AND post LIKE '%$X%' AND post LIKE '%$X%'
donc toujours les mêmes valeurs.if(condition)
$sql .= " ".$op." post LIKE '%$X%'";
donc une seule fois
$sql = "SELECT titre, id FROM table_1 LEFT JOIN contenu ON table_1.id = table2.tit_id WHERE table2.contenu LIKE '%$X%' OR table_1.titre LIKE '%$X%'";
basé sur le même principe, ou alors je suis encore à coté de la plaque
for($j = 1; $j < count($tab); $j++)
{
$sql .= " ".$op." post LIKE '%$tab[$i]%'";
}
$chaine="mot recherche regexp"
$chaine=str_replace(" ","|",$chaine); //remplace les espaces par des | qui signifient "ou" pour une expression régulière => $chaine="mot|recherche|regexp"
$sql = "SELECT titre, id FROM table_1 LEFT JOIN contenu ON table_1.id = table2.tit_id WHERE table2.contenu REGEXP '(".$chaine.")' OR table_1.titre REGEXP '(".$chaine.")'";