Tabelle Vorschaubilder

Liebes Forum :slight_smile: :slight_smile:

Jede Artikelvariante hat ja ein Vorschaubild. In welcher Tabelle / welchen Tabellen steht, welches Bild dafür genommen wird. Bzw. wie bekommt man das aus den Tabellen heraus.

In der Tabelle s_articles_img steht es glaube ich nicht…

Liebe Grüße

Kerstin :slight_smile:

möchte noch einmal hieran erinnern. Vielleicht irgendwelche Ideen ?

Doch - alle Artikelbilder stehen in s_articles_img. Das Vorschaubild hat den flag „main“ = 1. Bilder von Varianten werden jedoch etwas kompliziert gespeichert. Das wirst du dir genauer anschauen müssen.

Viele Grüße
https://www.digitvision.de

Varianten werden jedoch etwas kompliziert gespeichert.

Naja, genau um die Varianten geht es ja. Bin damit nicht weitergekommen. Weiß das jamand ?

Die Zuordnungen der Bilder zu Varianten werden auch in der Tabelle gespeichert - nur eben etwas „komplizierter“. Schau dir mal die Spalten „article_detail_id“ und „parent_id“ an. Damit solltest du an die gesuchten Datensätze kommen.

Viele Grüße
https://www.digitvision.de

Diese Spalten kenne ich natürlich. Damit erhält man alle Bilder, die den Varianten jeweils zugeordnet sind.

Es geht mir um das Vorschaubild, das in den Listings angezeigt wird und als erstes bei dem Artikel. Da muss es irgendwo noch ein “main” oder “kind” oder so geben.

Weiß das denn keiner ? Ich bräuchte  das dringend

Es geht mir um das Vorschaubild, das in den Listings angezeigt wird und als erstes bei dem Artikel

Das ist eigentlich das mit „main“ = 1 markierte Bild. Das hat mit Varianten auch nix zu tun.

Du gehst wie folgt vor. Vorausgesetzt du hast im Backend Artikelblatt in “Bilder” die “Konfiguration öffnen” etc schon gemacht.

Du suchst in der Datenbank mithilfe der Ordernumber die Artikel (articleID). Hier ist hinzuzufügen, dass du mit %LIKE% suchen musst, weil die Varianten-Artikel immer hinten ein .1 oder .2 etc… haben

SELECT * FROM `s_articles_details` WHERE `ordernumber` LIKE '%SW1234567%'

Anschliessend werden dir alle Variantenartikel angezeigt. 

Nehme jede einzelnes Ergebnis und die articleID. (hier als beispiel “23”) 

Gehe auf s_article_img und suche nach dem Article und dessen Bilder-Zuordnung.

SELECT * FROM `s_articles_img` WHERE `articleID` = 23

jede dieser Varianten hat dann sein eigenes “main” = 1

Hoffe es ist verständlich

 

Ah moment, ich musste mir das erst mal ansehen. Im Listung wird bei Artikeln mit Varianten das jeweilige Bild der Vorauswahl von den Varianten angezeigt, nicht das eingestellte Vorschaubild. Ist meiner Meinung nach Unsinn, wenn man im Listung ja noch keine Variante gewählt hat, aber naja. Jedenfalls in diesem Zusammenhang greift das mit main = 1 gar nicht! Sondern man muss die jeweilige Positionen der Varianten mit einbeziehen und dann erst von der 1. Varianate das jeweilige Bild holen. Also die Tabelle s_articles_details mit dem Feld „kind“ mit beachten.

Also ungefähr so:

SELECT ad.id, ad.articleID, ad.kind, a.main_detail_id, ai.parent_id, img.img, img.extension
FROM s_articles a, s_articles_details ad, s_articles_img ai 
LEFT JOIN s_articles_img img ON ( img.id = ai.parent_id )
WHERE ad.articleID = a.id 
AND a.id = 168
AND ad.kind = 1 
AND ai.article_detail_id = ad.id 

168 ist jetzt im Beispiel die Artikel ID. Könnte man auch auf die Nummer umstellen.

Die Spalte position in s_articles_img ist das Stichwort. Vielen Dank, damit klappt es.

Man muss glaube ich einfach nur bei der jeweiligen Variante in den parentIDs nach der kleinsten position suchen.

Braucht man überhaupt dieses …ad.kind=1 ?

Etwas anderes: Ich habe festgestellt, dass es in s_articles_img einige (66) Einträge mit detailID und parentID gibt, bei denen die parentID gar nicht existiert. Sind das Fehler in der Datenbank - und kann man diese Datensätze ungestraft löschen ?  

Vielen Dank und liebe Grüße

Kerstin :slight_smile:

Braucht man überhaupt dieses …ad.kind=1 ?

Ich würde mich nicht ganz auf die Position verlassen, mit „kind“ wird eindeutig die Variante definiert, die auch als Vorwahl eingestellt wurde. Und das muss nicht zwangsläufig die erste Position sein (musste das erst selber testen). 

 

Etwas anderes: Ich habe festgestellt, dass es in s_articles_img einige (66) Einträge mit detailID und parentID gibt, bei denen die parentID gar nicht existiert. Sind das Fehler in der Datenbank - und kann man diese Datensätze ungestraft löschen ?  

Bitte da mal nichts löschen, sonst gehen wo möglich die Bilder bei Varianten gar nicht mehr. Wenn mehrere Bilder und Varianten im Spiel sind, ist das ein komplexes Zusammenspiel.