par
Invité » 24 mars 2009, 18:28
Whaouh! J'ai rien compris! "explode" "trim"
En fait j'ai essayé de retrouver cette structure dans adsmanager.php, mais rien!
Voici ce qui correspond au moteur de recherche, c'est le code suivant qui est en fait une fonction:
if(isset($fields_searchable))
{
foreach($fields_searchable as $fsearch)
{
switch($fsearch->type)
{
case 'multicheckbox':
case 'multiselect':
$value = mosGetParam( $_GET, $fsearch->name, array() );
for($i = 0,$nb=count($value);$i < $nb;$i++)
{
$url_param .= "&".$fsearch->name."=".$value[$i];
if ($i == 0)
$search .= " AND (";
$search .= "a.$fsearch->name = ',$value[$i],'";
if ($i < $nb - 1)
$search .= " OR ";
else
$search .= " )";
}
break;
case 'checkbox':
case 'radio':
case 'select':
$value = mosGetParam( $_GET, $fsearch->name, "" );
if ($value != "")
{
$search .= " AND a.$fsearch->name = '$value'";
$url_param .= "&".$fsearch->name."=".$value;
}
break;
case 'price':
$value = mosGetParam( $_GET, $fsearch->name, "" );
if ($value != "")
{
$pos = strpos($value, '-');
$fieldsql = "a.$fsearch->name + 0"; // Little hack to convert in number
if ($pos !== false)
{
if ($pos == 1)
{
$search .= " AND $fieldsql < '".substr($value,1)."'";
}
else if ($pos == strlen($value) - 1)
{
$search .= " AND $fieldsql > '".substr($value,0,strlen($value)-1)."'";
}
else
{
$search .= " AND ($fieldsql >= '".substr($value,0,$pos)."' AND $fieldsql <= '".substr($value,$pos+1)."')";
}
}
$url_param .= "&".$fsearch->name."=".$value;
}
break;
case 'textarea':
case 'number':
case 'emailaddress':
case 'url':
case 'text':
$value = mosGetParam( $_GET, $fsearch->name, "" );
if ($value != "")
{
$search .= " AND a.$fsearch->name LIKE '%$value%'";
$url_param .= "&".$fsearch->name."=".$value;
}
break;
}
}
}
if ($text_search <> "") {
$search .= " AND (a.ad_headline LIKE '%$text_search%' OR a.ad_text LIKE '%$text_search%') AND a.published = 1";
}
else
$search .= " AND a.published = 1";
$url .= $url_param;
$query = "SELECT DISTINCT a.id FROM #__adsmanager_ads as a ".
"LEFT JOIN #__adsmanager_adcat as adcat ON a.id = adcat.adid WHERE $search";
$database->setQuery($query);
$total = count($database->loadObjectList());
A la fin de ce code il y a ça:
if ($text_search <> "") {
$search .= " AND (a.ad_headline LIKE '%$text_search%' OR a.ad_text LIKE '%$text_search%') AND a.published = 1";
}
else
$search .= " AND a.published = 1";
$url .= $url_param;
$query = "SELECT DISTINCT a.id FROM #__adsmanager_ads as a ".
"LEFT JOIN #__adsmanager_adcat as adcat ON a.id = adcat.adid WHERE $search";
$database->setQuery($query);
$total = count($database->loadObjectList());
J'ai essayer de dechiffrer ce qu ça voulais dire mais je n'y arrive pas.
Est-ce que quelqu'un pourrait s'il vous plît jeter un coup d'oeil à ce code et me dire ce que je dois modifier dedans pour avoir une recherche avec mot-clé multiple?
Merci d'avance, je suis complètement perdu

[/php][/code]
Whaouh! J'ai rien compris! "explode" "trim" :cry:
En fait j'ai essayé de retrouver cette structure dans adsmanager.php, mais rien!
Voici ce qui correspond au moteur de recherche, c'est le code suivant qui est en fait une fonction:
[php]if(isset($fields_searchable))
{
foreach($fields_searchable as $fsearch)
{
switch($fsearch->type)
{
case 'multicheckbox':
case 'multiselect':
$value = mosGetParam( $_GET, $fsearch->name, array() );
for($i = 0,$nb=count($value);$i < $nb;$i++)
{
$url_param .= "&".$fsearch->name."=".$value[$i];
if ($i == 0)
$search .= " AND (";
$search .= "a.$fsearch->name = ',$value[$i],'";
if ($i < $nb - 1)
$search .= " OR ";
else
$search .= " )";
}
break;
case 'checkbox':
case 'radio':
case 'select':
$value = mosGetParam( $_GET, $fsearch->name, "" );
if ($value != "")
{
$search .= " AND a.$fsearch->name = '$value'";
$url_param .= "&".$fsearch->name."=".$value;
}
break;
case 'price':
$value = mosGetParam( $_GET, $fsearch->name, "" );
if ($value != "")
{
$pos = strpos($value, '-');
$fieldsql = "a.$fsearch->name + 0"; // Little hack to convert in number
if ($pos !== false)
{
if ($pos == 1)
{
$search .= " AND $fieldsql < '".substr($value,1)."'";
}
else if ($pos == strlen($value) - 1)
{
$search .= " AND $fieldsql > '".substr($value,0,strlen($value)-1)."'";
}
else
{
$search .= " AND ($fieldsql >= '".substr($value,0,$pos)."' AND $fieldsql <= '".substr($value,$pos+1)."')";
}
}
$url_param .= "&".$fsearch->name."=".$value;
}
break;
case 'textarea':
case 'number':
case 'emailaddress':
case 'url':
case 'text':
$value = mosGetParam( $_GET, $fsearch->name, "" );
if ($value != "")
{
$search .= " AND a.$fsearch->name LIKE '%$value%'";
$url_param .= "&".$fsearch->name."=".$value;
}
break;
}
}
}
if ($text_search <> "") {
$search .= " AND (a.ad_headline LIKE '%$text_search%' OR a.ad_text LIKE '%$text_search%') AND a.published = 1";
}
else
$search .= " AND a.published = 1";
$url .= $url_param;
$query = "SELECT DISTINCT a.id FROM #__adsmanager_ads as a ".
"LEFT JOIN #__adsmanager_adcat as adcat ON a.id = adcat.adid WHERE $search";
$database->setQuery($query);
$total = count($database->loadObjectList());[/php]
A la fin de ce code il y a ça:
[php]if ($text_search <> "") {
$search .= " AND (a.ad_headline LIKE '%$text_search%' OR a.ad_text LIKE '%$text_search%') AND a.published = 1";
}
else
$search .= " AND a.published = 1";
$url .= $url_param;
$query = "SELECT DISTINCT a.id FROM #__adsmanager_ads as a ".
"LEFT JOIN #__adsmanager_adcat as adcat ON a.id = adcat.adid WHERE $search";
$database->setQuery($query);
$total = count($database->loadObjectList());[/php]
J'ai essayer de dechiffrer ce qu ça voulais dire mais je n'y arrive pas.
Est-ce que quelqu'un pourrait s'il vous plît jeter un coup d'oeil à ce code et me dire ce que je dois modifier dedans pour avoir une recherche avec mot-clé multiple?
Merci d'avance, je suis complètement perdu :( [/php][/code]