Freitextfeld-Verwaltung, Einträge in der Datenbank unterschiedlich

Hallo Gemeinde,

hatte mir in der Freitext-Verwaltung Freitexte mit folgender Konfiguration angelegt:

Spaltennamen: attr10
Spaltentyp: Checkbox
SQL-Datentyp: INT (1)

Ich nutze diese Checkbox um im Listing bei diesem Artikel ein Badge anzeigen zu lassen oder nicht.

Leider klappt das nicht mehr. Obwohl die Checkbox angehakt ist, wird das Badge im Listing nicht angezeigt. Was aber bisher immer klappte. Ich habe dann mal die Einträge in der Datenbank geprüft. Unter s_articles_attributes in der Datenbank wird die Spalte attr10 angezeigt. Bei dem betroffenen Artikel steht in der Spalte eine 1 (bei äteren Artikeln steht in der Spalte “true”!). Ändere ich jetzt den Eintrag in der Spalte attr10 von “1” auf “true” bei dem betroffenen Artikel, wird mir das Badge nach Shopcache leeren wieder angezeigt!?

Komischerweise wird in der Datenbank unter “Struktur” für attr10 unter “Typ” “mediumtext” angezeigt. Sollte das nicht “int(11)” sein? Denn so wurde das doch im Backend unter Freitextfeld-Verwaltung angelegt!? Und warum werden bei älteren oder nicht geänderten Artikel in der Datenbank in der Spalte attr10 “true” oder “false” angezeigt und bei den von mir geänderten oder neu angelegten Artikeln eine “1” oder “0”?

Wie kann das passieren und wie kann ich das wieder korrigieren? Shopware-Version 5.2.14

Vielen Dank im Voraus für Hilfe.

Grüße
Michael

 

In der Datenbank keine Änderungen vornehmen. Du musst jetzt die Abfrage im Template erweitern so das beide Werte möglich sind.

Wie sieht denn deine Abtrage jetzt aus? Stell die mal bitte rein.

Uwe

Danke!

{block name='frontend_listing_box_article_new' append}
			 {if $sArticle.attr10 == "true"}
				
					{s name="ListingBoxColor"}{/s}
				
			{/if}
		{/block}

Wann wurde das denn geändert? Denn es betrifft auch andere Freitextfelder mit Checkbox…

Versuche es mal so:

{block name='frontend_listing_box_article_new' append}
			 {if $sArticle.attr10 == "true" || $sArticle.attr10 == "1"}
				
					{s name="ListingBoxColor"}{/s}
				
			{/if}
		{/block}

obwohl ich jetzt nicht genau weiß ob die 1 in Anführungszeichen stehen muss.

Uwe

1 „Gefällt mir“

Kann ich die Abfrage dann so ändern?

 {if $sArticle.attr10}

Das würde nämlich funktionieren…

@Tanny schrieb:

Kann ich die Abfrage dann so ändern?

{if $sArticle.attr10}

Das würde nämlich funktionieren…

Weiß ich jetzt nicht genau, aber ich glaube nicht, da ja in der Datenbank trotzem was drin ist wenn die Checkbox nicht angehagt ist, 0 oder false

Uwe

@useg schrieb:

@Tanny schrieb:

Kann ich die Abfrage dann so ändern?

{if $sArticle.attr10}

Das würde nämlich funktionieren…

Weiß ich jetzt nicht genau, aber ich glaube nicht, da ja in der Datenbank trotzem was drin ist wenn die Checkbox nicht angehagt ist, 0 oder false

Uwe

Das sollte wohl auch gehen. Denn es werden dann auch nur die Badge bei den Artikeln angezeigt die auf „true“ oder „1“ stehen…

Aber vielen Dank für den Hinweis. Wurde das mit dem Update auf .14 geändert? 

@Tanny schrieb:

Danke!

{block name=‚frontend_listing_box_article_new‘ append}
{if $sArticle.attr10 == „true“}

{s name=„ListingBoxColor“}{/s}

{/if}
{/block}

