Kategorien mit allen Inhalten leeren
Verfasst: Fr 2. Jan 2009, 18:49
Hallo,
ich Stand mal wieder vor dem Problem, dass eine Kategorie mit allen Inhalten in meinem System entfernt werden musste.
Da ich über die Suche nur Code-Schnipsel fand und ich bislang die Umsetzung in Contenido noch nicht gefunden habe - korrigiert mich bitte, wenn ich hier Unsinn erzähle - habe ich das Fragment aus
http://forum.contenido.org/viewtopic.php?t=7963
ein wenig erweitert.
Das ganze soll die ausgewählte Kategorie komplett leer machen. Also Vorsicht: Alle Artikel + Unterkategorien!!!
Vielleicht hilft es jemanden.
Wenn noch jemand Verbesserung oder Fixes hat, immer her damit.
Gruß,
Christian
ich Stand mal wieder vor dem Problem, dass eine Kategorie mit allen Inhalten in meinem System entfernt werden musste.
Da ich über die Suche nur Code-Schnipsel fand und ich bislang die Umsetzung in Contenido noch nicht gefunden habe - korrigiert mich bitte, wenn ich hier Unsinn erzähle - habe ich das Fragment aus
http://forum.contenido.org/viewtopic.php?t=7963
ein wenig erweitert.
Code: Alles auswählen
$box = ' <select name="whichidcatdelete"><option value="-1">-- kein --</option>';
$sql = "SELECT
A.idcat,
C.name,
A.level
FROM
".$cfg["tab"]["cat_tree"]." AS A,
".$cfg["tab"]["cat"]." AS B,
".$cfg["tab"]["cat_lang"]." AS C
WHERE
A.idcat = B.idcat AND
B.idcat = C.idcat AND
C.idlang = '".$lang."' AND
B.idclient = '".$client."'
ORDER BY
A.idtree";
$db->query($sql);
$cat_array = array();
$cat_status = false;
$cat_level = -1;
while ( $db->next_record() ) {
$sep = "";
for($i = 0; $i< $db->f("level"); $i++ )
$sep .= "---";
$box .= '\n\t<option value="'.$db->f("idcat").'">'.$sep." ".$db->f("name").'</option>';
// wenn zu loeschende kategorie
if( isset( $_POST['whichidcatdelete'] ) && $_POST['whichidcatdelete']==$db->f("idcat"))
{
$cat_status = true;
$cat_level = $db->f("level");
$cat_array[] = $db->f("idcat");
}
elseif($cat_status == true && $db->f("level") > $cat_level)
{
$cat_array[] = $db->f("idcat");
}
else
{
$cat_status = false;
}
}
echo $box ." </select><input type='submit'><br>";
/*############################################################################*/
if( isset( $_POST['whichidcatdelete'] ) && $_POST['whichidcatdelete']!=-1)
{
echo "Kategorie ".$_POST['whichidcatdelete']." wird gelöscht.<br><br>";
$a = 0;
foreach($cat_array as $id)
{
$sql = "SELECT
a.idart AS idart
FROM
".$cfg["tab"]["art_lang"]." AS a,
".$cfg["tab"]["art"]." AS b,
".$cfg["tab"]["cat_art"]." AS c
WHERE
a.idlang = '".$lang."' AND
a.idart = b.idart AND
b.idclient = '".$client."' AND
b.idart = c.idart AND
c.idcat = '".$id."'";
$db2 = new Db_Contenido();
$db2->query($sql);
while ( $db2->next_record() ) {
conDeleteart($db2->f("idart"));
//echo $db2->f("idart")."<br>";
$a++;
}
strDeleteCategory($id);
}
echo "$a Artikel gelöscht...";
}
Vielleicht hilft es jemanden.
Wenn noch jemand Verbesserung oder Fixes hat, immer her damit.
Gruß,
Christian