conMakeStart bei start_compatible = true fehlerhaft
Verfasst: Fr 3. Aug 2007, 23:14
Der Fehler muss seit dem Urschleim im System gewesen sein. Nun ja.
functions.con.php
Wenn start_compatible = true ist, räumt die Zeile alle Startartikel in allen Sprachen ab (wenn die Kategorie durch Synchronisation erzeugt wurde).
Alt:
Neu:
Ungetestet.
Mit der Änderung werden ggf. nur Startartikel in der Kategorie in der aktuellen Sprache abgeräumt.
Über Feedback und Verbesserungsvorschläge würde ich mich freuen, da ich mit den Abfragen nicht so glücklich bin (erst wird die idcat ermittelt, dann alle idcatarts der Kategorie in der Sprache, die Startartikel sind [der Ausgangscode geht auch davon aus, dass es mehrere sein können...]), dann werden diese gelöscht und nur der eine Artikel als Startartikel gesetzt.
Gruß
HerrB
functions.con.php
Wenn start_compatible = true ist, räumt die Zeile
Code: Alles auswählen
$sql = "UPDATE ".$cfg["tab"]["cat_art"]." SET is_start = 0 WHERE idcat = $tmp_idcat";
Alt:
Code: Alles auswählen
function conMakeStart($idcatart, $is_start)
{
global $db, $cfg, $lang;
if ($cfg["is_start_compatible"] == true)
{
$sql = "SELECT idcat, is_start FROM ".$cfg["tab"]["cat_art"]." WHERE idcatart = '$idcatart'";
$db->query($sql);
$db->next_record();
$tmp_idcat = $db->f("idcat");
$set = $is_start;
$sql = "UPDATE ".$cfg["tab"]["cat_art"]." SET is_start = 0 WHERE idcat = $tmp_idcat";
$db->query($sql);
$sql = "UPDATE ".$cfg["tab"]["cat_art"]." SET is_start='$set' WHERE idcatart = '$idcatart'";
$db->query($sql);
if ( $set == 1 )
...
Code: Alles auswählen
function conMakeStart($idcatart, $is_start)
{
global $db, $cfg, $lang;
if ($cfg["is_start_compatible"] == true)
{
$sql = "SELECT idcat FROM ".$cfg["tab"]["cat_art"]." WHERE idcatart = '$idcatart'";
$db->query($sql);
$db->next_record();
$tmp_idcat = $db->f("idcat");
$sql = "SELECT tblCatArt.idcatart ".
"FROM ".$cfg["tab"]["cat_art"]." tblCatArt, ". $cfg["tab"]["art_lang"]." tblArtLang ".
"WHERE tblCatArt.idart = tblArtLang.idart AND tblCatArt.is_start = '1' AND ".
"tblArtLang.idlang = '$lang' AND tblCatArt.idcat = '$tmp_idcat'";
$db->query($sql);
$aIDs = array();
while ($db->next_record())
{
$aIDs[] = $db->f("idcatart");
}
if (count($aIDs) > 0)
{
$sql = "UPDATE ".$cfg["tab"]["cat_art"]." SET is_start = 0 WHERE idcatart IN ('" . implode("','", $aIDs) . "')";
$db->query($sql);
}
$set = $is_start;
$sql = "UPDATE ".$cfg["tab"]["cat_art"]." SET is_start='$set' WHERE idcatart = '$idcatart'";
$db->query($sql);
if ( $set == 1 )
...
Mit der Änderung werden ggf. nur Startartikel in der Kategorie in der aktuellen Sprache abgeräumt.
Über Feedback und Verbesserungsvorschläge würde ich mich freuen, da ich mit den Abfragen nicht so glücklich bin (erst wird die idcat ermittelt, dann alle idcatarts der Kategorie in der Sprache, die Startartikel sind [der Ausgangscode geht auch davon aus, dass es mehrere sein können...]), dann werden diese gelöscht und nur der eine Artikel als Startartikel gesetzt.
Gruß
HerrB