mac20 Posted August 27, 2005 Report Share Posted August 27, 2005 Moin Moin alle zusammen ! Ich hab das forum schon einige male durchsucht, jedoch leider nichts gefunden, darum frage ich hier nun mal kurz nach vielleicht kann mir jemand helfen. Ich m?chte gerne per script Artikel direkt in die SQL DB schreiben. Welche Tabellen mu? ich mindestens beschreiben damit der Artikel im Shop auftaucht ? Ich hoffe das mit einer von Euch Spezi?s helfen kann. VIelen dank im vorraus Link to comment Share on other sites More sharing options...
hubbabubba Posted August 27, 2005 Report Share Posted August 27, 2005 Originally posted by mac20@Aug 27 2005, 09:46 PM Ich m?chte gerne per script Artikel direkt in die SQL DB schreiben. Welche Tabellen mu? ich mindestens beschreiben damit der Artikel im Shop auftaucht ? Quoted post TABLE_PRODUCTS TABLE_PRODUCTS_TO_CATEGORIES TABLE_PRODUCTS_DESCRIPTION ggf. TABLE_CUSTOMERS_STATUS Hatte auch ein Importproblem und habe mir eine Importroutine zusammengeschustert. Dem existierenden Code entnommen. Nat?rlich alles ohne Gew?hr. Jedenfalls bei mir scheints zu funktionieren. /* ---------------------------------------------------------------------------------------------------- funktion einfuegen_produkt Neuen Artikel in DB einfuegen Parameter: $daten - Assoziatives Array $daten['artnr'] $daten['artname'] $daten['artpreis'] $daten['artbeschr'] $daten['artgewicht'] $daten['artimage'] - Dateiname Produktillustration Return: immer TRUE (unfertig: eigentlich TRUE wenn alles geklappt hat, anonsten FALSE) Bemerkung: Die Bilddatei $daten['artimage'] muss im Ordner f?r Originalbilder (Define: DIR_FS_CATALOG_ORIGINAL_IMAGES) vorliegen Schreibt nur deutschsprachige Artikelbeschreibungen ( $language_id=2 ) in DB ---------------------------------------------------------------------------------------------------- */ function einfuegen_produkt($daten) { $artnr = strtoupper($daten['artnr']); $artname = $daten['artname']; $artpreis = strtoval($daten['artpreis']); $artbeschr = $daten['artbeschr']; $artgewicht = strtoval($daten['artgewicht']); $artimage = $daten['artimage']; $language_id = 2; $products_tax_class_id = 0; $products_status = 1; $info_template = "default"; $options_template = "default"; $fsk18 = 0; $current_category_id = 0; $products_model = $artnr; $products_price = $artpreis; $products_weight = $artgewicht; $products_image_name = $artimage; $products_name = $artname; $products_description = str_replace(',', ', ', $artbeschr); $products_short_description = $artbeschr; $products_url = ''; $products_meta_title = ''; $products_meta_description = ''; $products_meta_keywords = ''; // Pruefen ob Artikelnummer bereits vorhanden $query = "select count(products_model)"; // zaehlen wie Artnr oft schon in DB $query.= " FROM ".TABLE_PRODUCTS; $query.= " WHERE products_model='$artnr'"; $result = xtc_db_query($query); $result_arr = xtc_db_fetch_array($result); if( $result_arr['count(products_model)']>0 ) { // wenn Artnr schon vorhanden echo "Fehler, Artnr. schon vohanden \n"; return FALSE; } if (PRICE_IS_BRUTTO=='true') { $products_price = ($products_price/(xtc_get_tax_rate($products_tax_class_id)+100)*100); } $products_id = xtc_db_prepare_input($_GET['pID']); $products_date_available = xtc_db_prepare_input($_POST['products_date_available']); $products_date_available = (date('Y-m-d') < $products_date_available) ? $products_date_available : 'null'; // set allowed c.groups $group_ids=''; $customers_statuses_array=xtc_get_customers_statuses(); $sql_data_array = array( 'products_quantity' => '', 'products_model' => xtc_db_prepare_input($products_model), 'products_price' => xtc_db_prepare_input($products_price), 'products_sort' => '', 'group_ids'=>$group_ids, 'products_shippingtime' => '', 'products_discount_allowed' => '', 'products_date_available' => $products_date_available, 'products_weight' => xtc_db_prepare_input($products_weight), 'products_status' => xtc_db_prepare_input(products_status), 'products_tax_class_id' => xtc_db_prepare_input($products_tax_class_id), 'product_template' => xtc_db_prepare_input($info_template), 'options_template' => xtc_db_prepare_input($options_template), 'manufacturers_id' => '', 'products_fsk18' => xtc_db_prepare_input($fsk18) ); if( $products_image_name<>"" ) { $sql_data_array['products_image'] = xtc_db_prepare_input($products_image_name); require(DIR_WS_INCLUDES . 'product_thumbnail_images.php'); require(DIR_WS_INCLUDES . 'product_info_images.php'); require(DIR_WS_INCLUDES . 'product_popup_images.php'); } else { $products_image_name = 'none'; } if (isset($_POST['products_image']) && xtc_not_null($_POST['products_image']) && ($_POST['products_image'] != 'none')) { $sql_data_array['products_image'] = xtc_db_prepare_input($products_image_name); } $insert_sql_data = array('products_date_added' => 'now()'); $sql_data_array = xtc_array_merge($sql_data_array, $insert_sql_data); xtc_db_perform(TABLE_PRODUCTS, $sql_data_array); // Eintrag in Produkttabelle $products_id = xtc_db_insert_id(); // ID ermitteln aus dem letzten Eintrag // Das neue Produkt in die Kategoriezuordnung eintragen xtc_db_query("insert into " . TABLE_PRODUCTS_TO_CATEGORIES . " (products_id, categories_id) values ('" . $products_id . "', '" . $current_category_id . "')"); $languages = xtc_get_languages(); // Here we go, lets write Group prices into db // start $i = 0; $group_query = xtc_db_query("SELECT customers_status_id FROM " . TABLE_CUSTOMERS_STATUS . " WHERE language_id = '" . (int)$_SESSION['languages_id'] . "' AND customers_status_id != '0'"); while ($group_values = xtc_db_fetch_array($group_query)) { // load data into array $i++; $group_data[$i] = array('STATUS_ID' => $group_values['customers_status_id']); } for ($col = 0, $n = sizeof($group_data); $col < $n+1; $col++) { if ($group_data[$col]['STATUS_ID'] != '') { $personal_price = xtc_db_prepare_input($_POST['products_price_' . $group_data[$col]['STATUS_ID']]); if ($personal_price == '' or $personal_price=='0.0000') { $personal_price = '0.00'; } else { if (PRICE_IS_BRUTTO=='true') { $personal_price= ($personal_price/(xtc_get_tax_rate($_POST['products_tax_class_id']) +100)*100); } $personal_price=xtc_round($personal_price,PRICE_PRECISION); } xtc_db_query("UPDATE personal_offers_by_customers_status_" . $group_data[$col]['STATUS_ID'] . " SET personal_offer = '" . $personal_price . "' WHERE products_id = '" . $products_id . "' AND quantity = '1'"); } } // end // ok, lets check write new staffelpreis into db (if there is one) $i = 0; $group_query = xtc_db_query("SELECT customers_status_id FROM " . TABLE_CUSTOMERS_STATUS . " WHERE language_id = '" . (int)$_SESSION['languages_id'] . "' AND customers_status_id != '0'"); while ($group_values = xtc_db_fetch_array($group_query)) { // load data into array $i++; $group_data[$i]=array('STATUS_ID' => $group_values['customers_status_id']); } for ($col = 0, $n = sizeof($group_data); $col < $n+1; $col++) { if ($group_data[$col]['STATUS_ID'] != '') { $quantity = xtc_db_prepare_input($_POST['products_quantity_staffel_' . $group_data[$col]['STATUS_ID']]); $staffelpreis = xtc_db_prepare_input($_POST['products_price_staffel_' . $group_data[$col]['STATUS_ID']]); if (PRICE_IS_BRUTTO=='true'){ $staffelpreis= ($staffelpreis/(xtc_get_tax_rate($_POST['products_tax_class_id']) +100)*100); } $staffelpreis=xtc_round($staffelpreis,PRICE_PRECISION); if ($staffelpreis!='' && $quantity!='') { // ok, lets check entered data to get rid of user faults if ($quantity<=1) $quantity=2; $check_query=xtc_db_query("SELECT quantity FROM personal_offers_by_customers_status_" . $group_data[$col]['STATUS_ID'] . " WHERE products_id='". $products_id."' and quantity='".$quantity."'"); // dont insert if same qty! if (xtc_db_num_rows($check_query)<1) { xtc_db_query("INSERT INTO personal_offers_by_customers_status_" . $group_data[$col]['STATUS_ID'] . " (price_id, products_id, quantity, personal_offer) VALUES ('', '" . $products_id . "', '" . $quantity . "', '" . $staffelpreis . "')"); } } } } $sql_data_array = array('products_name' => xtc_db_prepare_input($products_name), 'products_description' => xtc_db_prepare_input($products_description), 'products_short_description' => xtc_db_prepare_input($products_short_description), 'products_url' => xtc_db_prepare_input($products_url), 'products_meta_title' => xtc_db_prepare_input($products_meta_title), 'products_meta_description' => xtc_db_prepare_input($products_meta_description), 'products_meta_keywords' => xtc_db_prepare_input($products_meta_keywords) ); $insert_sql_data = array('products_id' => $products_id, 'language_id' => $language_id); $sql_data_array = xtc_array_merge($sql_data_array, $insert_sql_data); xtc_db_perform(TABLE_PRODUCTS_DESCRIPTION, $sql_data_array); return true; } Link to comment Share on other sites More sharing options...
mac20 Posted August 28, 2005 Author Report Share Posted August 28, 2005 Vielen Dank, das war genau das was ich gesucht habe. Manchmal braucht man nur einen kleine Sto? in die richtige Richtung Link to comment Share on other sites More sharing options...
dhh Posted September 6, 2005 Report Share Posted September 6, 2005 Hey, scheint genau das zu sein was ich suche, darf ich das (nach einigen Erg?nzungen & Anpassungen) ebenfalls verwenden? Wie hattest du / habt ihr das eingebunden, muss ja f?r die Queries erstmal integriert sein? Danke schonmal, freundlichen Gru?, Daniel Hirtzbruch Link to comment Share on other sites More sharing options...
hubbabubba Posted September 6, 2005 Report Share Posted September 6, 2005 Originally posted by dhh@Sep 6 2005, 02:05 PM darf ich das (nach einigen Erg?nzungen & Anpassungen) ebenfalls verwenden? Wie hattest du / habt ihr das eingebunden, muss ja f?r die Queries erstmal integriert sein? Quoted post 1. Nat?rlich 2. require('includes/application_top.php'); Und zwar das application_top.php im Adminbereich (admin/includes/application_top.php). Gru? Hen Link to comment Share on other sites More sharing options...
earchy Posted September 11, 2005 Report Share Posted September 11, 2005 Hallo erstamal. Also auch ich brauche sowas, von daher erstmal danke f?r die Vorarbeit. Ich habe mir ein Formular gestrickt, das die Parameter per "post" an die produkt_einfuegen.php ?bergibt. Doch dann kommt diese Meldung: 1054 - Unknown column 'einfuegen_produkt' in 'field list' select einfuegen_produkt from admin_access where customers_id = '1' [XT SQL Error] und schon bin ich auf Glatteis. K?nnte mich bitte jemand in die richtig Richtung schubsen!? Danke earchy Link to comment Share on other sites More sharing options...
hubbabubba Posted September 11, 2005 Report Share Posted September 11, 2005 1054 - Unknown column 'einfuegen_produkt' in 'field list' select einfuegen_produkt from admin_access where customers_id = '1' [XT SQL Error] Link to comment Share on other sites More sharing options...
earchy Posted September 12, 2005 Report Share Posted September 12, 2005 Vielen Dank! Das hat den Erfolg gebracht, dass die Fehlermeldung in der Tat nun weg ist. Der gesamte Prozess l?uft jetzt glatt und ohne Fehlermeldung durch. Nur: In der DB wird trotzdem nichts eingetragen. Ich habe Ma?nahme 1 und sp?ter zus?tzlich Ma?nahme 2 aktiviert. Es wird nichts eingetragen in der DB. Bei Kontrollausgaben habe ich gemerkt, dass die Variablen?bergabe aus dem HTML Formular nicht funktioniert. Die Variablen waren in der Kontrollausgabe jeweils leer. Sehr seltsam. Dann habe ich mich gefragt, was dieser Code eigentlich macht: function einfuegen_produkt($daten) { $artnr = strtoupper($daten['artnr']); $artname = $daten['artname']; $artpreis = strtoval($daten['artpreis']); $artbeschr = $daten['artbeschr']; $artgewicht = strtoval($daten['artgewicht']); $artimage = $daten['artimage']; Ich bin jetzt nicht der riesen PHP Kenner, aber in Java w?re $daten etwas, was der Funktion ?bergeben wird. Aber genau das passiert ja nicht. Es werden die Variablen im Poststring einzeln angeliefert und nicht ein Datenarray das getrennt werden mu?. Also habe ich vermutlich verpasst, woher $daten eigentlich kommen!? Dann habe ich den Test gewagt und Variablen hart verdrahtet: $artnr = '1234567'; $artname = 'TEST LALAL'; $artpreis = '9'; $artbeschr = 'Laber Rababer'; $artgewicht = '1'; $artimage = 'bildi.jpg'; Und als auch diese Daten in der DB Tabelle 'products' nicht eintrafen, wu?te ich, dass ich diesen Text hier zu schreiben haben w?rde. Ich entschuldige mich f?r meine Blindheit, m?chte Euch auch nicht weiter damit nerven, bitte lediglich um den finalen Hinweis. Puh, earchy Link to comment Share on other sites More sharing options...
hubbabubba Posted September 12, 2005 Report Share Posted September 12, 2005 Den finalen Hinweis kann ich dir auch nicht geben. Deine "harte Verdrahtung" ist schon ok. Ich w?rde mich jetzt ans debuggen machen. Schwer zu sagen wo's hakt. Kann sein, da? dort noch Bugs drin sind (habe eben beim ?berfliegen selbst einen entdeckt, nichts schlimmes). Diese Routine habe ich f?r XTC Version 2 (!) zusammengebastelt. In meiner 2er Testumgebung funktioniert sie. Sag mir erstmal welche XTC Version du verwendest. Gru? Hen Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.