Jump to content

Ερώτημα σε MySQL για αναπαραγωγή XML για skroutz


poukamisas
 Share

Recommended Posts

Καλημέρα,

Δουλεύω σε presta 1.6.1. και έχω το παρακάτω ερώτημα σε MySQL με το οποίο το έχω βάλει σε μια μεταβλητή string σε αρχείο PHP και σε συνδυασμό με PHP  προσπαθώ να ολοκληρώσω ένα  XML  για το skroutz σε γενικές γραμμές δουλεύουν όλα καλά, το πρόβλημά μου είναι πως θα μπορέσω να βγάλω σε χωριστά πεδία  το χρώμα και το μέγεθος των προιόντων, καθώς το μόνο που κατάφερα είναι να το κάνω να βγαίνουν σαν συνδιασμός π.χ   combination 32,κόκκινο ενώ θα ήθελα να είναι Size 32  και color κόκκινο. Στην ουσία το μόνο που θέλω είναι αν γνωρίζει να μου πει κάποιος  τον κώδικα σε MySQL για να αντικαταστήσω το πεδίο που αναπαράγεται με το κώδικα  "GROUP_CONCAT(DISTINCT(pal.name) SEPARATOR ', ') as combination, " (το οποίο το έχω με κόκκινο χρώμα παρακάτω για να είναι εύκολα εντοπίσιμο) με το νέο κώδικα που θα μου δωθεί έτσι ώστε να έχω το επιθυμητό αποτέλεσμα. Ακολουθεί το ερώτημα Sql, ώστε να δείξω τι ακριβώς έχω κάνει (όσον αφορά το Sql κομμάτι). Ευχαριστώ εκ των προτέρων.

SELECT 
   p.id_product as Unique_ID, 
   
    p.reference as MPN,
    
    pl.name as Name,
    
    concat('https://','loly.gr','/',pl.link_rewrite,'/',p.id_product,'-',REPLACE(pl.name,' ','-'),'.html') as Product_Link,
    
    concat( 'https://loly.gr/img/p/',mid(im.id_image,1,1),'/', if (length(im.id_image)>1,concat(mid(im.id_image,2,1),'/'),''),if (length(im.id_image)>2,concat(mid(im.id_image,3,1),'/'),''),if (length(im.id_image)>3,concat(mid(im.id_image,4,1),'/'),''),if (length(im.id_image)>4,concat(mid(im.id_image,5,1),'/'),''), im.id_image, '.jpg' ) AS Image_Link,
    
    GROUP_CONCAT(DISTINCT (cl.name) SEPARATOR ',') as Category_Name,
    
    ROUND(p.price,2) as Price,
   
    if(pq.quantity>=1,REPLACE(pq.quantity,pq.quantity,'Άμεση παραλαβή / Παράδοση 1 έως 3 ημέρες'),'Κατόπιν Παραγγελίας' ) as Availability,
    
   if(ISNULL(m.name),'OEM',m.name) as manufacturer,
   
   GROUP_CONCAT(DISTINCT(pal.name) SEPARATOR ', ') as combination, 


if(ascii(LEFT(MID(pl.description_short,INSTR(MID( pl.description_short ,5),'>')+5),INSTR(MID(pl.description_short,INSTR(MID( pl.description_short ,5),'>')+5),'>')-7))=60,'',if(ascii(LEFT(MID(pl.description_short,INSTR(MID( pl.description_short ,5),'>')+5),INSTR(MID(pl.description_short,INSTR(MID( pl.description_short ,5),'>')+5),'>')-7))=13,'',if(ascii(LEFT(MID(pl.description_short,INSTR(MID( pl.description_short ,5),'>')+5),INSTR(MID(pl.description_short,INSTR(MID( pl.description_short ,5),'>')+5),'>')-7))=10,'',LEFT(MID(pl.description_short,INSTR(MID( pl.description_short ,5),'>')+5),INSTR(MID(pl.description_short,INSTR(MID( pl.description_short ,5),'>')+5),'>')-7)))) as Short_Description,
  
  pq.quantity as Quantity,
 
 if(pq.quantity>=1,'Y','N') as InStock 

