La recherche ne fonctionne pas

Vous avez trouvé un bug dans l'application (dernière version stable ou bêta): Décrivez le ici afin que la correction soit intégrée a la prochaine version.
Répondre
thomasbertoux
Gsup LEVEL 1
Messages : 11
Enregistré le : ven. 21 févr. 2014 09:56

Bonjour,
Je suis en version 3.0.6 et le champ recherche en haut à droite de la page ne me retourne aucun résultat, or ma recherche contient un mot qui est présent dans certains titre de ticket.
Etes-vous au courant de cela ?
Merci
Cdt
Serveur: GestSup: 3.1.9 | OS: Debian 7 | Apache: 2.2.22 | MySQL: 5.5.49 | PHP: 5.4.45
clement1086
Gsup LEVEL 0
Messages : 7
Enregistré le : mar. 25 févr. 2014 11:54

Bonjour,

Effectivement, les éléments qui n'ont pas de ligne dans le thread ne sont pas retrouvés dans la recherche...

A mon avis il faudrait modifier la page searchengine.php comme ça

Code : Tout sélectionner

<?php
################################################################################
# @Name : searchengine.php
# @Desc : search engine in database tickets
# @call : /dashboard.php
# @paramters : keywords
# @Autor : Flox
# @Create : 12/01/2011
# @Update : 03/09/2013
# @Version : 2.9
################################################################################

//initialize Session variables
if(!isset($_SESSION['user_id'])) $_SESSION['user_id'] = '';

//case when keywords contain '
$keywords = str_replace("'","\'",$keywords);

//keywords table space separation
$keyword=explode(" ",$keywords);

//count $keywords
$nbkeyword= sizeof($keyword);

if ($nbkeyword==2)
{
	$from = "
		FROM tincidents
		LEFT JOIN tcategory ON tincidents.category=tcategory.id
		LEFT JOIN tsubcat ON tincidents.subcat=tsubcat.id
		LEFT JOIN tstates ON tincidents.state=tstates.id
		LEFT JOIN tthreads ON tincidents.id=tthreads.ticket
		WHERE
		(tincidents.title LIKE '%$keyword[0]%' OR 
		tincidents.description LIKE '%$keyword[0]%' OR 
		tthreads.text LIKE '%$keyword[0]%' OR
		tsubcat.name LIKE '$keyword[0]' OR
		tcategory.name LIKE '$keyword[0]' OR
		tincidents.id = '$keyword[0]' OR
		tincidents.user LIKE (SELECT max(id) FROM tusers where firstname LIKE '%$keyword[0]%' or lastname LIKE '%$keyword[0]%'))
		AND
		(tincidents.title LIKE '%$keyword[1]%' OR 
		tincidents.description LIKE '%$keyword[1]%' OR 
		tthreads.text LIKE '%$keyword[1]%' OR
		tsubcat.name LIKE '$keyword[1]' OR
		tcategory.name LIKE '$keyword[1]' OR
		tincidents.id = '$keyword[1]' OR
		tincidents.user LIKE (SELECT max(id) FROM tusers where firstname LIKE '%$keyword[1]%' or lastname LIKE '%$keyword[1]%'))
		AND disable='0'
	"; 
	// $from = "
		// FROM tincidents, tstates, tthreads 
		// WHERE
		// tincidents.state=tstates.id AND
		// tincidents.id=tthreads.ticket AND
		// (title LIKE '%$keyword[0]%' OR 
		// tincidents.description LIKE '%$keyword[0]%' OR 
		// tthreads.text LIKE '%$keyword[0]%' OR
		// tincidents.id = '$keyword[0]' OR
		// tincidents.user LIKE (SELECT max(id) FROM tusers where firstname LIKE '%$keyword[0]%' or lastname LIKE '%$keyword[0]%'))
		// AND
		// (tincidents.title LIKE '%$keyword[1]%' OR 
		// tincidents.description LIKE '%$keyword[1]%' OR 
		// tthreads.text LIKE '%$keyword[1]%' OR
		// tincidents.id LIKE '$keyword[1]' OR
		// tincidents.user LIKE (SELECT max(id) FROM tusers where firstname LIKE '%$keyword[1]%' or lastname LIKE '%$keyword[1]%'))
		// AND disable='0'
	// "; 
}
else if ($nbkeyword==3)
{
	$from = "
		FROM tincidents
		LEFT JOIN tcategory ON tincidents.category=tcategory.id
		LEFT JOIN tsubcat ON tincidents.subcat=tsubcat.id
		LEFT JOIN tstates ON tincidents.state=tstates.id
		LEFT JOIN tthreads ON tincidents.id=tthreads.ticket
		WHERE
		(tincidents.title LIKE '%$keyword[0]%' OR 
		tincidents.description LIKE '%$keyword[0]%' OR 
		tthreads.text LIKE '%$keyword[0]%' OR
		tsubcat.name LIKE '$keyword[0]' OR
		tcategory.name LIKE '$keyword[0]' OR
		tincidents.id = '$keyword[0]' OR
		tincidents.user LIKE (SELECT max(id) FROM tusers where firstname LIKE '%$keyword[0]%' or lastname LIKE '%$keyword[0]%'))
		AND
		(tincidents.title LIKE '%$keyword[1]%' OR 
		tincidents.description LIKE '%$keyword[0]%' OR 
		tthreads.text LIKE '%$keyword[0]%' OR
		tsubcat.name LIKE '$keyword[0]' OR
		tcategory.name LIKE '$keyword[0]' OR
		tincidents.id = '$keyword[0]' OR
		tincidents.user LIKE (SELECT max(id) FROM tusers where firstname LIKE '%$keyword[0]%' or lastname LIKE '%$keyword[0]%'))
		AND
		(tincidents.title LIKE '%$keyword[2]%' OR 
		tincidents.description LIKE '%$keyword[2]%' OR 
		tthreads.text LIKE '%$keyword[2]%' OR
		tsubcat.name LIKE '$keyword[2]' OR
		tcategory.name LIKE '$keyword[2]' OR
		tincidents.id = '$keyword[2]' OR
		tincidents.user LIKE (SELECT max(id) FROM tusers where firstname LIKE '%$keyword[2]%' or lastname LIKE '%$keyword[2]%'))
		AND disable='0'
	";
	// $from = "
		// FROM tincidents, tstates, tthreads 
		// WHERE
		// tincidents.state=tstates.id AND
		// tincidents.id=tthreads.ticket AND
		// (tincidents.title LIKE '%$keyword[0]%' OR 
		// tincidents.description LIKE '%$keyword[0]%' OR 
		// tthreads.text LIKE '%$keyword[0]%' OR
		// tincidents.id = '$keyword[0]' OR
		// tincidents.user LIKE (SELECT max(id) FROM tusers where firstname LIKE '%$keyword[0]%' or lastname LIKE '%$keyword[0]%'))
		// AND
		// (tincidents.title LIKE '%$keyword[1]%' OR 
		// tincidents.description LIKE '%$keyword[1]%' OR 
		// tthreads.text LIKE '%$keyword[1]%' OR
		// tincidents.id LIKE '$keyword[1]' OR
		// tincidents.user LIKE (SELECT max(id) FROM tusers where firstname LIKE '%$keyword[1]%' or lastname LIKE '%$keyword[1]%'))
		// AND
		// (tincidents.title LIKE '%$keyword[2]%' OR 
		// tincidents.description LIKE '%$keyword[2]%' OR 
		// tthreads.text LIKE '%$keyword[2]%' OR
		// tincidents.id LIKE '$keyword[2]' OR
		// tincidents.user LIKE (SELECT max(id) FROM tusers where firstname LIKE '%$keyword[2]%' or lastname LIKE '%$keyword[2]%'))
		// AND disable='0'
	// "; 
}

