osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Tri sur : p.products_date_added en pagination de liste, Maintenir le TRI INITIAL en pagination de listes..
ipolis
posté 29 Jul 2008, 09:25
Message #1


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 81
Inscrit : 9-May 04
Lieu : Poitou-Charentes
Membre no 2448



Bonjour la communauté.
Comment garder le TRI ordonné initial sur (p.products_date_added) en pagination de liste ?
fichier: catalog/index.php
Voila mon code :
Code
if ($column_list[$i] == 'PRODUCT_LIST_NAME') {
          $HTTP_GET_VARS['sort'] = $i+1 . 'a';
          // orriginal
          // $listing_sql .= " order by pd.products_name"; // INITIAL - classé par nom de produit
             $listing_sql .= " order by p.products_date_added desc"; // CE QUE JE VEUX - classé par date d'ajout
          break;

C'est OK sur chaque première page des articles de chauqe categorie
Des qu'on, passe en page 2, puis on revient en page 1 le TRI :
Code
  $listing_sql .= " order by p.products_date_added desc";

est perdu.

Dans quel fichier je dois agir, la je seche depuis 3 heures..
J'ai fais une recherche, lu les posts, mais rien sur le sujet.
Objectif simple en fait : forcer par defaut et maintenir une pagination sur le critere par defaut :
Code
  $listing_sql .= " order by p.products_date_added desc";

Merci pour votre aide.


--------------------
MS2 2.3 FR avec des contribs ajoutées et du code, du code, du code.. :
Contribs: Module livraison par Pays et Zones, Autosauve, low stock,Product description, Google Position, seo, Google XML Sitemap - Admin 2.x, dhtmlcategories10, product-tabsv1-3_french, Products On Order 1.2 - Heb: Mutualisé OVH PRO
Go to the top of the page
 
cocomino
posté 29 Jul 2008, 12:32
Message #2


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1690
Inscrit : 10-October 06
Lieu : Rives du Lez
Membre no 12571



slt,
ça se passe dans le fichier catalog/includes/modules/products_listing.php lors de la construction de l'objet splitPageResults :
par défaut, le tri se fait sur le products_id :
Code
$listing_split = new splitPageResults($listing_sql, MAX_DISPLAY_SEARCH_RESULTS, 'p.products_id');

en changeant par :
Code
$listing_split = new splitPageResults($listing_sql, MAX_DISPLAY_SEARCH_RESULTS, 'p.products_date_added');

devrait te donner le résultat escompté...
Cdt


j'ai oublié !
rajouter le champs p.products_date_added dans la requète :
Code
// We show them all
        $listing_sql = "select " . $select_column_list . " p.products_id, p.products_date_added, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price, p.products_weight from " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_status = '1' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$current_category_id . "'";

de la page index ...

Ce message a été modifié par coconimo - 29 Jul 2008, 13:37.


--------------------
"Pourquoi vois-tu la paille qui est dans l'oeil de ton frère et n'aperçois-tu pas la poutre qui est dans ton oeil ?".(Saint Luc, VI-41)
Go to the top of the page
 
ipolis
posté 29 Jul 2008, 13:41
Message #3


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 81
Inscrit : 9-May 04
Lieu : Poitou-Charentes
Membre no 2448



Merci Coconimo pour la localisation du fichier concerné.et l'explication sur la construction de l'objet qui fait ca : splitPageResults
J'ai modifié le dit fichier :
de
Code
$listing_split = new splitPageResults($listing_sql, MAX_DISPLAY_SEARCH_RESULTS, 'p.products_id');

par :
Code
$listing_split = new splitPageResults($listing_sql, MAX_DISPLAY_SEARCH_RESULTS, 'p.products_date_added');

Mais cela ne change rien a l'ordre de TRI perdu en pagination.

J'ai mis un echo et je vois l'affichage sur la premiere page du SORT de correct
Ensuite, le page suivante OU LE page précédente n'en tiennent plus compte.
Comme ci ca ne 'passait plus dans cette fonction ensuite ou que le sort était oublié.

Merci de m'aider.
Voici le code de ma page : catalog/includes/modules/products_listing_col.php
Code
<?php
/*
$Id: product_listing.php,v 1.1.1.1 2003/09/18 19:04:51 wilt Exp $

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

Copyright (c) 2003 osCommerce

Released under the GNU General Public License

product_listing col ericd - L'ATELIER
*/

// par defaut sur le products_id
// $listing_split = new splitPageResults($listing_sql, MAX_DISPLAY_SEARCH_RESULTS, 'p.products_id');
// Voila pour l'ATELIER sur p.products_date_added
  $listing_split = new splitPageResults($listing_sql, MAX_DISPLAY_SEARCH_RESULTS, 'p.products_date_added');
if ( ($listing_split->number_of_rows > 0) && ( (PREV_NEXT_BAR_LOCATION == '1') || (PREV_NEXT_BAR_LOCATION == '3') ) ) {
?>
<table border="0" width="500" cellspacing="0" cellpadding="2">
<tr>
   <td class="smallText"><?php echo $listing_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS); ?></td>
   <td class="smallText" align="right"><?php echo TEXT_RESULT_PAGE . ' ' . $listing_split->display_links(MAX_DISPLAY_PAGE_LINKS, tep_get_all_get_params(array('page', 'info', 'x', 'y'))); ?></td>
</tr>

</table>
<?php
}