FROM ps_product p 
 LEFT JOIN ps_image im ON p.id_product = im.id_product
 LEFT JOIN ps_product_attribute pa ON (p.id_product = pa.id_product) 
 LEFT JOIN ps_stock_available pq ON (p.id_product = pq.id_product ) 
 LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product) 
 LEFT JOIN ps_product_attribute_combination pac ON (pa.id_product_attribute = pac.id_product_attribute)
 LEFT JOIN ps_category_product cp ON (p.id_product = cp.id_product)
 LEFT JOIN ps_category_lang cl ON (cp.id_category = cl.id_category)
 LEFT JOIN ps_category c ON (cp.id_category = c.id_category)
 LEFT JOIN ps_attribute_lang pal ON (pac.id_attribute = pal.id_attribute ) 
 LEFT JOIN ps_manufacturer m ON (p.id_manufacturer = m.id_manufacturer)
 
 WHERE p.active = 1 AND pl.id_lang = (SELECT id_lang FROM ps_lang WHERE active = '1' ORDER BY id_lang ASC LIMIT 1) AND p.id_shop_default = (SELECT id_shop FROM ps_shop WHERE active = '1' ORDER BY id_shop ASC LIMIT 1) AND cl.id_lang = 1 AND c.id_shop_default = 1 

GROUP BY  pac.id_product_attribute

Share this post


Link to post
Share on other sites

  • 4 weeks later...

Κλασικό πρόβλημα όταν πας να συνδεθεις με το skroutz ,πιθανότατο να μην σε συνδέουν και να το βρεις ,και στο τέλος να αναγκάσεις να κάνεις ξεχωριστώ προϊών ανά χρώμα. 

Αντί να φας τόσες ώρες συν της ώρες που είδη έχεις φάει, πάρε το module που υπάρχει και δουλεύει μια χαρά.

  • Like 1

Share this post


Link to post
Share on other sites

  • 4 weeks later...

Καλημέρα, μπορείς να μου πεις ποιο είναι αυτό το module;, Ρωτάω γιατί αγόρασα ένα, το οποίο ώσπου να το φέρουμε εκεί που θέλουμε σε συνεργασία με τον κατασκευαστή είδαμε και πάθαμε και επιπλέον στην τελική ανάλυση δεν μου εμφανίζει προιόντα που ανήκουν σε παραπάνω απο μία κατηγορίες και αυτό όπως καταλαβαίνεις είναι πρόβλημα.

Share this post


Link to post
Share on other sites

Για αρχή το query κάνει "μία μέρα" να τρέξει.

Θα πρέπει να αφαιρέσεις υπολογισμούς άχρηστους που βάζεις να κάνει η βάση και να τους κάνεις στην php.

Αυτά πρέπει να φύγουν από το query

if(pq.quantity>=1,REPLACE(pq.quantity,pq.quantity,'Άμεση παραλαβή / Παράδοση 1 έως 3 ημέρες'),'Κατόπιν Παραγγελίας' ) as Availability,    
if(ISNULL(m.name),'OEM',m.name) as manufacturer,

if(pq.quantity>=1,'Y','N') as InStock

Από την βάση θα ζητάς quantity και manufacturer.

To short description δεν χρειάζεται στο skroutz. Οπότε μπορείς να το αφαιρέσεις.

Αν κάνεις τις παραπάνω αλλαγές ο χρόνος που χρειάζεται να τρέξει το query θα πέσει στα μισά.

Στις κατηγορίες το separator πρέπει να είναι ' > ' αλλά έχει λάθος το query και δεν βγάζει τις κατηγορίες με την σωστή σειρά.

To mpn κανονικά στην βάση είναι το suplier_reference ... όχι το reference.

Ακόμη το unique id δεν είναι unique όπως είναι τώρα το query. Θα πρέπει να είναι συνδυασμός του product id με το combination ίσως?

Τώρα σε αυτό που ζητάς ... Είναι δύσκολο έτσι όπως είναι το query. Το μόνο που βλέπω εύκολο είναι να βάλεις και το attribute name πριν από την τιμή του  attribute και στην php να κάνεις αυτό που θέλεις. Δηλαδή αν ένα προϊόν είναι μέγεθος 50 και χρώμα πράσινο να το βγάζει έτσι "Size:50 , Color:Green"

Θα το κοιτάξω γιατί με ενδιαφέρει και εμένα το συγκεκριμένο. Απλά θα χρειαστώ λίγο χρόνο να δω πως είναι η βάση.