else
{
$from = "
	FROM tincidents
	LEFT JOIN tcategory ON tincidents.category=tcategory.id
	LEFT JOIN tsubcat ON tincidents.subcat=tsubcat.id
	LEFT JOIN tstates ON tincidents.state=tstates.id
	LEFT JOIN tthreads ON tincidents.id=tthreads.ticket
	WHERE
	(
	tincidents.title LIKE '%$keyword[0]%' OR 
	tincidents.description LIKE '%$keyword[0]%' OR 
	tthreads.text LIKE '%$keyword[0]%' OR
	tsubcat.name LIKE '$keyword[0]' OR
	tcategory.name LIKE '$keyword[0]' OR
	tincidents.id = '$keyword[0]' OR
	tincidents.user LIKE (SELECT max(id) FROM tusers where firstname LIKE '%$keyword[0]%' or lastname LIKE '%$keyword[0]%')
	)
	AND disable='0'
"; 	
}

// else
// {
// $from = "
	// FROM  tincidents, tcategory, tsubcat, tstates, tthreads 
	// WHERE
	// tincidents.state=tstates.id AND
	// tincidents.subcat=tsubcat.id AND
	// tincidents.category=tcategory.id AND
	// tincidents.id=tthreads.ticket AND
	// (
	// tincidents.title LIKE '%$keyword[0]%' OR 
	// tincidents.description LIKE '%$keyword[0]%' OR 
	// tthreads.text LIKE '%$keyword[0]%' OR
	// tsubcat.name LIKE '$keyword[0]' OR
	// tcategory.name LIKE '$keyword[0]' OR
	// tincidents.id = '$keyword[0]' OR
	// tincidents.user LIKE (SELECT max(id) FROM tusers where firstname LIKE '%$keyword[0]%' or lastname LIKE '%$keyword[0]%')
	// )
	// AND disable='0'
// "; 	
// }	
?>
Clément
Avatar du membre
Flox
Administrateur du site
Messages : 9055
Enregistré le : jeu. 21 juin 2012 19:00

Effectivement cela fonctionnerai mais la jointure gauche entraîne une grande perte de performance sur les grosses bases.

Normalement tout ticket à obligatoirement une entrée thread avec la date d'ouverture.

Vérifier que vous avez également bien une catégorie de renseignée.

cdt
GestSup: 3.2.47 | Debian: 12 | Apache: 2.4.58 | MariaDB: 11.3.2 | PHP: 8.3.6 | https://doc.gestsup.fr/
Ptitvincou
Gsup LEVEL 1
Messages : 28
Enregistré le : lun. 18 févr. 2013 18:23

Bonjour,

Je me permets de remonter ce post pour une raison simple,
lors du basculement d'une base de données de la version 2 a la version 3, la table thread n'est pas remplie .... donc on perd l'historique dans la recherche.

Cordialement,
Avatar du membre
Flox
Administrateur du site
Messages : 9055
Enregistré le : jeu. 21 juin 2012 19:00

Bonjour,

pouvez vous essayer de passer cette requête et me redire. merci

Code : Tout sélectionner

INSERT INTO  `tthreads` (
`id` ,
`ticket` ,
`date` ,
`author` ,
`text` ,
`type` ,
`tech1` ,
`tech2` ,
`group1` ,
`group2` ,
`user`
)
SELECT NULL,id,0,0,0,0,9,0,0,0 FROM tincidents WHERE tincidents.disable=0 AND id NOT IN (SELECT ticket FROM tthreads);
GestSup: 3.2.47 | Debian: 12 | Apache: 2.4.58 | MariaDB: 11.3.2 | PHP: 8.3.6 | https://doc.gestsup.fr/
Répondre