$list_box_contents = array();

for ($col=0, $n=sizeof($column_list); $col<$n; $col++) {
   switch ($column_list[$col]) {
     case 'PRODUCT_LIST_MODEL':
       $lc_text = TABLE_HEADING_MODEL;
       $lc_align = 'center';
       break;
     case 'PRODUCT_LIST_NAME':
       $lc_text = TABLE_HEADING_PRODUCTS;
       $lc_align = 'left';
       break;
     case 'PRODUCT_LIST_MANUFACTURER':
       $lc_text = TABLE_HEADING_MANUFACTURER;
       $lc_align = '';
       break;
     case 'PRODUCT_LIST_PRICE':
       $lc_text = TABLE_HEADING_PRICE;
       $lc_align = 'center';
       break;
     case 'PRODUCT_DATE_ADDED':
       $lc_text = TABLE_HEADING_DATEADDED;
       $lc_align = 'center';
       break;  
     case 'PRODUCT_LIST_QUANTITY':
       $lc_text = TABLE_HEADING_QUANTITY;
       $lc_align = 'right';
       break;
     case 'PRODUCT_LIST_WEIGHT':
       $lc_text = TABLE_HEADING_WEIGHT;
       $lc_align = 'right';
       break;
     case 'PRODUCT_LIST_IMAGE':
       $lc_text = TABLE_HEADING_IMAGE;
       $lc_align = 'center';
       break;
     case 'PRODUCT_LIST_BUY_NOW':
       $lc_text = TABLE_HEADING_BUY_NOW;
       $lc_align = 'center';
       break;
   }

   if ( ($column_list[$col] != 'PRODUCT_LIST_BUY_NOW') && ($column_list[$col] != 'PRODUCT_LIST_IMAGE') ) {
     $lc_text = tep_create_sort_heading($HTTP_GET_VARS['sort'], $col+1, $lc_text);
   }

   $list_box_contents[0][] = array('align' => $lc_align,
                                   'params' => 'class="productListing-heading"',
                                   'text' => '&nbsp;' . $lc_text . '');
}

