Noch ne Frage;-)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Noch ne Frage;-)

    Nachdem die erste Frage so schnell und super beantwortet wurde (schleim!), schieße ich die zweite nochmal hinterher:

    Ich habe diverse Artikel im Shop, bei denen das Material häufig dasselbe ist. Nun würde ich gerne nachträglich eine Art Update auf die Artikel-Bezeichnung durchführen, bei der der Material-Name mit einem Link belegt wird. Und zwar logischerweise ohne daß der Rest-Inhalt dabei gelöscht wird. Geht das überhaupt???

    Also ich habe z.B. in der Materialbeschreibung stehen:

    Traumhafte Figur, sehr detailiert
    Material: Weissmetall
    Höhe ca.: 20 cm

    Nun soll das Wort Weissmetall mit einem Link hinterlegt werden (und zwar bei allen Artikeln, bei denen das Material Weissmetall ist).

    Die Tabelle heißt 'Artikel' und das Feld heißt 'Beschreibung'

    Man müßte jetzt wohl irgendwie innerhalb der Abfrage nach dem Wort Weissmetall suchen und gleichzeitig nur dieses eine Wort "replacen"...

    Wie bekommt man so etwas hin???

    Gleichzeitig möchte ich in einer weiteren Abfrage bei allen Artikeln in der Beschreibung den Passus "versandkostenfrei" ergänzen, wo der Artikel-Wert 100 Euro oder größer ist. Das Problem ist immer das gleiche...wenn ich update dürfte ja nur das Wort versandkostenfrei erscheinen; der Rest wäre weg...wie geht das bloss?

    Gruß KhanSingh

  • #2
    habs jetzt nicht mehr ganz durchgelesen, aber ich nehme an, dass ist das selbe, was du auch in dem anderen Post schon erwähnt hattest.

    Da bleibt dir nur folgendes:

    Auslesen
    Parsen
    Updaten.

    Ich denke es ist besser, wenn du das erst parst, wenn du die Daten ausließt. Aber das wolltest du mit dem Preis ja auch schon nicht. In dem Fall könnte es auch sein, dass es zu langsam wird.

    Also machs, wie oben beschrieben. Allerdings ists schwerer zu administriern

    Kommentar


    • #3
      Hi!

      Vielen Dank again;-)

      Aber der Sachverhalt hier ist anders, weil ich ja Teile der Beschreibung nicht ändern möchte. Was heißt in dem Zusammenhang übrigens parsen?

      Gruß

      Kommentar


      • #4
        ja, das hattest du aber in dem anderen post auch schon erwähnt (beiläufig am ende).

        du ließt also den text aus der DB aus
        suchst nach Holz und ersetzt holz dann mit <a href=holz.php>holz</a>
        uns speicherst den geänderten string wieder in der Db.

        Kommentar


        • #5
          Ok,

          das macht man dann z.B. mit den CSV-Dateien, richtig?

          Das war mir im Ansatz schon bekannt, ich wollte es aber über eine Abfrage umsetzen. Gibt es da keine Möglichkeit?

          Kommentar


          • #6
            das kannst du so direkt auf die Datenbank anwenden.

            Nur in einer einzigen Abfrage ist das nicht möglich. (so gesehen sinds zwei querys, mit bisschen code dazwischen.)

            Kommentar


            • #7
              nun verwirrst Du mich;-)

              Wie wende ich das denn direkt auf die Datenbank an? Entschuldige meine Unwissenheit:-) Und wie lauten die beiden Queries und wie das bißchen Code dazwischen *g*

              Kommentar


              • #8
                Bin ich Bimbo oder was?

                ganz direkt geht das nicht. aber du kannst dir den weg über die csv sparen.

                DB Zeile auslesen
                Zeile Parsen
                Zeile Updaten

                nächste DB Zeile auslesen
                Zeile Parsen
                Zeile Updaten

                und immer so weiter...

                Kommentar


                • #9
                  Ich wollte Dich nicht über Gebühr strapazieren. Ich schau dann mal, ob ich das Nachvollziehen kann;-)

                  Gruß und Danke

                  Kommentar


                  • #10
                    Geht auch direkt mit MySQL:

                    Code:
                    UPDATE artikel
                       SET beschreibung=REPLACE(beschreibung,'weissmetall','weissblechdosen');
                    Oder bei der Abfrage (was ich vorziehen würde):

                    Code:
                    SELECT REPLACE(beschreibung, 'weissmetall', 'weissblechdosen') beschreibung
                    FROM artikel
                    Die 2. Frage:
                    Code:
                    SELECT IF(wert>100, CONCAT(beschreibung, '\nVersandkostenfrei'), beschreibung) beschreibung
                    FROM artikel
                    Alles zusammen:
                    Code:
                    SELECT REPLACE(IF(wert>100, CONCAT(beschreibung, '\nVersandkostenfrei'), beschreibung), 'weissmetall', 'weissblechdosen') beschreibung
                    FROM artikel
                    Bye
                    carpe noctem

                    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                    Kommentar


                    • #11
                      Okay, ich halt mein Maul!

                      *wiedermalvongotheinesbesserenbelehrtwordenbin*

                      Kommentar


                      • #12
                        @TobiaZ: ehrlich gesagt hab' ich mir die Antworten gar nicht durchgelesen ... habe nur gesehen das mein Vorschlag noch nicht dabei war ...
                        carpe noctem

                        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                        Kommentar


                        • #13
                          OffTopic:
                          Ist ja klar: Da ich nur Müll erzähle

                          Kommentar


                          • #14
                            1.Teil wunderbar; 2-Teil...

                            Hi!

                            Also erstmal bin ich ja froh, daß es in diesem Forum Menschen gibt, die einem helfen! Mit Datenbanken stehe ich momentan halt noch etwas auf Kriegsfuss und dümpel mit meinem Halbwissen so vor mich hin...aber das wird besser! Nicht zuletzt durch Leute wie Euch.

                            Also, ich habe mich natürlich sofort an den Vorschlag von goth gemacht und *juppiduh!*! Der erste Ansatz mit dem Weissmetall war genau das was ich gesucht habe. Das hat mir elendig viel Arbeit erspart!

                            Beim zweiten habe ich noch Schwierigkeiten.

                            Ich habe folgende Syntax probiert:

                            SELECT IF(wert>100, CONCAT(beschreibung, '\nVersandkostenfrei'), beschreibung) beschreibung
                            FROM artikel

                            Beschreibung und Wert habe ich jeweils in Hochkammas gesetzt (weil Feldnamen), bei artikel (also dem Tabellennamen) das gleiche.

                            Leider war die Abfrage nicht erfolgreich! Die Datenbank hat kurz überlegt und mir dann halt nur einige Felder angezeigt; aber die waren eher willkürlich. Geändert hat sich nichts.

                            Also vielleicht nochmal:

                            Um folgende Felder geht`s:

                            "Preis"
                            "Artikel" (als Tabellenname)
                            "Beschreibung"

                            Im Feld Beschreibung soll diesmal nichts ersetzt werden, sondern lediglich hinzugefügt. Und zwar soll bei allen Artikeln, bei denen der Preis höher oder gleich 100 ist einfach nur der Text Versandkostenfrei (kann man ja noch ausschmücken) hinzugefügt werden.

                            Generationen von Datenbank-Nutzern werden Euch dankbar sein!:-)

                            Gruß

                            Kommentar


                            • #15
                              Code:
                              SELECT IF(Preis>=100, CONCAT(Beschreibung, '\nVersandkostenfrei'), Beschreibung) Beschreibung
                              FROM Artikel
                              sollte eigentlich funktionieren ...

                              Wenn Deine MySQL im ANSI-Modus läuft geht auch:
                              Code:
                              SELECT IF(Preis>=100, Beschreibung||'\nVersandkostenfrei', Beschreibung) Beschreibung
                              FROM Artikel
                              Feld und Tabellennamen werden nicht in Hochkommas gesetzt ... bestenfalls Backticks kann man dafür verwenden ... Hochkommas leiten in SQL 'ne Zeichenkette ein ...
                              carpe noctem

                              [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                              [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                              Kommentar

                              Lädt...
                              X