Aide - Recherche - Membres - Calendrier
Version complète : Export Universel
Forum osCommerce-fr > Adapter OsCommerce MS2 > Contributions
figaro
Bonjour,

J'aimerais lors de la création de mon flux xml ne pas exporter les produits d'une certaine catégorie.
Je ne sais pas trop comment modifier le fichier export.php pour ne pas prendre en compte les produits de cette catégorie.
Pouvez vous m'aider svp ?

Figaro
Gnidhal
dans ta requête tu ajoutes une jointure dans le FROM sur products_to_categories :
après " .TABLE_PRODUCTS . " p
ce qui donne :
" . TABLE_PRODUCTS . " p left join " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c on (p.products_id = p2c.products_id)
et dans le where tu ajoutes ton filtre :
and p2c.categories_id <> 'xx'
où xx = l'id de ta categorie à ne pas prendre en compte.
figaro
Merci pour votre réponse, je viens de faire la modif, en revanche je n'obtiens plus de flux....
Voici le code, pouvez me confirmer que je n'ai pas fait de faute ?

$products_query = tep_db_query("SELECT p.*,
pd.products_name, pd.products_description,
pc.categories_id,
pr.date_added as review_date, pr.customers_name, pr.reviews_rating,
pt.reviews_text, pt.languages_id as lngr
FROM (" . TABLE_PRODUCTS . " p left join " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c on (p.products_id = p2c.products_id), " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " pc)
LEFT JOIN reviews as pr ON (p.products_id = pr.products_id)
LEFT JOIN reviews_description as pt ON (pr.reviews_id = pt.reviews_id)
WHERE p.products_id = pd.products_id
AND p.products_id = pc.products_id
AND p.products_status = 1
AND pd.language_id = FLOOR($languages_id)
and p2c.categories_id <> '448'
ORDER BY pc.categories_id, pd.products_name");


Figaro
Gnidhal
comme la table était déjà appelée dans la requête, le left join est inutile :
Code
$products_query = tep_db_query("SELECT p.*,
pd.products_name, pd.products_description,
pc.categories_id,
pr.date_added as review_date, pr.customers_name, pr.reviews_rating,
pt.reviews_text, pt.languages_id as lngr
FROM (" . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " pc)
LEFT JOIN reviews as pr ON (p.products_id = pr.products_id)
LEFT JOIN reviews_description as pt ON (pr.reviews_id = pt.reviews_id)
WHERE p.products_id = pd.products_id
AND p.products_id = pc.products_id
AND p.products_status = 1
AND pd.language_id = FLOOR($languages_id)
and pc.categories_id <> '448'
ORDER BY pc.categories_id, pd.products_name");

devrait fonctionner
figaro
Bonjour et merci Gnidhal !
Cela fonctionne correctement. Je me posais encore une question car j'ai pas mal de categories a ne pas exporter.
Est il possible de faire le contraire ? d'appeler uniquement les categories a exporter ? si oui quelle serait la syntaxe ?
Merci pour ton aide.

Figaro
Gnidhal
Il faudrait te documenter sur les syntaxes sql avec les sites de sql (voir une recherche via GG)
mais tu as 2 possibilités pour filtrer tes catégories soit en inclusion et tu remplaces ton
and pc.categories_id <> '448'
par une liste de catégories à prendre en compte :
and pc.categories_id in ('446','449','450')
par exemple pour ces 3 catégories a considérer

soit par exclusion avec juste un not en plus dans la syntaxe
and pc.categories_id NOT in ('443','451','455','456')
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2013 Invision Power Services, Inc.