if ($listing_split->number_of_rows > 0) {
   $rows = 0;
   $listing_query = tep_db_query($listing_split->sql_query);
   while ($listing = tep_db_fetch_array($listing_query)) {
     $rows++;

     if (($rows/2) == floor($rows/2)) {
       $list_box_contents[] = array('params' => 'class="productListing-even"');
     } else {
       $list_box_contents[] = array('params' => 'class="productListing-odd"');
     }

     $cur_row = sizeof($list_box_contents) - 1;
  $has_description = false;

     for ($col=0, $n=sizeof($column_list); $col<$n; $col++) {
       $lc_align = '';

       switch ($column_list[$col]) {
         case 'PRODUCT_LIST_MODEL':
           $lc_align = 'center';
           $lc_text = '&nbsp;' . $listing['products_model'] . '&nbsp;';
           break;
         case 'PRODUCT_LIST_NAME':
           $lc_align = '';
           if (isset($HTTP_GET_VARS['manufacturers_id'])) {
             $lc_text = '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'manufacturers_id=' . $HTTP_GET_VARS['manufacturers_id'] . '&products_id=' . $listing['products_id']) . '">' . $listing['products_name'] . '</a>';
           } else {
             $lc_text = '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing['products_id']) . '">' . $listing['products_name'] . '</a>&nbsp;';
           }
             /* ajout contrib Product Listing 03 */
  if (PRODUCT_LIST_DESCRIPTION && $listing['products_description'] && PRODUCT_LIST_DESCRIPTION_MAX_LENGTH)
           $lc_text .= '<br><table border="0" cellpadding="0" cellspacing="0" width="85%"><tr><td class="productDesc">' . tep_flatten_product_description($listing['products_description'],  ' <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $listing['products_id']) . '">' . TEXT_MORE . '</a>') . '</td></tr></table>';
             /* fin ajout contrib Product Listing 03 */
           break;
         case 'PRODUCT_LIST_MANUFACTURER':
           $lc_align = '';
           $lc_text = '&nbsp;<a href="' . tep_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $listing['manufacturers_id']) . '">' . $listing['manufacturers_name'] . '</a>&nbsp;';
           break;
         case 'PRODUCT_LIST_PRICE':
           $lc_align = 'right';
           // ajout Suppression si prix=0
            // if ($listing['products_price'] > 0) {
             if ($listing['products_price'] != '0.01') {
            // if ($listing['products_price'] = '0') {
           // fin ajout
            
            // format du TABLEAU pour le PRIX UNIQUEMENT
           if (tep_get_products_special_price($listing['products_id'])) {
             $lc_text = '<table border="0" cellpadding="0" cellspacing="0" width="78"><tr><td align="right" class="productDesc"><strong>' .  $currencies->display_price($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</s>&nbsp;<span class="productSpecialPrice">' . $currencies->display_price(tep_get_products_special_price($listing['products_id']), tep_get_tax_rate($listing['products_tax_class_id'])) . '</strong></span></td></tr></table>';

           } else {
             $lc_text = '<table border="0" cellpadding="0" cellspacing="0" width="78"><tr><td align="right" class="productDesc"><strong>' . $currencies->display_price($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</strong></td></tr></table>';
           }
          
         // ajout Suppression si prix=0     
        } else {
          $lc_text = '&nbsp;';
        }
        // fin ajout
           break;
          
           // ajour ED  L'ATELIER
         case 'PRODUCT_DATE_ADDED':
           $lc_align = 'right';
           $lc_text = '&nbsp;' . $listing['products_date_added'] . '&nbsp;';
           break;
          // fin ajour ED  L'ATELIER  
         case 'PRODUCT_LIST_QUANTITY':
           $lc_align = 'right';
           $lc_text = '&nbsp;' . $listing['products_quantity'] . '&nbsp;';
           break;
         case 'PRODUCT_LIST_WEIGHT':
           $lc_align = 'right';
           $lc_text = '&nbsp;' . $listing['products_weight'] . '&nbsp;';
           break;
         case 'PRODUCT_LIST_IMAGE':
           $lc_align = 'center';
           if (isset($HTTP_GET_VARS['manufacturers_id'])) {
             $lc_text = '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'manufacturers_id=' . $HTTP_GET_VARS['manufacturers_id'] . '&products_id=' . $listing['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $listing['products_image'], $listing['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a>';
           } else {
             $lc_text = '&nbsp;<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $listing['products_image'], $listing['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a>&nbsp;';
           }
           break;
         case 'PRODUCT_LIST_BUY_NOW':
         // ajout Suppression si prix=0     
        //  if ($listing['products_price'] > 0) {
          if ($listing['products_price'] = '0.01') {
          // fin ajout
           $lc_align = 'right';
           $lc_text = '<a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $listing['products_id']) . '">' . tep_template_image_button('button_buy_now.gif', IMAGE_BUTTON_BUY_NOW) . '</a>&nbsp;';
        // ajout Suppression si prix=0     
          } else {
           $lc_text = '&nbsp;';
          }
        // fin ajout      
           break;
       }

       $list_box_contents[$cur_row][] = array('align' => $lc_align,
                                              'params' => 'class="productListing-data"',
                                              'text'  => $lc_text);
     }
   }

   new productListingBox($list_box_contents);
} else {
   $list_box_contents = array();

   $list_box_contents[0] = array('params' => 'class="productListing-odd"');
   $list_box_contents[0][] = array('params' => 'class="productListing-data"',
                                  'text' => TEXT_NO_PRODUCTS);

   new productListingBox($list_box_contents);
}

if ( ($listing_split->number_of_rows > 0) && ((PREV_NEXT_BAR_LOCATION == '2') || (PREV_NEXT_BAR_LOCATION == '3')) ) {
?>
<table border="0" width="500" cellspacing="0" cellpadding="2">
        
<tr>
   <td class="smallText"><?php echo $listing_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS); ?></td>
   <td class="smallText" align="right"><?php echo TEXT_RESULT_PAGE . ' ' . $listing_split->display_links(MAX_DISPLAY_PAGE_LINKS, tep_get_all_get_params(array('page', 'info', 'x', 'y'))); ?></td>
</tr>
</table>
<?php
}
?>

A vous les studios..


--------------------
MS2 2.3 FR avec des contribs ajoutées et du code, du code, du code.. :
Contribs: Module livraison par Pays et Zones, Autosauve, low stock,Product description, Google Position, seo, Google XML Sitemap - Admin 2.x, dhtmlcategories10, product-tabsv1-3_french, Products On Order 1.2 - Heb: Mutualisé OVH PRO
Go to the top of the page
 
ipolis
posté 29 Jul 2008, 13:51
Message #4


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 81
Inscrit : 9-May 04
Lieu : Poitou-Charentes
Membre no 2448



Je viens de rajouter : le champs p.products_date_added dans la requète :
Rien y fais, que nenni le bougre...

Voila mon fichier /catalog/index.php
Code
<?php
/*
  $Id: index.php,v 1.2 2003/09/24 14:33:15 wilt Exp $

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

  Copyright (c) 2003 osCommerce

  Released under the GNU General Public License
*/
  require('includes/application_top.php');

// the following cPath references come from application_top.php
  $category_depth = 'top';
  if (isset($cPath) && tep_not_null($cPath)) {
    $categories_products_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_TO_CATEGORIES . " where categories_id = '" . (int)$current_category_id . "'");
    $cateqories_products = tep_db_fetch_array($categories_products_query);
    if ($cateqories_products['total'] > 0) {
      $category_depth = 'products'; // display products
    } else {
      $category_parent_query = tep_db_query("select count(*) as total from " . TABLE_CATEGORIES . " where parent_id = '" . (int)$current_category_id . "'");
      $category_parent = tep_db_fetch_array($category_parent_query);
      if ($category_parent['total'] > 0) {
        $category_depth = 'nested'; // navigate through the categories
      } else {
        $category_depth = 'products'; // category has no products, but display the 'no products' message
      }
    }
  }

  require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_DEFAULT);

  if ($category_depth == 'nested') {
//Code change for Categories Description 1.5
//    $category_query = tep_db_query("select cd.categories_name, c.categories_image from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.categories_id = '" . (int)$current_category_id . "' and cd.categories_id = '" . (int)$current_category_id . "' and cd.language_id = '" . (int)$languages_id . "'");
//Changed to the following
    $category_query = tep_db_query("select cd.categories_name, cd.categories_heading_title, cd.categories_description, c.categories_image from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.categories_id = '" . $current_category_id . "' and cd.categories_id = '" . $current_category_id . "' and cd.language_id = '" . $languages_id . "'");
//End Categories Description 1.5

    $category = tep_db_fetch_array($category_query);

    $content = CONTENT_INDEX_NESTED;

  } elseif ($category_depth == 'products' || isset($HTTP_GET_VARS['manufacturers_id'])) {
// create column list  
    $define_list = array('PRODUCT_LIST_MODEL' => PRODUCT_LIST_MODEL,
                         'PRODUCT_DATE_ADDED' => PRODUCT_DATE_ADDED,
                         'PRODUCT_LIST_NAME' => PRODUCT_LIST_NAME,
                         'PRODUCT_LIST_MANUFACTURER' => PRODUCT_LIST_MANUFACTURER,
                         'PRODUCT_LIST_PRICE' => PRODUCT_LIST_PRICE,
                         'PRODUCT_LIST_QUANTITY' => PRODUCT_LIST_QUANTITY,
                         'PRODUCT_LIST_WEIGHT' => PRODUCT_LIST_WEIGHT,
                         'PRODUCT_LIST_IMAGE' => PRODUCT_LIST_IMAGE,
                         'PRODUCT_LIST_BUY_NOW' => PRODUCT_LIST_BUY_NOW);

    asort($define_list);

    $column_list = array();
    reset($define_list);
    while (list($key, $value) = each($define_list)) {
      if ($value > 0) $column_list[] = $key;
    }

    $select_column_list = '';

    for ($i=0, $n=sizeof($column_list); $i<$n; $i++) {
      switch ($column_list[$i]) {
        case 'PRODUCT_LIST_MODEL':
          $select_column_list .= 'p.products_model, ';
          break;
          // Cas par date d'ajout DESC - ED 2008 - L'ATELIER
          //  $listing_sql .= " order by p.products_date_added desc";  
        case 'PRODUCT_DATE_ADDED':
          $select_column_list .= 'p.products_date_added, ';
          break;  
        case 'PRODUCT_LIST_NAME':
          //$select_column_list .= 'pd.products_name, ';
            $select_column_list .= 'pd.products_name, pd.products_description, ';
          break;
        case 'PRODUCT_LIST_MANUFACTURER':
          $select_column_list .= 'm.manufacturers_name, ';
          break;
        case 'PRODUCT_LIST_QUANTITY':
          $select_column_list .= 'p.products_quantity, ';
          break;
        case 'PRODUCT_LIST_IMAGE':
          $select_column_list .= 'p.products_image, ';
          break;
        case 'PRODUCT_LIST_WEIGHT':
          $select_column_list .= 'p.products_weight, ';
          break;
      }
    }
// Get the category name and description
    $category_query = tep_db_query("select cd.categories_name, cd.categories_heading_title, cd.categories_description, c.categories_image from " . TABLE_CATEGORIES . " c, " . TABLE_CATEGORIES_DESCRIPTION . " cd where c.categories_id = '" . $current_category_id . "' and cd.categories_id = '" . $current_category_id . "' and cd.language_id = '" . $languages_id . "'");
    $category = tep_db_fetch_array($category_query);


// show the products of a specified manufacturer
    if (isset($HTTP_GET_VARS['manufacturers_id'])) {
      if (isset($HTTP_GET_VARS['filter_id']) && tep_not_null($HTTP_GET_VARS['filter_id'])) {
// We are asked to show only a specific category
        $listing_sql = "select " . $select_column_list . " p.products_id, p.products_date_added, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_status = '1' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$HTTP_GET_VARS['filter_id'] . "'";
      } else {
// We show them all
        $listing_sql = "select " . $select_column_list . " p.products_id, p.products_date_added, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m where p.products_status = '1' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "'";
      }
    } else {
// show the products in a given categorie
      if (isset($HTTP_GET_VARS['filter_id']) && tep_not_null($HTTP_GET_VARS['filter_id'])) {
// We are asked to show only specific catgeory
        $listing_sql = "select " . $select_column_list . " p.products_id, p.products_date_added, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_MANUFACTURERS . " m, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_status = '1' and p.manufacturers_id = m.manufacturers_id and m.manufacturers_id = '" . (int)$HTTP_GET_VARS['filter_id'] . "' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$current_category_id . "'";
      } else {
// We show them all
        $listing_sql = "select " . $select_column_list . " p.products_id, p.products_date_added, p.manufacturers_id, p.products_price, p.products_tax_class_id, IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price, IF(s.status, s.specials_new_products_price, p.products_price) as final_price from " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_status = '1' and p.products_id = p2c.products_id and pd.products_id = p2c.products_id and pd.language_id = '" . (int)$languages_id . "' and p2c.categories_id = '" . (int)$current_category_id . "'";
      }
    }

    if ( (!isset($HTTP_GET_VARS['sort'])) || (!ereg('[1-8][ad]', $HTTP_GET_VARS['sort'])) || (substr($HTTP_GET_VARS['sort'], 0, 1) > sizeof($column_list)) ) {
      for ($i=0, $n=sizeof($column_list); $i<$n; $i++) {
        if ($column_list[$i] == 'PRODUCT_LIST_NAME') {
          $HTTP_GET_VARS['sort'] = $i+1 . 'a';
          // orriginal
          // $listing_sql .= " order by pd.products_name"; // classé par nom de produit
          // Tri par ID pour l'atelelier - ROUX - SAUVAGEON
          $listing_sql .= " order by p.products_date_added desc"; // classé par date d'ajout
          // echo $listing_sql;
          break;
        }
      }
    } else {
      $sort_col = substr($HTTP_GET_VARS['sort'], 0 , 1);
      $sort_order = substr($HTTP_GET_VARS['sort'], 1);
      $listing_sql .= ' order by ';
      switch ($column_list[$sort_col-1]) {
        case 'PRODUCT_LIST_MODEL':
          $listing_sql .= "pd.products_model " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
          break;
         //  ajout - Tri par ID pour l'atelelier - ROUX - SAUVAGEON
         case 'PRODUCT_DATE_ADDED':
          $listing_sql .= "p.products_date_added " . ($sort_order == 'd' ? 'desc' : '');
          break;  
        case 'PRODUCT_LIST_NAME':
          $listing_sql .= "pd.products_name " . ($sort_order == 'd' ? 'desc' : '');
          break;
        case 'PRODUCT_LIST_MANUFACTURER':
          $listing_sql .= "m.manufacturers_name " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
          break;
        case 'PRODUCT_LIST_QUANTITY':
          $listing_sql .= "p.products_quantity " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
          break;
        case 'PRODUCT_LIST_IMAGE':
          $listing_sql .= "pd.products_name";
          break;
        case 'PRODUCT_LIST_WEIGHT':
          $listing_sql .= "p.products_weight " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
          break;
        case 'PRODUCT_LIST_PRICE':
          $listing_sql .= "final_price " . ($sort_order == 'd' ? 'desc' : '') . ", pd.products_name";
          break;
      }
    }

    $content = CONTENT_INDEX_PRODUCTS;

  } else { // default page

    $content = CONTENT_INDEX_DEFAULT;

  }

  require(DIR_WS_TEMPLATES . TEMPLATE_NAME . '/' . TEMPLATENAME_MAIN_PAGE);

  require(DIR_WS_INCLUDES . 'application_bottom.php');
