Page 1 sur 1

requete degressive PHP

Posté : 10 oct. 2013, 21:14
par damien_55
Bonjour à tous,

J'ai un champ avec 3 mots (par exemple ça peut etre plus)

Je cherche a faire un script qui recherche tous les phrases qui contiennent les 3 mots puis les deux mots ou un seul des mots.

j'ai fait un explode sur le champs mots mais je n'arrive pas a passer à la recherche sur deux mots puis sur un mot ?
$relatif = "SELECT id, phrase
					FROM texte
					WHERE  id <>'".addslashes($_GET['id'])."'";
	foreach($motscles as $motcle) {
		$mot = strtoupper(addslashes($motcle));
		$relatif .= " AND (titre LIKE '%".$mot."%' OR titre LIKE '".$mot."%' OR titre LIKE '%".$mot."')  ";
	}
	$relatif .= " ORDER BY date DESC limit 6";
Merci de votre aide.

Re: requete degressive PHP

Posté : 10 oct. 2013, 21:21
par damien_55
Je crois avoir trouvé, je vais partir de ce script et le retravaillé voir si ça marche:

$titre_keyword  = explode(" ",$_TITRE); //$_TITRE est le titre de l'article en cours
                
                $cpt=0;
                foreach($titre_keyword as $k => $v ) {
                  if (strlen($v)>5) { // On n'utilise que les mots de plus de 5 lettres
                    if ($cpt !=0) { 
                      if($cpt ==1) { $q .=" AND ("; }else{ $q .=" OR "; } //Le premier mot sera obligatoire le reste facultatif)
                    }
                  $q .= "post_titre LIKE '%".$v."%' " ;
                  $cpt++;
                  }
                }
                if((ereg("OR",$q)) OR (ereg("AND",$q))) $q .=")"; // Fermeture de la parenthèse si on a trouvé au moins un mot de plus de 5 lettres)
                
                $sql = "SELECT DISTINCT post_titre_url, post_titre, cat_id FROM content_post WHERE cat_id='6' AND post_lang='$_LANG' AND post_selected = '0' AND post_pub='1' AND post_titre_url != $_URL_ARTICLE AND ( $q ) ORDER BY post_id DESC LIMIT 0, 10 ";

Re: requete degressive PHP

Posté : 10 oct. 2013, 21:50
par moogli
salut,

est ce que l'ordre est important ?
une idée simple
explode sur la chaine
un for sur le tableau mais en partant de la fin, dedans une boucle prend tous de l'élément courant vers le premier

@+

Re: requete degressive PHP

Posté : 10 oct. 2013, 22:13
par damien_55
Salut,

Oui l'ordre est important. C'est un peu comme un indice de similitude du plus élévé au moins élévé.

j'ai pas compris ton idée:

un for sur le tableau mais en partant de la fin, dedans une boucle prend tous de l'élément courant vers le premier ? pourrais tu m'expliquer, svp

Re: requete degressive PHP

Posté : 11 oct. 2013, 00:07
par moogli
For($i=count($letablo) -1 ; $i >0 ; $i-- ){
For($j = 0 ; $j <= $i ; $j++){
// construction de la chaîne à utiliser pour la recherche
}

}

On aurais ou imaginer la même chose avec des array_splice ;)

Regarde si tu peux le faire côté base tu aura surement de meilleur performance ;)

@+