tmj Posted November 15, 2005 Report Share Posted November 15, 2005 Hallo! Ich m?chte alle Produkte mit einem Klick auf einen Link l?schen, deren Importdatum ?lter ist als das Datum des aktuellsten Importvorganges. Dazu habe ich der Tabelle Pproducts ein neues Feld mit der Bezeichnung products_update angelegt. Ich importiere die Produkte mit Easypopulate, habe dieses Skript an meine Bed?rfnisse angepasst und eine neue Tabelle mit dem Namen easypoulate angelegt. Diese Tabelle enth?lt die Felder ep_id und ep_update. Bei jedem Produktimport wird nun das Importdatum in die Tabelle easypopulate eingetragen. Auch wird das Importdatum bei allen Produkten eingetragen, die neu importiert oder aktuallisiert wurden. Nun ist meine Frage: Wie kann ich ein Skript schreiben, welches die Tabelle products abfragt und alle Produkte l?scht, deren Importdatum ?lter ist als das in der Tabelle easypopulate? Ich habe bisher dieses Skript geschrieben . Doch wird da immer nur das erste Produkt gel?scht, welches den Abfragekriterien entspricht: $easypopulate_query = xtc_db_query("SELECT ep_update FROM ".TABLE_EASYPOPULATE." WHERE ep_id =1"); $easypopulate = xtc_db_fetch_array($easypopulate_query); $ep_update = $easypopulate['ep_update']; $products_query = xtc_db_query("SELECT products_id FROM ".TABLE_PRODUCTS." WHERE products_update < '".$ep_update."'"); $products = xtc_db_fetch_array($products_query); $product_id = $products['products_id']; $products_update = $products['products_update']; if (!isset($product_id)){ echo Hallo; } else { echo Tsch?ss; xtc_db_query("delete from " . TABLE_SPECIALS . " where products_id = '" . xtc_db_input($product_id) . "'"); xtc_db_query("delete from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . xtc_db_input($product_id) . "'"); xtc_db_query("delete from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . xtc_db_input($product_id) . "'"); xtc_db_query("delete from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id = '" . xtc_db_input($product_id) . "'"); xtc_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where products_id = '" . xtc_db_input($product_id) . "'"); xtc_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where products_id = '" . xtc_db_input($product_id) . "'"); xtc_db_query("delete from " . TABLE_PRODUCTS . " where products_id = '" . xtc_db_input($product_id) . "'"); } Hat jemand Ahnung und kann mir bei meinem Problem helfen? Neben meinem eigenen Skript habe ich eine Contrib f?r osCommerce gefunden, mit der man nach Produkten suchen kann und markierte Ergebnisse dann l?schen kann. Doch weiss ich da gerade nicht, wie ich die Contrib so umschreiben kann, dass sie meine oben beschriebenen Kriterien ausf?hrt. ?ber eure Antworten und Hilfe w?rde ich mich sehr freuen und danke schon mal f?r eure M?he. Gr??e tmj ?ber eure Antworten w?rde ich mich sehr freuen. Link to comment Share on other sites More sharing options...
akustik Posted November 15, 2005 Report Share Posted November 15, 2005 Bin nicht der php experte, doch von DB Abfrage verstehe ich ein bisschen. Wenn du im ersten SQL Statement in deinem Script die where Clausel auf WHERE ep_id =1 Setzt, dann wird er dir immer nur das Produkt mit der ep_id=1 auswerfen. Link to comment Share on other sites More sharing options...
akustik Posted November 15, 2005 Report Share Posted November 15, 2005 Ich doof! In der ersten Abfrage holst du ja nur das aktuelle Datum raus! Vergiss meine letzte Antwort! :hit: Link to comment Share on other sites More sharing options...
akustik Posted November 15, 2005 Report Share Posted November 15, 2005 Dann etwas anderes. Du l?dst die Product ID in ein Array, aber anschlie?end fehlt mir eine For each schleife in der du nach ein ander alle Elemente aus deinem Array abarbeitest. Nun habe ich aber zu wenig Ahnung von PHP um dir einen Tipp zu geben wo die Schleife rein m?sste. Link to comment Share on other sites More sharing options...
tmj Posted November 15, 2005 Author Report Share Posted November 15, 2005 Hallo akustik! Danke f?r deine Antworten. Ich denke dass deine Antworten hi?freich sind und ich nun weiss was ich vergessen habe. Link to comment Share on other sites More sharing options...
tmj Posted November 15, 2005 Author Report Share Posted November 15, 2005 Ich habe mein Problem nun l?sen k?nnen. Ich habe den Code von delete_products.php welche ich bei osCommerce gefunden habe in mein skript eingearbeitet. Mein Skript sieht nun so aus: $easypopulate_query = xtc_db_query("SELECT ep_update FROM ".TABLE_EASYPOPULATE." WHERE ep_id =1"); $easypopulate = xtc_db_fetch_array($easypopulate_query); $ep_update = $easypopulate['ep_update']; echo "<form name=\"update\" method=\"post\" action=\"".$_SERVER["PHP_SELF"]."?action=update_prices\">"; $result = xtc_db_query("SELECT * FROM ".TABLE_PRODUCTS.", ".TABLE_PRODUCTS_DESCRIPTION." WHERE (products.products_update NOT LIKE '".$ep_update."') AND products.products_id = products_description.products_id"); if ($row = mysql_fetch_array($result)) { do { $prezzo=round($row['products_price'],2); echo "<td align=\"center\">".$row["products_model"]."</td>\n"; echo "<td>".$row["products_name"]."</td>\n"; echo "<td align=\"center\"><input type=\"checkbox\" name=\"product_new_price[".$row['products_id']."]\" value=\"removed\"></td>\n"; echo "</tr>\n"; } while($row = mysql_fetch_array($result)); } echo "<br><input type=\"submit\" value=\"Remove the products you selected\">"; echo "</form><br><hr><br>"; if ($action == "update_prices") { foreach($HTTP_POST_VARS['product_new_price'] as $id => $cancella) { echo "id: $id -> $cancella<br>"; xtc_db_query("delete from " . TABLE_SPECIALS . " where products_id = '".$id. "'"); xtc_db_query("delete from " . TABLE_PRODUCTS_TO_CATEGORIES . " where products_id = '" . $id . "'"); xtc_db_query("delete from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . $id . "'"); xtc_db_query("delete from " . TABLE_PRODUCTS_ATTRIBUTES . " where products_id = '" . $id . "'"); xtc_db_query("delete from " . TABLE_CUSTOMERS_BASKET . " where products_id = '" . $id . "'"); xtc_db_query("delete from " . TABLE_CUSTOMERS_BASKET_ATTRIBUTES . " where products_id = '" . $id . "'"); xtc_db_query("delete from " . TABLE_PRODUCTS . " where products_id = '" . $id . "'"); $count++; } echo "<p><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\"><b>$count product removed!!</b></font></p>"; } Nun werden alle Produkte angezeigt, die ?lter sin als das Datum in der Tabelle easypopulate und ich kann Produkte ausw?hlen, um diese zu l?schen. Vielleicht kann man dies nun auch so umschreiben, dass gleich alle Produkte gel?scht werden. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.