?>

Merci de m'apporter ton aide.


--------------------
MS2 2.3 FR avec des contribs ajoutées et du code, du code, du code.. :
Contribs: Module livraison par Pays et Zones, Autosauve, low stock,Product description, Google Position, seo, Google XML Sitemap - Admin 2.x, dhtmlcategories10, product-tabsv1-3_french, Products On Order 1.2 - Heb: Mutualisé OVH PRO
Go to the top of the page
 
cocomino
posté 29 Jul 2008, 15:18
Message #5


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1690
Inscrit : 10-October 06
Lieu : Rives du Lez
Membre no 12571



Code
require(DIR_WS_TEMPLATES . TEMPLATE_NAME . '/' . TEMPLATENAME_MAIN_PAGE);


quelle est la version exacte de ta boutique ?
quelle contrib gère les templates sinon ?


--------------------
"Pourquoi vois-tu la paille qui est dans l'oeil de ton frère et n'aperçois-tu pas la poutre qui est dans ton oeil ?".(Saint Luc, VI-41)
Go to the top of the page
 
shoprun
posté 29 Jul 2008, 15:38
Message #6


2eme dan OSC
Icône de groupe

Groupe : Membres VIP
Messages : 3712
Inscrit : 11-April 07
Lieu : Ile de la Réunion
Membre no 16487