Υ.Γ. Θα πρέπει να μας δώσεις και το php public όταν ολοκληρωθεί.

 

 

Share this post


Link to post
Share on other sites

  • 2 weeks later...

Μέχρι τώρα με σωστές κατηγορίες. Χωρίς combination. Είναι πολύ γρήγορο.

Τα product link παίζουν αλλά δεν είναι 100% σωστά (και πριν δεν ήταν). Όταν μπει και τα combination θα είναι σωστά. 

select p.id_product,
pl.name,
p.quantity,
round(p.price,2) as Price,
p.reference as MPN,
m.name as manufacturer,
concat('https://','example.gr','/el/',cl.link_rewrite,'/',p.id_product,'-',pl.link_rewrite,'.html') as Product_Link,
concat( 'https://example.gr/img/p/',mid(im.id_image,1,1),'/', if (length(im.id_image)>1,concat(mid(im.id_image,2,1),'/'),''),if (length(im.id_image)>2,concat(mid(im.id_image,3,1),'/'),''),if (length(im.id_image)>3,concat(mid(im.id_image,4,1),'/'),''),if (length(im.id_image)>4,concat(mid(im.id_image,5,1),'/'),''), im.id_image, '.jpg' ) AS Image_Link,    
(select group_concat(cl.name order by c2.level_depth asc separator ' > ')
    from ps_category_lang as cl
    join ps_category as c2 on c2.id_category = cl.id_category
    where c2.nleft <= c.nleft and c2.nright >= c.nright and cl.id_lang= '2' and c2.id_category > '2') as category_path
from ps_product as p
left join ps_category_lang as cl on cl.id_category = p.id_category_default and cl.id_lang = '2'
left join ps_product_lang as pl on pl.id_product = p.id_product
left join ps_category as c on c.id_category = p.id_category_default
left join ps_manufacturer m on p.id_manufacturer = m.id_manufacturer
left join ps_image im on im.id_product = p.id_product and im.position = '1'
where pl.id_lang = '2' and p.active = '1'

 

Edited by sanctusmob (see edit history)

Share this post


Link to post
Share on other sites

Αυτό είναι το query για όποιον ενδιαφέρετε χωρίς να έχει combination

select 
p.id_product,
pl.name,
sa.quantity,
round(p.price,2) as Price,
p.reference as MPN,
m.name as manufacturer,
concat('https://','example.gr','/el/',cl.link_rewrite,'/',p.id_product,'-',pl.link_rewrite,'.html') as Product_Link,
concat( 'https://example.gr/img/p/',mid(im.id_image,1,1),'/', if (length(im.id_image)>1,concat(mid(im.id_image,2,1),'/'),''),if (length(im.id_image)>2,concat(mid(im.id_image,3,1),'/'),''),if (length(im.id_image)>3,concat(mid(im.id_image,4,1),'/'),''),if (length(im.id_image)>4,concat(mid(im.id_image,5,1),'/'),''), im.id_image, '.jpg' ) AS Image_Link,    
(select group_concat(cl.name order by c2.level_depth asc separator ' > ')
    from ps_category_lang as cl
    join ps_category as c2 on c2.id_category = cl.id_category
    where c2.nleft <= c.nleft and c2.nright >= c.nright and cl.id_lang= '2' and c2.id_category > '2') as category_path
from ps_product as p
left join ps_category_lang as cl on cl.id_category = p.id_category_default and cl.id_lang = '2'
left join ps_product_lang as pl on pl.id_product = p.id_product
left join ps_stock_available as sa on sa.id_product = p.id_product and sa.id_product_attribute = 0
left join ps_category as c on c.id_category = p.id_category_default
left join ps_manufacturer as m on p.id_manufacturer = m.id_manufacturer
left join ps_image as im on im.id_product = p.id_product and im.position = '1'
where pl.id_lang = '2' and p.active = '1' 

 

Share this post


Link to post
Share on other sites

Αυτό είναι το query για όποιον ενδιαφέρετε ΜΕ combination

Σαν product id για να είναι μοναδικό κάνω concat το product id με το product attribute id

Στα url θέλει λίγο δουλειά, αλλά η έκδοση που έχω είναι σε 1.7 που έχω combinations και αν θυμάμαι καλά είναι διαφορετικά από την 1.6.

@poukamisas περιμένουμε το php

