parametry wyszukiwania

myniek

No avatar

2008-02-26 11:21

witam
chciałbym rozszerzyć trochę możliwości wyszukiwarki, mianowicie dodać pola: kolor i rozmiar, jednak nie mogę sprawić by zostały sprawdzane wszystkie pola formularza.
Informacje o kolorze i rozmiarze będą znajdowały się w short description, oto co udało mi się zrobić, działa tylko, że jeśli wpisany jest i rozmiar i kolor i tekst, wtedy bierze pod uwagę tylko tekst.
Proszę o wskazówki lub małą pomoc,
pzdr

szukanie.php

if( !function_exists( 'listProductsSearch' ) ){
/**
* List products and return content
* @return string
* @param string $sFile
* @param string $sOption
* @param mixed $mValue
* @param int $iList
*/
function listProductsSearch( $sFile = 'products_list.tpl', $sOption = 'list', $mValue = null, $iList = null ){

if( !isset( $GLOBALS['iPage'] ) || !is_numeric( $GLOBALS['iPage'] ) || $GLOBALS['iPage'] < 1 ) $GLOBALS['iPage'] = 1;
$iStatus = throwStatus( );
if( !isset( $iList ) )
{
if( $iStatus == 1 ) $iList = PRODUCTS_LIST;
else $iList = ADMIN_LIST;
}
if( $sOption == 'search' ){
if (isset($mValue[3])) $aData = dbListProductsSearchExtended
( $iStatus, array(trim( $mValue[0] ), $mValue[1], $mValue[2], $mValue[3], $mValue[4], $mValue[5]), $iList );
if (isset($mValue[3])) $sPage = $GLOBALS['p'].
'&amp;sSearchWord='.$GLOBALS['sSearchWord'].
'&amp;sSearchColor='.$GLOBALS['sSearchColor'].
'&amp;sSearchSize='.$GLOBALS['sSearchSize'].
'&Category='.$mValue[3].
'&fPriceFrom='.$mValue[4].
'&fPriceTo='.$mValue[5];
}

if( isset( $aData ) && is_array( $aData ) )
$content = throwProductsData( $sFile, $aData, $sPage, $iList );
else
$content = $GLOBALS['tpl']->tbHtml( $sFile, 'NOT_FOUND' );

return $content;
} // end function listProductsSearch
}

..

if( !function_exists( 'dbListProductsSearchExtended' ) ){
/**
* Return array of products list, search by word
* @return array
* @param int $iStatus
* @param string $sWord
* @param int $iList
*/
function dbListProductsSearchExtended( $iStatus, $sWord, $iList ){
global $oFF;
$aCategories = dbThrowProductsCategories( );
$kategorie = show_categories (0);
$produkty_ex = show_products_ex ();
$produkty_kategorie = show_products_categories ();
$produkty_ceny_promo = show_prices_promo ();

if(!isset($sWord[0]) || ($sWord[0]==NULL)){
if(!isset($sWord[1]) || ($sWord[1]==NULL)){
return $oFF->throwFileArrayFunctionPages( DB_PRODUCTS, null, $GLOBALS['iPage'], $iList, 'dbListProductsSearchCheckExtended', Array( $iStatus, $aCategories, $sWord[2], $kategorie, $produkty_ex, $produkty_kategorie, $sWord[3], $produkty_ceny_promo, $sWord[4], $sWord[5]) );
}
else {
return $oFF->throwFileArrayFunctionPages( DB_PRODUCTS, null, $GLOBALS['iPage'], $iList, 'dbListProductsSearchCheckExtended', Array( $iStatus, $aCategories, $sWord[1], $kategorie, $produkty_ex, $produkty_kategorie, $sWord[3], $produkty_ceny_promo, $sWord[4], $sWord[5]) );

}
}

else{
return $oFF->throwFileArrayFunctionPages( DB_PRODUCTS, null, $GLOBALS['iPage'], $iList, 'dbListProductsSearchCheckExtended', Array( $iStatus, $aCategories, $sWord[0], $kategorie, $produkty_ex, $produkty_kategorie, $sWord[3], $produkty_ceny_promo, $sWord[4], $sWord[5]) );

}

}
}

action_client.php

<?php

require_once DIR_CORE.'products.php';
require_once DIR_CORE.'products-ff.php';
require_once DIR_CORE.'files.php';
require_once DIR_CORE.'files-ff.php';


$aCategory = Array( );
$sSelectCategory = listCategories( 'categories_select.tpl', 1, null, $aCategory );