Salut

J'ai franchement pas tout suivi, mais comme ça vite fait, j'ai une idée qui me viens à l'esprit ...

Fais y un petit essai avec ceci pour voir :
Code
// -> Recherche du champ (colonne) PRODUCT_DATE_ADDED par défaut
// au lieu de -> PRODUCT_LIST_NAME
        if ($column_list[$i] == 'PRODUCT_DATE_ADDED') {
          $HTTP_GET_VARS['sort'] = $i+1 . 'a';
          // orriginal
          // $listing_sql .= " order by pd.products_name"; // classé par nom de produit
          // Tri par ID pour l'atelelier - ROUX - SAUVAGEON
          $listing_sql .= " order by p.products_date_added desc"; // classé par date d'ajout
          // echo $listing_sql;
          break;
        }

Si je dis pas de bêtise, c'est cette partie de code qui choisi le champ (ou la colonne) par défaut, et dans osC c'est le champ products_name.
Or, si j'ai bien compris, c'est le champ (et donc colonne) de la date que tu veux que ça soit par défaut.

Ce message a été modifié par shoprun - 29 Jul 2008, 15:41.


--------------------
Nous ne sommes pas un Service Après-Vente ni une Hot-Line !!!, et pas de "UP" et de doublon svp ...
Prenez le temps de lire les informations mises à votre dispositions avant de créer un sujet.
Démarrer du bon pied -> Bien utiliser les forums | Bien poser sa question | Règles d'usage des forums
Prés-Requis -> Les compétences requises pour réussir avec osCommerce
Docs / Infos -> LA FAQ | Rechercher | Contributions | Contribution US
Sujets épinglés -> Manuel d'utilisation MS2 | Structure OsC2.2 MS2 | ms2-fr-rc1-w3c | SSL : une obligation? | Design de la MS2 | Tutoriels CSS | Optimisez les performances de votre boutique | Taux de TVA à appliquer
Utile -> WampServer | EasyPhp | Xampp | Mamp - Ftp -> FileZilla
Apprendre -> siteduzero | alsacreations | apprendre-php | developpez.com
Go to the top of the page
 