Υ.Γ. αν στο skroutz του στείλεις διαφορετικά product id από αυτά που είχες παλιά υπάρχει χρέωση για όποιον δεν το ξέρει.

Υ.Γ.2 Διαφορά στον χρόνο εκτέλεσης από το αρχικό query

Found rows: 2.055  Warnings: 0  Duration for 1 query: 19,765 sec. (+ 6,938 sec. network) */

Found rows: 2.054  Warnings: 0  Duration for 1 query: 1,188 sec. (+ 0,187 sec. network) */

select 
concat(p.id_product,pac.id_product_attribute) as Product_id,
pl.name,
group_concat(pal.name separator ' ') as combination, 
sa.quantity,
round(p.price,2) as Price,
p.reference as MPN,
m.name as manufacturer,
concat('https://','example.gr','/el/',cl.link_rewrite,'/',p.id_product,'-',pl.link_rewrite,'.html') as Product_Link,
concat( 'https://example.gr/img/p/',mid(im.id_image,1,1),'/', if (length(im.id_image)>1,concat(mid(im.id_image,2,1),'/'),''),if (length(im.id_image)>2,concat(mid(im.id_image,3,1),'/'),''),if (length(im.id_image)>3,concat(mid(im.id_image,4,1),'/'),''),if (length(im.id_image)>4,concat(mid(im.id_image,5,1),'/'),''), im.id_image, '.jpg' ) AS Image_Link,    
(select group_concat(cl.name order by c2.level_depth asc separator ' > ')
    from ps_category_lang as cl
    join ps_category as c2 on c2.id_category = cl.id_category
    where c2.nleft <= c.nleft and c2.nright >= c.nright and cl.id_lang= '2' and c2.id_category > '2') as category_path
from ps_product as p
left join ps_category_lang as cl on cl.id_category = p.id_category_default and cl.id_lang = '2'
left join ps_product_lang as pl on pl.id_product = p.id_product
left join ps_stock_available as sa on sa.id_product = p.id_product
left join ps_category as c on c.id_category = p.id_category_default
left join ps_manufacturer as m on p.id_manufacturer = m.id_manufacturer
left join ps_image as im on im.id_product = p.id_product and im.position = '1'
left join ps_product_attribute as pa on p.id_product = pa.id_product
left join ps_product_attribute_combination pac on pac.id_product_attribute = pa.id_product_attribute
left join ps_attribute_lang pal on pal.id_attribute = pac.id_attribute and pal.id_lang = '2'
where pl.id_lang = '2' and p.active = '1' and sa.id_product_attribute = pa.id_product_attribute
group by pac.id_product_attribute
order by p.id_product

 

Edited by sanctusmob (see edit history)

Share this post


Link to post
Share on other sites

Βελτίωσα λίγο το query με τα combination για να είναι έτοιμο για το skroutz.

Έβαλα στο product name το όνομα του κατασκευαστή.

Έβαλα στο combination attribute name και value π.χ.  Cup:D | Σουτιέν:75

Έφτιαξα τα url να σε πηγαίνουν στο συγκεκριμένο combination.

select 
concat(p.id_product,pac.id_product_attribute) as Product_id,
concat(m.name,' ',pl.name) as Product_name,
group_concat(agl.public_name,':', pal.name separator ' | ') as combination, 
sa.quantity,
round(p.price,2) as Price,
p.reference as MPN,
m.name as manufacturer,
concat('https://','example.gr','/el/',cl.link_rewrite,'/',p.id_product,'-',pac.id_product_attribute,'-',pl.link_rewrite,'.html') as Product_Link,
concat( 'https://example.gr/img/p/',mid(im.id_image,1,1),'/', if (length(im.id_image)>1,concat(mid(im.id_image,2,1),'/'),''),if (length(im.id_image)>2,concat(mid(im.id_image,3,1),'/'),''),if (length(im.id_image)>3,concat(mid(im.id_image,4,1),'/'),''),if (length(im.id_image)>4,concat(mid(im.id_image,5,1),'/'),''), im.id_image, '.jpg' ) AS Image_Link,    
(select group_concat(cl.name order by c2.level_depth asc separator ' > ')
    from ps_category_lang as cl
    join ps_category as c2 on c2.id_category = cl.id_category
    where c2.nleft <= c.nleft and c2.nright >= c.nright and cl.id_lang= '2' and c2.id_category > '2') as category_path