if (isset($Category) && is_numeric($Category))
{
$searchtext='value="'.$Category.'"';
$replacetext='value="'.$Category.'" selected';
$sSelectCategory = ereg_replace ($searchtext, $replacetext, $sSelectCategory);
}

if (!isset($sSearchWord)) {$sSearchWord="";}
if (!isset($sSearchColor)) {$sSearchColor="";}
if (!isset($sSearchSize)) {$sSearchSize="";}
if (!isset($fPriceFrom)) {$fPriceFrom="";}
if (!isset($fPriceTo)) {$fPriceTo="";}


$ShowFormSearchExtended = ShowSearchExtendedForm ();

extendedTplParser();
$tpl->newIntercept('messages.tpl', 'extended_search.tpl', 'ERROR', 'ERROR');

if ( ((isset( $sSearchWord ) && throwStrlen( $sSearchWord ) > 0 ) ||
(isset( $sSearchColor) && throwStrlen( $sSearchColor) > 0 ) ||
(isset( $sSearchSize) && throwStrlen( $sSearchSize) > 0 ) ||
(isset( $fPriceFrom ) && is_numeric( $fPriceFrom )) ||
(isset( $fPriceTo ) && is_numeric( $fPriceTo )) ||
isset($Category)))
{
$content .= listProductsSearch( 'products_list.tpl', 'search',
array($sSearchWord, $sSearchColor, $sSearchSize, $Category, $fPriceFrom, $fPriceTo));
$p == '';
$bDisplayedPage = true;
}

?>

extended_search.tpl

<!-- BEGIN ERROR -->
<!-- END ERROR -->

<!-- BEGIN EXTENDED_SEARCH_FORM -->

<b>Według kategorii: </b>
<form id="sa" action="" method="get" style="display: inline">
$sSelectCategory
<p><input type='hidden' size='0' name='p' value='productsListSearch' /></p>
<p><b>Tekst (np producent): </b></p>
<p><input type='text' size='19' name='sSearchWord' value='$sSearchWord' /></p>
<p><b>Kolor: </b></p>
<p><input type='text' size='19' name='sSearchColor' value='$sSearchColor' /></p>
<p><b>Rozmiar: </b></p>
<p><input type='text' size='19' name='sSearchSize' value='$sSearchSize' /></p>
<p><b>Cena: </b></p>
<p><input type='text' size='4' name='fPriceFrom' value='$fPriceFrom' /> - <input type='text' size='4' name='fPriceTo' value='$fPriceTo' /></p>

<p><input type='submit' value='$lang[Search]' class='submit' /></p>
</form>

<!-- END EXTENDED_SEARCH_FORM -->

» Quick.Cart v2.x

treewood (OpenSolution)

Avatar: treewood

2008-02-27 08:36

myniek - z checia bym pomogl ale trzeba by sporo czasu poswiecic bo ogladajac kod nie jestem w stanie Ci podac przyczyny. Musialbym go zaimplementowac, potestowac i poszukac bledu. To jednak troche zajmie czasu.

myniek

No avatar

2008-02-27 09:23

zdaję sobie z tego sprawę jednak bardzo prosiłbym o pomoc, gdyż siedzę nad tym już niespełna tydzień i cały czas mam z tym problem wg. mnie problem leży gdzieś tu:

return $oFF->throwFileArrayFunctionPages( DB_PRODUCTS, null, $GLOBALS['iPage'], $iList, 'dbListProductsSearchCheckExtended', Array( $iStatus, $aCategories, $sWord[0], $kategorie, $produkty_ex, $produkty_kategorie, $sWord[3], $produkty_ceny_promo, $sWord[4], $sWord[5]) );

w miejscu, gdzie występuje $sWord[0], które tyczy się właśnie formularza tekst, po dodaniu elementów $sWord[1] - kolor i $sWord[2] - rozmiar, funkcja o ile się nie mylę throwFileArrayFunctionPages przestaje działać, jeśli to pomoże mogę również wrzucić sklep nad którym pracują na serwer

ps. zastanawiałem się czy problem, który mnie nurtuję nie było by łatwiej rozwiązać poprzez plugin producktAttributes ale w grę wchodziło by przeszukiwanie conajmniej dwóch plików i pewnie grubsze jego modyfikacje

pzdr

myniek

No avatar

2008-03-02 12:44

panowie, czy nikt naprawdę nie może choć małej wskazówki udzielić?
pzdr

Do góry
o nas | kontakt