Bahlsen Posted August 29, 2008 Report Share Posted August 29, 2008 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 More sharing options...
Spelter Posted September 9, 2008 Report Share Posted September 9, 2008 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 More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.