from ps_product as p
left join ps_category_lang as cl on cl.id_category = p.id_category_default and cl.id_lang = '2'
left join ps_product_lang as pl on pl.id_product = p.id_product
left join ps_stock_available as sa on sa.id_product = p.id_product
left join ps_category as c on c.id_category = p.id_category_default
left join ps_manufacturer as m on p.id_manufacturer = m.id_manufacturer
left join ps_image as im on im.id_product = p.id_product and im.position = '1'
left join ps_product_attribute as pa on p.id_product = pa.id_product
left join ps_product_attribute_combination as pac on pac.id_product_attribute = pa.id_product_attribute
left join ps_attribute_lang as pal on pal.id_attribute = pac.id_attribute and pal.id_lang = '2'
left join ps_attribute as a on a.id_attribute = pal.id_attribute
left join ps_attribute_group_lang agl on agl.id_attribute_group = a.id_attribute_group and agl.id_lang = '2'
where pl.id_lang = '2' and p.active = '1' and sa.id_product_attribute = pa.id_product_attribute
group by pac.id_product_attribute
order by p.id_product

 

Found rows: 2.079  Warnings: 0  Duration for 1 query: 0,985 sec. (+ 0,156 sec. network)

  • Like 1

Share this post


Link to post
Share on other sites

On 19/11/2017 at 9:57 AM, Site-View said:

Κλασικό πρόβλημα όταν πας να συνδεθεις με το skroutz ,πιθανότατο να μην σε συνδέουν και να το βρεις ,και στο τέλος να αναγκάσεις να κάνεις ξεχωριστώ προϊών ανά χρώμα. 

Αντί να φας τόσες ώρες συν της ώρες που είδη έχεις φάει, πάρε το module που υπάρχει και δουλεύει μια χαρά.

Εμεις απο την αρχη θεωρούμε ξεχωριστα προϊόντα όταν αλλάζουν χρώμα και τα περναμε ετσι και δεν υπαρχει θεμα .Μιας και το barcode ειναι διαφορετικο εαν αλλαζει χρωμα 

Share this post


Link to post
Share on other sites

Το συγκεκριμένο query σου βγάζει όλα τα προϊόντα μοναδικά με βάζει το χρώμα αλλά και το μέγεθος ή και παραπάνω συνδυασμούς. (π.χ. μέγεθος σουτιέν, χρώμα, cup)

Όταν κάνεις combination μπορείς να βάλεις διαφορετικό barcode ανά combination.

Το combination είναι ότι καλύτερο υπάρχει γενικός και από άποψη seo και χρόνου.

Έχω φτιάξει ένα bash script που παράγει το skroutz xml και τους το έχω στείλει για να πούνε αν το εγκρίνουν.

Share this post


Link to post
Share on other sites

  • 3 weeks later...

Άσχετο με το θέμα του MySQL ερωτήματος, αλλά σχετικό με το Skroutz xml.

Από ό,τι βλέπω εδώ:

merchants.skroutz.gr/merchants/support/guidelines/products_feed

Κάθε προϊόν πρέπει να έχει MPN και βάρος.

Αν εγώ δεν έχω ορίσει πουθενά βάρος και όλα είναι 0.0, υπάρχει θέμα; Ή απλά το XML στην τιμή εκείνη θα παίρνει τις τιμές 0.0; Επίσης το MPN ποιο πεδίο είναι στο prestashop; Πρέπει να ναι συμπληρωμένο οπωσδήποτε;

Share this post


Link to post
Share on other sites

Quote

To mpn κανονικά στην βάση είναι το suplier_reference ... όχι το reference.

Το mpn είναι ο κωδικός εργοστασίου-κατασκευαστή. Απλά πολλές φορές το βάζουν στο πεδίο reference γιατί μετά είναι εύκολο να το ενσωματώσεις στο url. Ναι το mpn και το barcode βοηθάει στο rank σου.

Το βάρος χρειάζεται μόνο για τον υπολογισμό τον μεταφορικών. Αν τους το στέλνεις το πεδίο με τα μεταφορικά τότε δεν χρειάζεται το βάρος.

Edited by sanctusmob (see edit history)

Share this post


Link to post
Share on other sites

  • 1 month later...

@poukamisas άφαντος... ωραίος.

Έφτιαξα ένα php που παράγει το xml για skroutz και bestprice.

