Jump to content
xt:Commerce Community Forum

Bestimmte Artikel einem Hersteller zuweisen


Bahlsen

Recommended Posts

Hallo!

Ich möchte gerne Artikel mit einem bestimmten Text in der Titelzeile

einem bestimmten Hersteller zuweisen.

Folgende SQL Syntax hab ich probiert:

update products JOIN products_description

USING products_id

set manufacturers_id = 8

where products_name LIKE '%4711XYz%';

Wo liegt Fehler bzw. was mach ich falsch??

Gruß Bahlsen

Link to comment
Share on other sites

  • 2 weeks later...

Also im ersten Moment würde ich mich mal fragen wie die Syntax der Titelzeile ist. Ich geh mal von "HERSTELLER - PRODUKTNAME - MEHR INFOS" aus

Ich würde erstmal hergehen und eine Textfile schreiben bestehend aus:

Art-Nr. Titel Hersteller. Das kannst du z.b. via split machen:


list ($ARTNR, $product_title, $HERSTELLER) = split("-", $product_title);


$datei=hersteller.csv;

$inhalt = $ARTNR \t $product_title \t $HERSTELLER;


$dh = fopen($datei, 'r+');

fwrite($dh, $inhalt);

fclose($dh);

kurz und dreckig hingeworfen. $product_title sollte schon den gesamten Inhalt haben den man verarbeiten möchte, also vorher eine while Schleife so ala:

$product_title = "";

while($row = mysql_fetch_array($result))

{

$product_title .= ......

/*

Das .= ist wichtig damit der Inhalt der Variable nicht mit den letzten Werten 

überschrieben wird. Am Ende schreib ich in einem Rutsch alles in die Datei.

*/

}

Die Datei mit Calc (Datei Öffnen -> Text CSV) oder Excel öffnen (Daten Importieren) dann hast du gleich spalten und kannst nach Hersteller sortieren und es verändern wenn da was nicht passt. Diese dann einfach nochmal durch ein Script jagen der dann ein Update der Produkte macht und prüft ob der Hersteller existiert. Existiert er nicht, geht das recht einfach über:

mysql_query("

INSERT INTO manufacturers

VALUES ('','$HERSTELLER','','','');

", $MYSQL_CONNECTION);


/*

mysql> describe manufacturers;

+---------------------+-------------+------+-----+---------+----------------+

| Field               | Type        | Null | Key | Default | Extra          |

+---------------------+-------------+------+-----+---------+----------------+

| manufacturers_id    | int(11)     |      | PRI | NULL    | auto_increment |

| manufacturers_name  | varchar(32) |      | MUL |         |                |

| manufacturers_image | varchar(64) | YES  |     | NULL    |                |

| date_added          | datetime    | YES  |     | NULL    |                |

| last_modified       | datetime    | YES  |     | NULL    |                |

+---------------------+-------------+------+-----+---------+----------------+


*/

mehr ist glaub ich garn nicht für den Hersteller nötig, manufacturers_info sind eher nähere Angaben zum Hersteller. Du kannst auch eine CSV Datei mit den Infos nach und nach aufbauen und immer nur die Änderungen hochladen, kommt drauf an wieviel Hersteller du hast. Vor längerem hab ich mal etwas mit Suchmaschinen in Perl rumprobiert, aber automatisch solche Infos einfügen ist doch etwas eigenartig. Die Produkte haben, wie du schon richtig geschrieben hast, die manufacturers_id in der Tabelle products. Ändern geht vielleicht so:

$HERSTELLER_ID = mysql_query("

SELECT * FROM manufacturers

WHERE manufacturers_name LIKE '$HERSTELLER';

", MYSQLCONNECTION);


// Das Eintragen der ID geht über die Artikel Nummer am einfachsten

$PRODUCT = mysql_query("

UPDATE products

SET manufacturers_id ='$HERSTELLER_ID'

WHERE products_id = $ARTNR;

", MYSQLCONNECTION);

//ungtestet, hab das zum Teil aus einem meiner Konverter

Das mit dem Hersteller muss ich demnächst auch wieder so ähnlich machen wenn wir den Produkt Katalog bekommen, dazu schreib ich mir allerdings immer extra Konverter in Perl, da hab ich schon Templates und muss nur noch feinheiten ändern. Kann den vielleicht mal veröffentlichen.

p.s. das ist alles ungetestet, von der Programmierung her könnte der eine oder andere Fehler drin sein was ich grad hingeworfen habe.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...