Wann wurde das denn geändert? Denn es betrifft auch andere Freitextfelder mit Checkbox…

Hallo,

seit Shopware 5.2 wird das so nicht mehr funktionieren, da ab da Checkboxfelder nur noch als int(1) abgespeichert werden, also als 0 (= false) und 1 (= true). Du müsstest also auf 0 oder 1 prüfen (und nicht auf einen String wie „true“ oder „1“).

Beste Grüße

Sebastian

Ich habe aber in der Datenbank in der Spalte attr10 noch Einträge mit „true / false“. Wenn ich nach Beidem abfrage klappt es aber. Es klappt aber auch so {if $sArticle.attr10}

@Tanny schrieb:

Ich habe aber in der Datenbank in der Spalte attr10 noch Einträge mit „true / false“. Wenn ich nach Beidem abfrage klappt es aber. Es klappt aber auch so {if $sArticle.attr10}

Hallo,

dann hast du das attr10 noch nicht kompatibel zu Shopware 5.2 gemacht ;), wenn es ein Checkboxfeld ist, aber noch „true“ und „false“ hat.

Beste Grüße

Sebastian

Hallo,

wie mache ich das kompatibel? Undecided

Wo steht das, dass das für 5.2 kompatibel gemacht werden muss? Habe ich was überlesen? Aber wie geschrieben, es klappt auch mit der doppelten Abfrage…

Danke und Grüße
Michael

@Tanny schrieb:

Hallo,

wie mache ich das kompatibel? Undecided

Wo steht das, dass das für 5.2 kompatibel gemacht werden muss? Habe ich was überlesen? Aber wie geschrieben, es klappt auch mit der doppelten Abfrage…

Danke und Grüße
Michael

Hallo,

befindet sich dein Feld denn im neuen Freitextfelder - Fieldset von Shopware beziehungsweise übernimmt er auch Änderungen bei dem Feld?

Kompatibilität siehe hier: Attribute system .

Beste Grüße

Sebastian

Du meinst hier im Backend?

Da steht das Feld drin! Ob es Änderungen annimmt, weiß ich jetzt nicht.

Ich stehe aber gerade auf dem Schlauch…warum muss ich die Kompatibilität anpassen? Ich bin User und kein Progi. Macht das Programm das nicht selber?

Grüße
Michael

@Tanny schrieb:

Du meinst hier im Backend?

image

Da steht das Feld drin! Ob es Änderungen annimmt, weiß ich jetzt nicht.

Ich stehe aber gerade auf dem Schlauch…warum muss ich die Kompatibilität anpassen? Ich bin User und kein Progi. Macht das Programm das nicht selber?

Grüße
Michael

Hallo,

also wenn dein Feld attr10 vom Typ int(1) ist, kann es gar keine Werte „true“ und „false“ beinhalten ;). Also ist das Feld ja kompatibel. Darum ging es bei der Sache doch nur. Hier reicht also die Prüfung auf == 1 aus.

Beste Grüße

Sebastian

Ein Ausschnitt aus der Datenbank. Tabelle “s_articles_attributes”

@sschreier schrieb:

Hallo,

also wenn dein Feld attr10 vom Typ int(1) ist, kann es gar keine Werte „true“ und „false“ beinhalten ;). Also ist das Feld ja kompatibel. Darum ging es bei der Sache doch nur. Hier reicht also die Prüfung auf == 1 aus.

Beste Grüße

Sebastian

Hallo Sebastian,

Michael hat aber noch alte Werte  von vor der Umstellung drin und darum gibt es noch „true“ und „false“ Werte in der Datenbank. Wenn er nun einen älteren Artikel im Backend aufruft und speichert wurde er die neuen Werte 0 und 1 in die Tabelle speichern, will er aber nicht da es ja ein großer Aufwand wäre.

Mann könnte das ganze nun mit einem Sql-Befehl in MyPHP-Admin anpassen und „false“ mit 0 und „true“ mit 1 ersetzten, muss man aber nicht.

Uwe