Το μόνο που πρέπει να αλλάξει κάποιος είναι το example με το όνομα από το κατάστημα του. 

Είναι για prestashop 1.7 .

Το συγκεκριμένο είναι για μαγαζί με εσώρουχα. Οπότε έχουμε μέγεθος σουτίεν που είναι συνδυασμός δύο μεγεθών.

Με λίγες αλλαγές μπορεί να το βάλει κάποιος σε ότι κατάστημα θέλει.

 

<?php
$databaseConfig = include 'app/config/parameters.php';

$servername = $databaseConfig[parameters][database_host];
$username = $databaseConfig[parameters][database_user];
$password = $databaseConfig[parameters][database_password];
$database = $databaseConfig[parameters][database_name];
// Create connection
$link = mysqli_connect("$servername", "$username", "$password", "$database");

//set charset
mysqli_set_charset($link, "utf8");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$sql = "select
p.id_product as Product_id,
concat(m.name,' ',pl.name) as Product_name,
group_concat(distinct case when agl.id_attribute_group <> '6' and agl.id_attribute_group <> '5' and agl.id_attribute_group <> '4' then pal.name else null end order by agl.id_attribute_group desc separator ',') AS size,
group_concat(case when agl.id_attribute_group = '5' or agl.id_attribute_group = '4' then pal.name else null end order by agl.id_attribute_group desc separator ',') AS bra_size,
group_concat(distinct case when agl.id_attribute_group = '6' then pal.name else null end order by agl.id_attribute_group desc separator ',') AS color,
sa.quantity as quantity,
round((p.price-(p.price*sp.reduction))*1.24,2) as Price,
p.reference as MPN,
m.name as manufacturer,
concat('https://','example.gr','/el/',cl.link_rewrite,'/',p.id_product,'-',pac.id_product_attribute,'-',pl.link_rewrite,'.html') as Product_Link,
concat( 'https://example.gr/img/p/',mid(im.id_image,1,1),'/', 
	if (length(im.id_image)>1,concat(mid(im.id_image,2,1),'/'),''),
	if (length(im.id_image)>2,concat(mid(im.id_image,3,1),'/'),''),
	if (length(im.id_image)>3,concat(mid(im.id_image,4,1),'/'),''),
	if (length(im.id_image)>4,concat(mid(im.id_image,5,1),'/'),''), im.id_image, '.jpg' ) AS Image_Link,
(select group_concat('https://example.gr/img/p/',mid(im2.id_image,1,1),'/', 
	if (length(im2.id_image)>1,concat(mid(im2.id_image,2,1),'/'),''),
	if (length(im2.id_image)>2,concat(mid(im2.id_image,3,1),'/'),''),
	if (length(im2.id_image)>3,concat(mid(im2.id_image,4,1),'/'),''),
	if (length(im2.id_image)>4,concat(mid(im2.id_image,5,1),'/'),''), im2.id_image, '.jpg' separator ',')
	from ps_image as im2 
	where im2.position > '1' and im2.id_product = p.id_product) AS extra_images,
(select group_concat(cl.name order by c2.level_depth asc separator ' > ')
    from ps_category_lang as cl
    join ps_category as c2 on c2.id_category = cl.id_category
    where c2.nleft <= c.nleft and c2.nright >= c.nright and cl.id_lang= '2' and c2.id_category > '2') as category_path
from ps_product as p
left join ps_category_lang as cl on cl.id_category = p.id_category_default and cl.id_lang = '2'
left join ps_product_lang as pl on pl.id_product = p.id_product
left join ps_stock_available as sa on sa.id_product = p.id_product
left join ps_category as c on c.id_category = p.id_category_default
left join ps_manufacturer as m on p.id_manufacturer = m.id_manufacturer
left join ps_image as im on im.id_product = p.id_product and im.position = '1'
left join ps_product_attribute as pa on p.id_product = pa.id_product
left join ps_product_attribute_combination as pac on pac.id_product_attribute = pa.id_product_attribute
left join ps_attribute_lang as pal on pal.id_attribute = pac.id_attribute and pal.id_lang = '2'
left join ps_attribute as a on a.id_attribute = pal.id_attribute
left join ps_attribute_group_lang agl on agl.id_attribute_group = a.id_attribute_group and agl.id_lang = '2'
left join ps_specific_price as sp on sp.id_product = p.id_product
where pl.id_lang = '2' and p.active = '1' and sa.id_product_attribute = pa.id_product_attribute
group by p.id_product
order by p.id_product;";

