Jump to content
xt:Commerce Community Forum

Produkte L?schen


tmj

Recommended Posts

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

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

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

Archived

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

×
  • Create New...