=3"; mysql_query($sql); // 2. Check if our param exists in search_params $sql = "SELECT COUNT(1) as cn, search_id FROM search_params WHERE product_search='$srch' AND $select_categ_id AND $select_subcateg_id AND $select_country_id"; $result = mysql_query($sql); $row = mysql_fetch_array($result); $cn_search_params = $row["cn"]; $search_id = $row["search_id"]; if ($cn_search_params==0){ // 2.1. Not exist - add search_params $sql = "INSERT INTO search_params SET product_search='$srch', categ_id=$insert_categ_id, subcateg_id=$insert_subcateg_id, country_id=$insert_country_id, date_added=NOW()"; mysql_query($sql); $search_id = mysql_insert_id(); // 2.2. Sort by companies having this product, assign company sort_order /* $cn_companies = 0; $sql = "SELECT C.id as comp_id FROM companies C JOIN members M ON M.id=C.user_id WHERE M.is_active=1 AND C.id<>1 $qu_cou AND ( EXISTS (select 1 from products P where P.comp_id=C.id AND P.purpose=1 AND P.status=1 $qu_cat $qu_subcat $qu_search) OR EXISTS (select 1 from products P join product_categories_sub PS ON PS.id=P.subcateg_id join product_categ_sub_keywords PSK ON PSK.subcateg_id=PS.id where P.comp_id=C.id AND P.purpose=1 AND P.status=1 $qu_cat $qu_subcat AND PSK.subcateg_keyword='$srch') ) ORDER BY C.is_full_profile DESC, C.rank_points DESC LIMIT 100"; $result = mysql_query($sql); while($row = mysql_fetch_array($result)){ $cn_companies++; $comp_id = $row["comp_id"]; $sql2 = "INSERT INTO search_sorted_companies SET search_id='$search_id', comp_id='$comp_id', comp_sort_order='$cn_companies'"; mysql_query($sql2); } */ $cn_companies1 = 0; $sql = "SELECT C.id as comp_id FROM companies C JOIN members M ON M.id=C.user_id WHERE M.is_active=1 AND C.id<>1 $qu_cou AND EXISTS (select 1 from products P where P.comp_id=C.id AND P.purpose=1 AND P.status=1 $qu_cat $qu_subcat $qu_search) ORDER BY C.is_full_profile DESC, C.rank_points DESC LIMIT 100"; $result = mysql_query($sql); while($row = mysql_fetch_array($result)){ $cn_companies1++; $comp_id = $row["comp_id"]; $sql2 = "INSERT INTO search_sorted_companies SET search_id='$search_id', comp_id='$comp_id', comp_sort_order='$cn_companies1', sort_type=1"; mysql_query($sql2); } // 2.2.a. Get companies having this search term in Subcategories Keywords and not having it in Product Name or Product Keywords $companies_left = 100 - $cn_companies1; if ($companies_left > 0){ $cn_companies2 = 0; $sql = "SELECT C.id as comp_id FROM companies C JOIN members M ON M.id=C.user_id WHERE M.is_active=1 AND C.id<>1 $qu_cou AND EXISTS (select 1 from products P join product_categories_sub PS ON PS.id=P.subcateg_id join product_categ_sub_keywords PSK ON PSK.subcateg_id=PS.id where P.comp_id=C.id AND P.purpose=1 AND P.status=1 $qu_cat $qu_subcat AND PSK.subcateg_keyword='$srch' ) AND NOT EXISTS (select 1 from search_sorted_companies X where X.search_id='$search_id' AND X.comp_id=C.id AND X.sort_type=1) LIMIT $companies_left"; $result = mysql_query($sql); while($row = mysql_fetch_array($result)){ $cn_companies2++; $comp_id = $row["comp_id"]; $sql2 = "INSERT INTO search_sorted_companies SET search_id='$search_id', comp_id='$comp_id', comp_sort_order='$cn_companies2', sort_type=2"; mysql_query($sql2); } } // 2.3. Sort by products using fair search mechanism $i = -1; $sql = "SELECT P.id as prod_id, S.comp_sort_order FROM products P JOIN companies C ON C.id=P.comp_id JOIN search_sorted_companies S ON S.comp_id=C.id LEFT JOIN countries CO ON CO.id=C.country JOIN members M ON M.id=C.user_id WHERE S.search_id='$search_id' AND S.sort_type=1 AND P.purpose=1 AND P.status=1 AND M.is_active=1 AND C.id<>1 $sql_more $qu_cou $qu_cat $qu_subcat $qu_search ORDER BY S.comp_sort_order ASC, P.id DESC LIMIT 1000"; $result = mysql_query($sql); while($row = mysql_fetch_array($result)){ $i++; $prod_id = $row["prod_id"]; $comp_sort_order = $row["comp_sort_order"]; if ($old_comp_sort_order != $comp_sort_order) $i = 0; // THAT'S THE FORMULA THAT DOES FAIR SORTING MAGIC: $prod_sort_order = $comp_sort_order + $cn_companies1*$i; /* // say there're 4 companies COMP1 - prod1:1, prod2:5, prod3:9 COMP2 - prod4:2, prod5:6 COMP3 - prod6:3 COMP4 - prod7:4, prod8:8, prod9:12, prod10:16 */ $sql2 = "INSERT INTO search_sorted_products SET search_id='$search_id', prod_id='$prod_id', prod_sort_order='$prod_sort_order', sort_type=1"; mysql_query($sql2); $old_comp_sort_order = $comp_sort_order; } } // 2.3a. Products with keywords in subcategories, not in product names $prod_left = 999 - $i; if ($prod_left > 0 and $cn_companies2!=0){ $j = -1; $sql = "SELECT P.id as prod_id, S.comp_sort_order FROM products P JOIN companies C ON C.id=P.comp_id JOIN search_sorted_companies S ON S.comp_id=C.id LEFT JOIN countries CO ON CO.id=C.country JOIN members M ON M.id=C.user_id join product_categories_sub PS ON PS.id=P.subcateg_id join product_categ_sub_keywords PSK ON PSK.subcateg_id=PS.id AND PSK.subcateg_keyword='$srch' WHERE S.search_id='$search_id' AND S.sort_type=2 AND P.purpose=1 AND P.status=1 AND M.is_active=1 AND C.id<>1 $sql_more $qu_cou $qu_cat $qu_subcat AND NOT EXISTS (select 1 from search_sorted_products X where X.search_id='$search_id' AND X.prod_id=P.id AND X.sort_type=1) ORDER BY S.comp_sort_order ASC, P.id DESC LIMIT $prod_left"; $result = mysql_query($sql); while($row = mysql_fetch_array($result)){ $j++; $prod_id = $row["prod_id"]; $comp_sort_order = $row["comp_sort_order"]; if ($old_comp_sort_order != $comp_sort_order) $j = 0; // THAT'S THE FORMULA THAT DOES FAIR SORTING MAGIC: $prod_sort_order = $comp_sort_order + $cn_companies2*$j; $sql2 = "INSERT INTO search_sorted_products SET search_id='$search_id', prod_id='$prod_id', prod_sort_order='$prod_sort_order', sort_type=2"; mysql_query($sql2); $old_comp_sort_order = $comp_sort_order; } } // 3. Now let's display sorted result $query_select = "SELECT P.id as prod_id, P.product, P.descr, H.photo, P.product_url, P.min_qty, P.min_unit, P.fob_currency, P.fob_min, P.fob_max, C.id as comp_id, C.name as comp_name, C.comp_url, CO.country "; $query_from = "FROM products P JOIN companies C ON C.id=P.comp_id JOIN search_sorted_products S ON S.prod_id=P.id AND S.search_id='$search_id' LEFT JOIN countries CO ON CO.id=C.country LEFT JOIN product_photo H ON H.prod_id=P.id and H.is_main=1 AND H.photo_video='p' JOIN members M ON M.id=C.user_id WHERE 1 "; $query_order = "ORDER BY S.sort_type, S.prod_sort_order LIMIT $start_with, $rec_per_page"; } else{ // regular search $query_select = "SELECT P.id as prod_id, P.product, P.descr, H.photo, P.product_url, P.min_qty, P.min_unit, P.fob_currency, P.fob_min, P.fob_max, C.id as comp_id, C.name as comp_name, C.comp_url, CO.country "; $query_from = "FROM products P JOIN companies C ON C.id=P.comp_id LEFT JOIN countries CO ON CO.id=C.country LEFT JOIN product_photo H ON H.prod_id=P.id and H.is_main=1 AND H.photo_video='p' JOIN members M ON M.id=C.user_id WHERE P.purpose=1 AND P.status=1 AND M.is_active=1 AND C.id<>1 $sql_more $qu_cou $qu_cat $qu_subcat $qu_search "; $query_order = "ORDER BY $sql_order LIMIT $start_with, $rec_per_page"; } } elseif ($srchtype=="Seller"){ $sr = 2; $qu_search = search_func($srch, "C.name", "company"); $query_select = "SELECT C.id as comp_id, C.name as comp_name, C.header_image, C.comp_url, C.introduction, C.city, C.state, CO.country "; $query_from = "FROM companies C JOIN countries CO ON CO.id=C.country $qu_cou JOIN members M ON M.id=C.user_id WHERE C.supplier=1 AND C.id<>1 $qu_search "; $query_order = "ORDER BY $sql_order LIMIT $start_with, $rec_per_page"; } elseif ($srchtype=="Buyer"){ $sr = 3; $qu_search = search_func($srch, "C.name", "company"); $query_select = "SELECT C.id as comp_id, C.name as comp_name, C.header_image, C.comp_url, C.introduction, C.city, C.state, CO.country "; $query_from = "FROM companies C JOIN countries CO ON CO.id=C.country $qu_cou JOIN members M ON M.id=C.user_id WHERE C.buyer=1 AND C.id<>1 $qu_search "; $query_order = "ORDER BY $sql_order LIMIT $start_with, $rec_per_page"; } elseif ($srchtype=="Lead"){ $sr = 4; $qu_search = search_func($srch, "P.product, P.keyword"); $query_select = "SELECT P.id as prod_id, P.product, P.descr, P.photo, P.product_url, P.min_qty, P.min_unit, P.fob_currency, P.fob_min, P.fob_max, C.id as comp_id, C.name as comp_name, C.comp_url, CO.country "; $query_from = "FROM products P JOIN companies C ON C.id=P.comp_id LEFT JOIN countries CO ON CO.id=C.country JOIN members M ON M.id=C.user_id WHERE P.purpose=2 AND M.is_active=1 AND P.status=1 AND C.id<>1 $sql_more $qu_cou $qu_cat $qu_subcat $qu_search "; $query_order = "ORDER BY $sql_order LIMIT $start_with, $rec_per_page"; } $query_final = $query_select . $query_from . $query_order; //echo $query_final; // items count $query_cn = "SELECT COUNT(1) as cn " . $query_from; //if ($sr == 1) $query_cn.= " GROUP BY C.id"; $result = mysql_query($query_cn); $row = mysql_fetch_array($result); $cn_rec = $row["cn"]; // count pages $page_count = floor($cn_rec/$rec_per_page); if ($cn_rec % $rec_per_page != 0) { // last torn page $page_count = $page_count + 1; if ($this_page==$page_count) // on the last torn page display last X torn records (e.g. 4), not 10 as on all other pages $rec_per_page = $cn_rec - ($page_count-1)*$rec_per_page; } } $serlzd_cookie_params = get_cookie_params(); ?> Search
Error: Search parameter must be at least 3 characters!