header("Content-Type:text/xml; charset=utf-8");
print '<?xml version="1.0" encoding="UTF-8"?>';
print '<example>';
print '<created_at>' . date("Y-m-d H:m") . '</created_at>';
print '<products>';

/*
if ($result = mysqli_query($link, $sql)) {
    printf("Select returned %d rows.\n", mysqli_num_rows($result));
  
}
*/

$result = mysqli_query($link, $sql);

// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.
if (!$result) {
    $message  = 'Invalid query: ' . mysqli_error($link) . "\n";
    $message .= 'Whole query: ' . $sql;
    die($message);
}
while ($row = $result->fetch_object()) {
	
	$availabilty="Κατόπιν Παραγγελίας";
	$instock="N";
	$quantity=$row->quantity;
	if($quantity > 0) {
		$availabilty="Παράδοση 1 έως 3 ημέρες";
		$instock="Y";
	}
	$colors=$row->color;
	$color=explode(",", $colors);
	
	$temp_size=$row->size;
	
	if(!empty($temp_size)){
		$size = $temp_size;
	}else {
		$temp_brasizes = $row->bra_size;
		$brasizes = explode(",", $temp_brasizes);
		$size_elements = count($brasizes);		
		$size="";
		for($i=0; $i<=($size_elements/2)-1; $i++) {
			if($i < ($size_elements/2)-1){
				$size= $size . $brasizes[$i] . $brasizes[$i+($size_elements/2)] . ',';
			}else{
				$size= $size . $brasizes[$i] . $brasizes[$i+($size_elements/2)];
			}				
		}
		
	}
	$temp_name=$row->Product_name;
	if (strpos(strtolower($temp_name), strtolower($color[0])) !== false) {
   	$name=$temp_name;
	}else{
		$name=$temp_name . ' ' .  $color[0];
	}

	$im_count=0;	
	$temp_extra_images=$row->extra_images;
	if(!empty($temp_extra_images)){
		$extra_image = explode(",", $temp_extra_images);
		$im_count=count($extra_image);
	}
	
	
	print '<product>';
	print '<id>' . $row->Product_id . '</id>';
    print '<name><![CDATA[' . $name . ']]></name>';
	print '<link><![CDATA[' . $row->Product_Link . ']]></link>';
	print '<image><![CDATA[' . $row->Image_Link . ']]></image>';
	if($im_count>0) {
		for($i=0; $i<=$im_count-1; $i++) {
				print '<additional_image><![CDATA[' . $extra_image[$i] . ']]></additional_image>';
		}
	}
	print '<category><![CDATA[' . $row->category_path . ']]></category>';
	print '<price_with_vat>' . $row->Price . '</price_with_vat>';
	print '<mpn>' . $row->MPN . '</mpn>';
	print '<manufacturer><![CDATA[' . $row->manufacturer . ']]></manufacturer>';
	print '<instock>' . $instock . '</instock>';
	print '<color>' . $color[0] . '</color>';
	print '<size>' . $size . '</size>';
	print '<availability>' . $availabilty . '</availability>'  ;  
   print "</product>";
}

print "</products>";
print "</example>";
/* free result set */
mysqli_free_result($result);

mysqli_close($link);

?>

 

  • Like 2

Share this post


Link to post
Share on other sites

@sanctusmob Θα πρότεινα κάποιος οδηγός με το αρχικό πρόθεμα [HOW-TO]. Γιατί αν μαζέψουμε πολλά pinned,μετά τα νέα θα πετάξουν 2η σελίδα. Ελπίζω να είναι κατανοητό κάτι τέτοιο.

Share this post


Link to post
Share on other sites

9 minutes ago, tapanda.gr said:

@sanctusmob Θα πρότεινα κάποιος οδηγός με το αρχικό πρόθεμα [HOW-TO]. Γιατί αν μαζέψουμε πολλά pinned,μετά τα νέα θα πετάξουν 2η σελίδα. Ελπίζω να είναι κατανοητό κάτι τέτοιο.

Sure

Share this post


Link to post
Share on other sites

  • 2 months later...

Καλησπέρα,

