Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Search in attributes page


Andromeda100

Recommended Posts

Posted

hello,

 

i've installed the contribution for a quick search on product_attributes.php

It has worked until now. But now there is a error like

 

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-10, 10' at line 1

select pa.* from products_attributes pa left join products_description pd on pa.products_id = pd.products_id and pd.language_id = '2' order by pd.products_name LIMIT -10, 10

[TEP STOP]

 

 

Here is a part of the product_attributes file:

 

if($search)
{
//Search by name
//$attributes = "SELECT pa. * FROM " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_DESCRIPTION . " pd WHERE pd.products_name LIKE '%" . $attribute_search . "%' AND pd.products_id = pa.products_id and pd.language_id = '" . (int)$languages_id . "' order by pd.products_name";
//Search by products_model uncomment the following
$attributes = "SELECT pa. * FROM " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION ." pd WHERE p.products_model LIKE '%" . $attribute_search . "%' AND p.products_id = pa.products_id AND p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' ORDER BY pd.products_name";
}
else
{
$attributes = "select pa.* from " . TABLE_PRODUCTS_ATTRIBUTES . " pa left join " . TABLE_PRODUCTS_DESCRIPTION . " pd on pa.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by pd.products_name";
}
$attribute_query = tep_db_query($attributes);

$attribute_page_start = ($per_page * $attribute_page) - $per_page;
$num_rows = tep_db_num_rows($attribute_query);

if ($num_rows <= $per_page) {
$num_pages = 1;
} else if (($num_rows % $per_page) == 0) {
$num_pages = ($num_rows / $per_page);
} else {
$num_pages = ($num_rows / $per_page) + 1;
}
$num_pages = (int) $num_pages;

if(!$search) { $attributes = $attributes . " LIMIT $attribute_page_start, $per_page"; }

// Previous
if ($prev_attribute_page) {
echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'attribute_page=' . $prev_attribute_page) . '"> << </a> | ';
}

for ($i = 1; $i <= $num_pages; $i++) {
if ($i != $attribute_page) {
echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'attribute_page=' . $i) . '">' . $i . '</a> | ';
} else {
echo '<b><font color="red">' . $i . '</font></b> | ';
}
}

// Next
if ($attribute_page != $num_pages) {
echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_ATTRIBUTES, 'attribute_page=' . $next_attribute_page) . '"> >> </a>';
}

 

http://www.oscommerce.com/community/contributions,1832/category,all/search,attributes+search

Posted

take a backup of admin/includes/classes/split_page_results.php and replace it by this:

 

<?php
/*
 $Id: split_page_results.php,v 1.13 2003/05/05 17:56:50 dgw_ Exp $

 osCommerce, Open Source E-Commerce Solutions
 http://www.oscommerce.com

 Copyright (c) 2002 osCommerce

 Released under the GNU General Public License
*/

 class splitPageResults {
   function splitPageResults(&$current_page_number, $max_rows_per_page, &$sql_query, &$query_num_rows) {
     if (empty($current_page_number)) $current_page_number = 1;

     $pos_to = strlen($sql_query);
     $pos_from = strpos($sql_query, ' from', 0);

     $pos_group_by = strpos($sql_query, ' group by', $pos_from);
     if (($pos_group_by < $pos_to) && ($pos_group_by != false)) $pos_to = $pos_group_by;

     $pos_having = strpos($sql_query, ' having', $pos_from);
     if (($pos_having < $pos_to) && ($pos_having != false)) $pos_to = $pos_having;

     $pos_order_by = strpos($sql_query, ' order by', $pos_from);
     if (($pos_order_by < $pos_to) && ($pos_order_by != false)) $pos_to = $pos_order_by;

     $reviews_count_query = tep_db_query("select count(*) as total " . substr($sql_query, $pos_from, ($pos_to - $pos_from)));
     $reviews_count = tep_db_fetch_array($reviews_count_query);
     $query_num_rows = $reviews_count['total'];

     $num_pages = ceil($query_num_rows / $max_rows_per_page);
     if ($current_page_number > $num_pages) {
       $current_page_number = $num_pages;
     }
     $offset = ($max_rows_per_page * ($current_page_number - 1));
     $sql_query .= " limit " . max($offset, 0) . ", " . $max_rows_per_page;
   }

   function display_links($query_numrows, $max_rows_per_page, $max_page_links, $current_page_number, $parameters = '', $page_name = 'page') {
     global $PHP_SELF;

     if ( tep_not_null($parameters) && (substr($parameters, -1) != '&') ) $parameters .= '&';

// calculate number of pages needing links
     $num_pages = ceil($query_numrows / $max_rows_per_page);

     $pages_array = array();
     for ($i=1; $i<=$num_pages; $i++) {
       $pages_array[] = array('id' => $i, 'text' => $i);
     }

     if ($num_pages > 1) {
       $display_links = tep_draw_form('pages', basename($PHP_SELF), '', 'get');

       if ($current_page_number > 1) {
         $display_links .= '<a href="' . tep_href_link(basename($PHP_SELF), $parameters . $page_name . '=' . ($current_page_number - 1), 'NONSSL') . '" class="splitPageLink">' . PREVNEXT_BUTTON_PREV . '</a>  ';
       } else {
         $display_links .= PREVNEXT_BUTTON_PREV . '  ';
       }

       $display_links .= sprintf(TEXT_RESULT_PAGE, tep_draw_pull_down_menu($page_name, $pages_array, $current_page_number, 'onChange="this.form.submit();"'), $num_pages);

       if (($current_page_number < $num_pages) && ($num_pages != 1)) {
         $display_links .= '  <a href="' . tep_href_link(basename($PHP_SELF), $parameters . $page_name . '=' . ($current_page_number + 1), 'NONSSL') . '" class="splitPageLink">' . PREVNEXT_BUTTON_NEXT . '</a>';
       } else {
         $display_links .= '  ' . PREVNEXT_BUTTON_NEXT;
       }

       if ($parameters != '') {
         if (substr($parameters, -1) == '&') $parameters = substr($parameters, 0, -1);
         $pairs = explode('&', $parameters);
         while (list(, $pair) = each($pairs)) {
           list($key,$value) = explode('=', $pair);
           $display_links .= tep_draw_hidden_field(rawurldecode($key), rawurldecode($value));
         }
       }

       if (SID) $display_links .= tep_draw_hidden_field(tep_session_name(), tep_session_id());

       $display_links .= '</form>';
     } else {
       $display_links = sprintf(TEXT_RESULT_PAGE, $num_pages, $num_pages);
     }

     return $display_links;
   }

   function display_count($query_numrows, $max_rows_per_page, $current_page_number, $text_output) {
     $to_num = ($max_rows_per_page * $current_page_number);
     if ($to_num > $query_numrows) $to_num = $query_numrows;
     $from_num = ($max_rows_per_page * ($current_page_number - 1));
     if ($to_num == 0) {
       $from_num = 0;
     } else {
       $from_num++;
     }

     return sprintf($text_output, $from_num, $to_num, $query_numrows);
   }
 }
?>

:-)

Monika

 

addicted to writing code ... can't get enough of databases either, LOL!

 

my toolbox: Textpad - Compare and Merge - phpMyAdmin - WS_FTP - Photoshop - How to search the forum

 

Interactive Media Award July 2007 ~ category E-Commerce

my advice on the forum is for free, PMs where you send me work are considered consultation which I charge for ...

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...