Modulshop - Eine große Auswahl an neuen und hilfreichen Modulen für die modified eCommerce Shopsoftware
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Artikel eines Herstellers löschen mittes SQL

    johnny_ll

    • Neu im Forum
    • Beiträge: 49
    Artikel eines Herstellers löschen mittes SQL
    am: 28. Oktober 2010, 12:29:56
    hallo an alle,

    hat jemand eine Idee wie ich alle Artikel eines Herstellers auf einmal löschen kann?
    ich denke es funktioniert nur über die Datenbank?

    Hat jemand eine Idee?

    LG Johnny



    Linkback: https://www.modified-shop.org/forum/index.php?topic=8855.0

    h-h-h

    • modified Team
    • Beiträge: 4.562
    Artikel eines Herstellers löschen mittes SQL
    Antwort #1 am: 28. Oktober 2010, 16:18:37
    Sehr interessante Frage.
    Denn mit einem einfachem Delete SQL Statement ist es nicht getan.

    Man müste als erstes in der products-Tabelle die products_id's auswählen bei denen manufactures_id, die des Herstellers ist.
    Und daraufhin alle Zeilen in den product_***-Tabellen mit der product_id löschen.

    Bin sehr gespannt auf die kommenden Antworten.

    Gruß h-h-h

    franky_n

    • Experte
    • Beiträge: 4.950
    Artikel eines Herstellers löschen mittes SQL
    Antwort #2 am: 28. Oktober 2010, 18:44:28
    Hallo johnny_II,

    nee das geht nicht über einen einzelnen Befehl...

    Dann im Admin den Hersteller löschen und ankreuzen das Du auch alle Produkte löschen möchtest.

    Ansonsten schau Dir mal unter
    /export/cao_xtc_functions.php
    den Abschnitt an:

    Code: PHP  [Auswählen]
    function xtc_remove_product($product_id) {
    }
     
    denn der löscht ein Produkt mit allen in den Tabellen enthaltenen Produktinfos.
    Diese könnte man kopieren, umbenennen und die Abfrage einbauen das er nach der manufacturers_id schaut. :)

    Viele Grüße

    Franky

    Tomcraft

    • modified Team
    • Gravatar
    • Beiträge: 46.241
    • Geschlecht:
    Artikel eines Herstellers löschen mittes SQL
    Antwort #3 am: 28. Oktober 2010, 20:37:54
    [...]
    nee das geht nicht über einen einzelnen Befehl...
    [...]

    Ich bin mir sicher, dass das geht. ;-)

    Volker könnte uns da bestimmt weiter helfen, was das SQL-Statement angeht. Bei mir hört es nach der Verkettung von 2 Tabellen auf. :D

    Grüße

    Torsten

    johnny_ll

    • Neu im Forum
    • Beiträge: 49
    Artikel eines Herstellers löschen mittes SQL
    Antwort #4 am: 29. Oktober 2010, 09:16:45
    Hallo,

    Danke erst mal für das schnelle Feedback.

    ich werde es mal mit der Importfunktion probieren unter action - delete

    mal sehen ob das funktioniert

    wenn nicht muß eine Mitarbeiterin dran glauben :-)

    Grüße Johnny

    h-h-h

    • modified Team
    • Beiträge: 4.562
    Artikel eines Herstellers löschen mittes SQL
    Antwort #5 am: 29. Oktober 2010, 16:45:34
    Wenn Du das hier im Forum als Job anbietest wäre das mit Sicherheit günstiger als Deine Mitarbeiterinen.
    Die Arbeitszeit für jemanden der das kann liegt bei unter einer halben Stunde.

    Gruß h-h-h

    h-h-h

    • modified Team
    • Beiträge: 4.562
    Artikel eines Herstellers löschen mittes SQL
    Antwort #6 am: 29. Oktober 2010, 23:25:18
    Hi habe hier ein paar Beispiele erstellt.
    Um das mal in die richtige Richtung zu lenken. :roll:

       NUR Ideenansätze - NICHT Testen

    Ab MySQL-Version 4.1 wegen dem INnerem SQL-Select:

    Code: SQL  [Auswählen]
    DELETE
    FROM
            products_attributes,
            products_content,
            products_description,
            products_graduated_prices,
            products_images,
            products_notifications,
            products_to_categories,
            products_xsell,
            reviews
    WHERE
        products_id = IN
            (
            SELECT
                products.products_id
            FROM
                products
                    WHERE
                            products.manufacturers_id = ''
        );
    Alternativ zur direkten Umsetzung mit SQL wäre es mit PHP komfortabeler.

    Aufrufbar über scriptname.php?id=HERSTELLER-ID

    Code: PHP  [Auswählen]
    <?php
    $manufacturers_id = $_GET[id];

    $sql="select products_id from products where manufacturers_id = '$manufacturers_id'";
    $result1 = mysql_query($sql,$db);

    while ($row1=mysql_fetch_array($result1)) {
       $sql = "select * from products where products_id = $row1[products_id]";
       $result2 = mysql_query($sql,$db);
       if (mysql_num_rows($result2)==0) {
        $sql = "DELETE
                                    FROM
                                            products,
                                            products_attributes,
                                            products_content,
                                            products_description,
                                            products_graduated_prices,
                                            products_images,
                                            products_notifications,
                                            products_to_categories,
                                            products_xsell,
                                            reviews,
                                            manufacturers,
                                            manufacturers_info
                                    WHERE
                                            products_id = $row1[products_id]
                                            OR
                                            manufacturers_id ='"
    .$manufacturers_id."'";
          $result3 = mysql_query($sql,$db);
       }
    }
    ?>
    Immer Datenbank-Backups machen - Ich übernehme keinerlei Haftung.

    Gruß h-h-h

    franky_n

    • Experte
    • Beiträge: 4.950
    Artikel eines Herstellers löschen mittes SQL
    Antwort #7 am: 30. Oktober 2010, 07:54:53
    Hallo h-h-h,

    Du vergisst nur, dass er ja auch dann die Produktbilder löschen muss.
    Darum habe ich Ihn darauf verwiesen diese Funktion

    Code: PHP  [Auswählen]
    function xtc_remove_product($product_id) {
    }
     
    zu nutzen und um Manufacturers zu erweitern. :)

    Als Beispiel um Deinen Vorschlag dort mal anzuführen:

    Code: PHP  [Auswählen]
    function xtc_remove_manufacturers_product($manufacturers_id) {
      $sql="select products_id from products where manufacturers_id = '".$manufacturers_id."'";
      $result1 = xtDBquery($sql);
      while ($row1 = xtc_db_fetch_array($result1,true)) {
        $products_id = $row1['products_id'];

        {Und hier dann alles aus der Funktion: function xtc_remove_product($product_id) rein}

      }
    }
    Diese Funktion könnte man dann als Eingabefeld "HerstellerID:" und mit dem Button "Lösche manuell Produkte von Hersteller XY" irgendwo im Shop hinterlegen, damit man auch die Connection zur Datenbank hat...

    P.S.: Ich frage mich eh warum die Lösung die ich oben bereits erwähnt hatte, im Admin Backend den Hersteller zu löschen und anzukreuzen das man alle Produkte mit löschen möchte keine Alternative ist...

    Viele Grüße

    Franky

    h-h-h

    • modified Team
    • Beiträge: 4.562
    Artikel eines Herstellers löschen mittes SQL
    Antwort #8 am: 30. Oktober 2010, 11:26:35
    P.S.: Ich frage mich eh warum die Lösung die ich oben bereits erwähnt hatte, im Admin Backend den Hersteller zu löschen und anzukreuzen das man alle Produkte mit löschen möchte keine Alternative ist...

    Habe es noch nicht gemacht, aber wenn das geht ist das die einfachste und beste Lösung. :crazy:

    Gruß h-h-h

    johnny_ll

    • Neu im Forum
    • Beiträge: 49
    Artikel eines Herstellers löschen mittes SQL
    Antwort #9 am: 02. November 2010, 17:16:03
    Hallo vielen Dank für die tolle Unterstützung,

    Ich habe es jetzt mit dem erweiterten Import/Export erledigt.
    Habe einfach die zu löschenden Artikel des Herstellers auf delete gesetzt in der Spalte action und es hat funktioniert.

    Grüße Johnny

    Da Sandro

    • Fördermitglied
    • Beiträge: 832
    • Geschlecht:
    Re: Artikel eines Herstellers löschen mittes SQL
    Antwort #10 am: 29. November 2012, 15:51:56
    ich hab versucht alle Artikel eines Herstellers übers Backend zu löschen.
    Es tritt folgender Fehler auf:

    Code: PHP  [Auswählen]
    Fatal error: Call to undefined function xtc_remove_product() in /www/htdocs/w00e70ba/fiatwelt/admin/manufacturers.php on line 90

    was sagt uns das?

    twe

    • Schreiberling
    • Beiträge: 293
    • Geschlecht:
    Re: Artikel eines Herstellers löschen mittes SQL
    Antwort #11 am: 29. November 2012, 19:25:10
    Dass es die Funktion nicht gibt.

    sieht in der manufacturers.php so aus:

    Code: PHP  [Auswählen]
     //BOC web28 - 2012-04-02 - BUGFIX remove products
    ....
    //xtc_remove_product($products['products_id']);
     

    web28

    • modified Team
    • Beiträge: 9.404
    Re: Artikel eines Herstellers löschen mittes SQL
    Antwort #12 am: 29. November 2012, 19:36:12
    manufacturers.php

    Ein Blick in die 106beta4 könnte helfen!  ;-)

    Gruss Web28

    Da Sandro

    • Fördermitglied
    • Beiträge: 832
    • Geschlecht:
    Re: Artikel eines Herstellers löschen mittes SQL
    Antwort #13 am: 30. November 2012, 08:25:14
    @twe: bei mir nicht, bei mir ist da nix auskommentiert:

    Code: PHP  [Auswählen]
    if ($_POST['delete_products'] == 'on') {
            $products_query = xtc_db_query("select products_id from " . TABLE_PRODUCTS . " where manufacturers_id = '" . xtc_db_input($manufacturers_id) . "'");
            while ($products = xtc_db_fetch_array($products_query)) {
              xtc_remove_product($products['products_id']);

    @web: in der Beta ist die manufacturers.php garnicht betroffen.
               
    anything