ipolis
posté 29 Jul 2008, 22:29
Message #7


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 81
Inscrit : 9-May 04
Lieu : Poitou-Charentes
Membre no 2448



Bon ca a du mieux de chez mieux,
le TRI et la pagination fonctionne désormais
mais en ASC uniquement.
Sur mon code plus haut dans le post,
j'ai uniquement changé sur recommandation de shoprun :
/catalog/index.php

Code
          if ($column_list[$i] == 'PRODUCT_DATE_ADDED') {
      // if ($column_list[$i] == 'PRODUCT_LIST_NAME') {
          $HTTP_GET_VARS['sort'] = $i+1 . 'a';
      //  $HTTP_GET_VARS['sort'] = $i+1 . 'a';
           // orriginal
          // $listing_sql .= " order by pd.products_name"; // classé par nom de produit
         // Tri par : Date added
         $listing_sql .= " order by p.products_date_added desc"; // classé par date d'ajout


J'ai indiqué partout sur mes deux pages un mode de tri DESC
Mais ca ne fonctionne qu'en ASC partout...
Si vous aviez une idée lumineuse, cela permettrait de clore le sujet en résolu.

Pour Coconimo,
cette version de code n'est pas de mon MS 2.2 FR mais d'une Creload 6.x FR de Delaballe et O'Neil
Donc la gestion des templates est lié a la Creload de l'epoque, pas a une contrib ajoutée en sus de cette version de Creload.

Alors ou lui forcer dans le code proprement un DESC en lieu et place de ASC qu'il perdure a executer le bougre ?
A vous lire les Zamis. cool.gif

Ce message a été modifié par ipolis - 30 Jul 2008, 11:17.


--------------------
MS2 2.3 FR avec des contribs ajoutées et du code, du code, du code.. :
Contribs: Module livraison par Pays et Zones, Autosauve, low stock,Product description, Google Position, seo, Google XML Sitemap - Admin 2.x, dhtmlcategories10, product-tabsv1-3_french, Products On Order 1.2 - Heb: Mutualisé OVH PRO
Go to the top of the page
 
ipolis
posté 30 Jul 2008, 11:25
Message #8


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 81
Inscrit : 9-May 04
Lieu : Poitou-Charentes
Membre no 2448



Bon j'ai repris tout le code des deux pages concernées
le TRI Descendant est demandé aux endroits cohérents. Je ne vois pas pourquoi il
ne le prend pas du tout en compte. Il execute le tri sur le bon champ, mais ignore le SORT
demandé puisque par defaut on est en ASC si je ne m'abuse en Sql..

Merci d'eclairer ma lanterne.
Je me dis qu'une 3eme page doit etre impliquée dans cette mécanique.
Mais les appels includes ou fonctions ne me laissent rien envisager.
Si vous avez une piste, faute d'avoir la solution, je suis grandement preneur
pour finaliser mon besoin.
A vous les studios, a vous Cognac Jay..


--------------------
MS2 2.3 FR avec des contribs ajoutées et du code, du code, du code.. :
Contribs: Module livraison par Pays et Zones, Autosauve, low stock,Product description, Google Position, seo, Google XML Sitemap - Admin 2.x, dhtmlcategories10, product-tabsv1-3_french, Products On Order 1.2 - Heb: Mutualisé OVH PRO
Go to the top of the page
 
ipolis
posté 6 Aug 2008, 23:41
Message #9


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 81
Inscrit : 9-May 04
Lieu : Poitou-Charentes
Membre no 2448



Je ne comprends pas pourquoi il maitient a faire un TRI ASCENDANT
dans les pages de codes ci-dessus.

Le TRI se fait sur le bon champ mais a priori il ignore le SORT
DESC puisqu'il fait un ASC.
Pour les PROS du SQL le sort est toujours en ASC par defaut ?
Merci de me donner des pistes .
blink.gif




--------------------
MS2 2.3 FR avec des contribs ajoutées et du code, du code, du code.. :
Contribs: Module livraison par Pays et Zones, Autosauve, low stock,Product description, Google Position, seo, Google XML Sitemap - Admin 2.x, dhtmlcategories10, product-tabsv1-3_french, Products On Order 1.2 - Heb: Mutualisé OVH PRO
Go to the top of the page
 
cocomino
posté 7 Aug 2008, 01:28
Message #10


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1690
Inscrit : 10-October 06
Lieu : Rives du Lez
Membre no 12571



le fait que tu travailles sur un fork d'oscommerce peut faire varier les résultats ...( fichiers modifiés ailleurs, gestion d'un cache supplémentaire, etc ...)
si Oneill passe par là, il pourra éventuellment te guider de manière plus efficace.
En attendant, le code qui t'a été donné (sur la base d'une version classique d'oscommerce) est fonctionnel.je t'invite vivement à le tester d'ailleurs.
bref, je arrow.gif du sujet.
bon courage.


