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