στο δικό μας eshop παιδευόμαστε .... χρόνια με ένα module για το σκρουτζ το οποίο ΔΕΝ στέλνει σωστά τα additional images ενώ υπάρχουν στο site! Σε επικοινωνία που είχαμε με την Σκρουτζ (γιατί με τον κατασκευαστή του module δεν υπάρχει συνεννόηση) μου είπαν ότι φαίνεται λάθος η τιμή που στέλνει το xml και γιαυτό το λόγο ΔΕΝ παίρνει τις εξτρά φωτό του προϊόντος.... και φυσικά δεν δέχονται να μπούμε στην πλατφόρμα, αφού είναι υποχρεωτικό πεδίο τα additional images.

Καμιά βοήθεια ως προς αυτό μπορείτε να μας δώσετε;

Ευχαριστούμε εκ των προτέρων!

     

Share this post


Link to post
Share on other sites

2 hours ago, sanctusmob said:

Στείλε ένα δείγμα από 2 προϊόντα από το xml σου.

Καλημέρα και ευχαριστώ πάρα πολύ για την άμεση απάντηση,

είναι το link για να δείτε το αρχείό, δυστυχώς δεν ξέρω πως μπορώ να κάνω ενδεικτικά ένα αρχείο και για αυτό το λόγο σας στέλνω το link, δεν ξέρω αν είναι δόκιμο. 

 

Ευχαριστώ και πάλι!!

Edited by Foura (see edit history)

Share this post


Link to post
Share on other sites

Βγάλε το url από το feed. Μπορούσες να το στείλεις με pm. 

Δεν έχει μέσα στο xml καν additional images.

Ποιος είναι ο κατασκευαστής του module?

Share this post


Link to post
Share on other sites

νομίζω Netcraft... 

Πες μου σε παρακαλώ, αυτό που μου λένε είναι ότι δεν τα στέλνει σαν additional images αλλά σαν image 1, image 2 κτλ.

και γιαυτό το λόγο η Σκρουτζ δεν μπορεί να τα δει.

Έχεις κάτι να προτείνεις;

Ευχαριστώ 

Share this post


Link to post
Share on other sites

2 hours ago, sanctusmob said:

Βγάλε το url από το feed. Μπορούσες να το στείλεις με pm. 

Δεν έχει μέσα στο xml καν additional images.

Ποιος είναι ο κατασκευαστής του module?

νομίζω Netcraft... 

Πες μου σε παρακαλώ, αυτό που μου λένε είναι ότι δεν τα στέλνει σαν additional images αλλά σαν image 1, image 2 κτλ.

και γιαυτό το λόγο η Σκρουτζ δεν μπορεί να τα δει.

Έχεις κάτι να προτείνεις;

Ευχαριστώ 

Share this post


Link to post
Share on other sites

  • 3 months later...

Kαλησπέρα !

Έχουμε στείλει το XML του καταστήματός μας (από το MODULE) στον Skroutz και εμφανίζει σε όλα μας τα προϊόντα τον κωδικό τους (reference) .

Π.χ.

<store name="Locoss Team M. IKE" url="https://locoss.com/en/" encoding="utf8">

<created_at>2018-10-01 16:22</created_at>

<products>

<product>

<product_id>8435364308929</product_id>

<name>Ηλεκτρική Οθόνη Τοίχου iggual PSIES200 200 x 200 cm S0203724

Πως θα μπορούσαμε να αφαιρέσουμε το reference από τα προϊόντα του XML;

Share this post


Link to post
Share on other sites

  • 5 months later...
On 10/2/2018 at 1:21 PM, P Souxes said:

Kαλησπέρα !

Έχουμε στείλει το XML του καταστήματός μας (από το MODULE) στον Skroutz και εμφανίζει σε όλα μας τα προϊόντα τον κωδικό τους (reference) .

Π.χ.

<store name="Locoss Team M. IKE" url="https://locoss.com/en/" encoding="utf8">

<created_at>2018-10-01 16:22</created_at>

<products>

<product>

<product_id>8435364308929</product_id>

<name>Ηλεκτρική Οθόνη Τοίχου iggual PSIES200 200 x 200 cm S0203724

Πως θα μπορούσαμε να αφαιρέσουμε το reference από τα προϊόντα του XML;

Θα πρέπει να μιλήσεις με αυτόν που έφτιαξε το module που αγόρασες... Δεν έχουμε τον κώδικα του...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More