--------------------
"Pourquoi vois-tu la paille qui est dans l'oeil de ton frère et n'aperçois-tu pas la poutre qui est dans ton oeil ?".(Saint Luc, VI-41)
Go to the top of the page
 
ipolis
posté 18 Aug 2008, 23:54
Message #11


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 81
Inscrit : 9-May 04
Lieu : Poitou-Charentes
Membre no 2448



Merci pour tes encouragements.
Je me suis replongé dans la problématique.
Je ne parviens toujours a faire q'un TRI par defaut en ASC.
Pas moyen de lui flanquer un sort DESC fonctionnel.
Je suis le code comme je peux, je ne vois pas ou a lieu
l'inclusion ou l'appel a du code pour cela.
Merci a vous tous, mais je ne peux pas encore tagger d'un RESOLU unsure.gif



--------------------
MS2 2.3 FR avec des contribs ajoutées et du code, du code, du code.. :
Contribs: Module livraison par Pays et Zones, Autosauve, low stock,Product description, Google Position, seo, Google XML Sitemap - Admin 2.x, dhtmlcategories10, product-tabsv1-3_french, Products On Order 1.2 - Heb: Mutualisé OVH PRO
Go to the top of the page
 
propatator
posté 11 Jul 2009, 21:29
Message #12


Ceinture jaune OSC
Icône de groupe

