76 lines
2.2 KiB
Plaintext
76 lines
2.2 KiB
Plaintext
<?php
|
||
|
||
/* Search database for keywords */
|
||
|
||
//security check
|
||
if(!function_exists('checkOrigin') || !$bAdmin)
|
||
{
|
||
require_once 'config.php';
|
||
relocate(getError('Accès interdit'));
|
||
}
|
||
|
||
if(!isset($_REQUEST['keywords']))
|
||
{
|
||
relocate(getError('Cherchez au moins un mot'));
|
||
}
|
||
else
|
||
{
|
||
$asKeyWords = explode('+', $_REQUEST['keywords']);
|
||
$sHtmlKeyWords = getHtml($asKeyWords, 'em', '', '', array(), false, ', ');
|
||
foreach($asKeyWords as $sKeyWord)
|
||
{
|
||
foreach(getTables() as $sTableName)
|
||
{
|
||
$asColumnConstraint = "";
|
||
foreach(getTableColumnNames($sTableName) as $sColumnName)
|
||
{
|
||
if(strpos($sColumnName, 'id_')===false && $sColumnName != 'pass')
|
||
{
|
||
if($asColumnConstraint != "")
|
||
{
|
||
$asColumnConstraint .= "OR";
|
||
}
|
||
$asColumnConstraint .= " $sColumnName LIKE '%$sKeyWord%' ";
|
||
}
|
||
}
|
||
$sQuery = "SELECT /* ".basename(__FILE__)." ".__LINE__." */ *
|
||
FROM $sTableName
|
||
WHERE $asColumnConstraint";
|
||
|
||
$asTableResult = getArrayQuery($sQuery);
|
||
foreach($asTableResult as $asRow)
|
||
{
|
||
$sRowId = $sTableName.$asRow['id_'.$sTableName];
|
||
$asResult[$sRowId] = $asRow;
|
||
$asRank[$sRowId] = isset($asRank[$sRowId])?($asRank[$sRowId]+1):1;
|
||
}
|
||
}
|
||
}
|
||
|
||
if(isset($asRank))
|
||
{
|
||
arsort($asRank);
|
||
foreach($asRank as $sRowId=>$iRank)
|
||
{
|
||
$asColumnDisplayed = array_filter(array_keys($asResult[$sRowId]), 'filterTable');
|
||
$asResultRow = array_intersect_key($asResult[$sRowId], array_flip($asColumnDisplayed));
|
||
|
||
$sColumnNames = getHtml(ucwords(str_replace('_', ' ', getHtml(array_keys($asResultRow), 'th'))), 'tr');
|
||
$sHtmlRank = getHtml('Rang : '.$iRank, 'p', '', 'font-size:small;margin-top:10px;margin-bottom:0;');
|
||
$asSearchResults[] = $sHtmlRank.getHtml($sColumnNames.getHtml(getHtml($asResultRow, 'td'), 'tr'), 'table', 'maxWidth');
|
||
}
|
||
}
|
||
else
|
||
{
|
||
relocate(getWarning(array('Aucun r<>sultat', 'Recherche effectu<74>e sur les mots : '.$sHtmlKeyWords)));
|
||
}
|
||
}
|
||
|
||
function filterTable($sColumnName)
|
||
{
|
||
return (!is_numeric($sColumnName) && $sColumnName!='pass');
|
||
}
|
||
?>
|
||
<p>Mots recherch<63>s : <?php echo $sHtmlKeyWords; ?></p>
|
||
<p>R<>sultat<?php echo (count($asSearchResults)>1)?'s':''; ?> de la recherche :</p>
|
||
<?php echo implode($asSearchResults); ?> |