Groupe : Membres
Messages : 54
Inscrit : 11-February 08
Membre no 20767



...
pom pom pom
...
1 an plus tard
...

bonjour,

je viens de me confronter à un problème similaire (sauf l'histoire ascendant descendant) :

mes produits sont classés par noms ET par modèles, tout allait très bien sur la 1e page mais dès qu'on naviguait d'une page à l'autre, l'ordre du listing foutait le camp.
pourtant j'avais bien modifié la lignes de index.php
Code
$HTTP_GET_VARS['sort'] = $i+1 . 'a';
$listing_sql .= " order by pd.products_name, p.products_model";

tout est rentré dans l'ordre quand j'ai aussi modifié cette ligne un peu plus bas
Code
$listing_sql .= "pd.products_name " . ($sort_order == 'd' ? 'desc' : '');

en
Code
$listing_sql .= "pd.products_name " . ($sort_order == 'd' ? 'desc' : '') . ", p.products_model";


si ça peut aider quelqu'un...
Go to the top of the page
 
darthvieder
posté 19 Jul 2009, 10:05
Message #13


Ceinture blanche OSC
Icône de groupe

Groupe : Membres
Messages : 1
Inscrit : 19-July 09
Membre no 25809



Merci beaucoup!

commission de surendettement
- commission de surendettement, vous pouvez demander un dossier de surendettement.
Go to the top of the page
 
Mode&Co
posté 25 Mar 2010, 18:49
Message #14


Ceinture blanche+ OSC
Icône de groupe

Groupe : Membres
Messages : 25
Inscrit : 27-November 07
Membre no 19900



Bonjour,
Avez-vous pu, 2 ans plus tard, réussir à avoir un order by desc dans product_listing_col.php?
Si oui, pouvez-vous éclairer ma lanterne?
Go to the top of the page
 
Mode&Co
posté 26 Mar 2010, 12:48
Message #15


Ceinture blanche+ OSC
Icône de groupe

Groupe : Membres
Messages : 25
Inscrit : 27-November 07
Membre no 19900



Je ne sais pas si c'est bien orthodoxe, mais j'ai trouvé une solution:
Remplacer dans index.php
if ($column_list[$i] == 'PRODUCT_LIST_NAME') {
$HTTP_GET_VARS['sort'] = $i+1 . 'd';
// $listing_sql .= " order by pd.products_name"; // classé par nom de produit
$listing_sql .= " order by p.products_date_added desc"; // classé par date d'ajout
par
if ($column_list[$i] == 'PRODUCT_LIST_NAME') {
$HTTP_GET_VARS['sort'] = $i+1 . '';
// $listing_sql .= " order by pd.products_name"; // classé par nom de produit
$listing_sql .= " order by p.products_date_added desc"; // classé par date d'ajout

Ca marche!
Go to the top of the page
 

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 20th June 2013 - 00:42
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)