Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 9 Gast/Gäste
Szenentracker - keine Ausgabe
#11
Ich verstehe nicht ganz, was du meinst  Confused Es geht hier ja nicht um ein spezielles Profilfeld, sondern um die Abfrage und wenn die eben kein Ergebnis hat, soll ein Platzhaltersatz angezeigt werden.

So sieht der gesamte Code bei mir aus:
Code:
// START Szenen

$monthOpen = array(
'Januar' => 'Jan',
'Februar' => 'Feb',
'März' => 'Mar',
);

foreach( $monthOpen as $monthName) {

$query = $db->query("
SELECT t.subject, t.description, t.tid, p.username, p.uid, p.pid, p.dateline
FROM ".TABLE_PREFIX."threads t
INNER JOIN ".TABLE_PREFIX."forums f ON t.fid=f.fid AND f.parentlist LIKE '26,27%'
INNER JOIN ".TABLE_PREFIX."posts p ON t.tid=p.tid
WHERE (p.uid='".$memprofile['uid']."') AND t.description LIKE '%$monthName%'
GROUP BY t.subject, p.username
ORDER BY p.dateline DESC
");

while($row = $db->fetch_array($query)) {

$userid = $row['uid'];
$row['pid'] = $row['pid'];
$row['tid'] = $row['tid'];

if(my_strlen($row['subject']) > 25)
{
$row['subject'] = my_substr($row['subject'], 0, 50)."...";
}
$szenen_lastpost = my_date('relative', $row['dateline']);
$szenen_subject = "<a href=\"showthread.php?tid={$row['tid']}&pid={$row['pid']}#pid{$row['pid']}\">".htmlspecialchars_uni($row['subject'])."</a> » {$szenen_lastpost}";
$szenen_desc = "<br /><span class=\"tdesc\">{$row['description']}</span>";

eval("\$memprofile_szenen_$monthName.= \"".$templates->get("member_profile_szenen")."\";");
}
}

// ENDE Szenen
Zitieren
#12
So im etwa

PHP-Code:
// START Szenen

$monthOpen = array(
'Januar' => 'Jan',
'Februar' => 'Feb',
'März' => 'Mar',
);

foreach( 
$monthOpen as $monthName) {

    
$query $db->query("
    SELECT t.subject, t.description, t.tid, p.username, p.uid, p.pid, p.dateline
    FROM "
.TABLE_PREFIX."threads t
    INNER JOIN "
.TABLE_PREFIX."forums f ON t.fid=f.fid AND f.parentlist LIKE '26,27%'
    INNER JOIN "
.TABLE_PREFIX."posts p ON t.tid=p.tid
    WHERE (p.uid='"
.$memprofile['uid']."') AND t.description LIKE '%$monthName%'
    GROUP BY t.subject, p.username
    ORDER BY p.dateline DESC
    "
);

    while(
$row $db->fetch_array($query)) {

        
$userid $row['uid'];
        
$row['pid'] = $row['pid'];
        
$row['tid'] = $row['tid'];

        if(
my_strlen($row['subject']) > 25)
        {
            
$row['subject'] = my_substr($row['subject'], 050)."...";
        }
        
$szenen_lastpost my_date('relative'$row['dateline']);
        
$szenen_subject "<a href=\"showthread.php?tid={$row['tid']}&pid={$row['pid']}#pid{$row['pid']}\">".htmlspecialchars_uni($row['subject'])."</a> » {$szenen_lastpost}";
        
$szenen_desc "<br /><span class=\"tdesc\">{$row['description']}</span>";
        
        if(
$memprofile_szenen_$monthName){
            eval(
"\$memprofile_szenen_$monthName.= \"".$templates->get("member_profile_szenen")."\";");
        }else{
            eval(
"\$memprofile_szenen_$monthName.= \"".$templates->get("member_profile_szenen_platzhalter")."\";");
        }
    }
}

// ENDE Szenen 
Mit freundlichen Grüßen

MrBrechreiz
Zitieren
#13
Wenn ich das 1:1 kopiere, erhalte ich eine Fehlermeldung.. zudem erschliesst sich mir die Ergänzung auch nicht richtig.. :/

Allerdings bin ich - so glaube ich - ein Stückchen weiter gekommen:

PHP-Code:
        if(!$row $db->fetch_array($query)) {    
            eval(
"\$memprofile_szenen_$monthName = \"".$templates->get("member_profile_szenen_empty")."\";");
        }
        else {
            
$userid $row['uid'];
            
$row['pid'] = $row['pid'];
            
$row['tid'] = $row['tid'];
            if(
my_strlen($row['subject']) > 25) {
                
$row['subject'] = my_substr($row['subject'], 050)."...";
            }
            
$szenen_lastpost my_date('relative'$row['dateline']);
            
$szenen_subject "<a href=\"showthread.php?tid={$row['tid']}&pid={$row['pid']}#pid{$row['pid']}\">".htmlspecialchars_uni($row['subject'])."</a> » {$szenen_lastpost}";
            
$szenen_desc "<br /><span class=\"tdesc\">{$row['description']}</span>";
        eval(
"\$memprofile_szenen_$monthName.= \"".$templates->get("member_profile_szenen")."\";");
        } 

Das Problem jetzt ist, dass mir bei dem Mitglied, das gar keine Szenen hat, dreimal der Platzhalter angezeigt wird (für jeden Monat, indem keine Szene vorhanden ist, einmal) und bei dem Mitglied, das nur für den Januar Szenen hat, erscheint der Platzhalter zweimal.
Bei dem Mitglied, das gar keine Szenen hat, sollte der Platzhalter nur einmal erscheinen und bei dem Mitglied, das mind. eine Szene hat, überhaupt nicht.
Zitieren
#14
Ich hab's tatsächlich geschafft  Rolleyes

Das ist der komplette PHP-Abschnitt:

PHP-Code:
// START Szenen

$monthOpen = array(
'Januar' => 'Jan',
'Februar' => 'Feb',
'März' => 'Mar',
);

foreach(
$monthOpen as $monthName) {

$query $db->query("
SELECT t.subject, t.description, t.tid, p.username, p.uid, p.pid, p.dateline
FROM "
.TABLE_PREFIX."threads t
INNER JOIN "
.TABLE_PREFIX."forums f ON t.fid=f.fid AND f.parentlist LIKE '26,27%'
INNER JOIN "
.TABLE_PREFIX."posts p ON t.tid=p.tid
WHERE (p.uid='"
.$memprofile['uid']."') AND t.description LIKE '%$monthName%'
GROUP BY t.subject, p.username
ORDER BY p.dateline DESC
"
);

while(
$row $db->fetch_array($query)) {    
           $userid 
$row['uid'];
           $row['pid'] = $row['pid'];
           $row['tid'] = $row['tid'];
           if(my_strlen($row['subject']) > 25) {
               $row['subject'] = my_substr($row['subject'], 050)."...";
           }
           $szenen_lastpost my_date('relative'$row['dateline']);
           $szenen_subject "<a href=\"showthread.php?tid={$row['tid']}&pid={$row['pid']}#pid{$row['pid']}\">".htmlspecialchars_uni($row['subject'])."</a> » {$szenen_lastpost}";
           $szenen_desc "<br /><span class=\"tdesc\">{$row['description']}</span>";
           
           eval
("\$memprofile_szenen_$monthName .= \"".$templates->get("member_profile_szenen_listbit")."\";");

       eval("\$memprofile_szenen = \"".$templates->get("member_profile_szenen")."\";");
       }
       if(!$memprofile_szenen) {
           eval("\$memprofile_szenen = \"".$templates->get("member_profile_szenen_empty")."\";");
       }
}

// ENDE Szenen 

In das Template member_profile kommt diese Variable: {$memprofile_szenen}

In das neue Template member_profile_szenen kommt dieser Inhalt:
Code:
{$memprofile_szenen_Jan}
{$memprofile_szenen_Feb}
{$memprofile_szenen_Mar}

In das neue Template member_profile_szenen_listbit kommt dieser Inhalt:
Code:
{$szenen_subject}
{$szenen_desc}

In das neue Template member_profile_szenen_empty kommt dieser Inhalt:
Code:
Dieses Mitglied besitzt noch keine Szenen.
Zitieren
#15
Ich fürchte, ich stelle mich einfach an, aber nachdem ich schlichtweg nicht weiterkomme, dachte ich, ich versuch mal mein Glück hier ^^
Ich hab den Szenentracker ähnlich eingebaut wie melancholia, lediglich zwei Abfrage daraus gemacht, um verschiedene Jahreszahlen mitabfragen zu können. (Sollte das schon einfacher gehen oder fehlerhaft sein, dann bin ich auch da für jeden Hinweis dankbar Wink )
Insgesamt funktioniert es jetzt auch wunderbar, das Problem ist jedoch, dass manche Threads doppelt angezeigt werden. Habe ich beispielsweise einen Untertitel der lautet: 12. November 2014 | Marburg wird dieser Thread einmal im November angezeigt (was ja richtig ist) und ein zweites Mal im März (weil 'Mar' ja oben im Array für den März definiert ist.)
Ich habe jetzt schon versucht im monthOpen = array aus dem 'Mar' einfach ein 'March' zu machen und die Variable im entsprechenden Template anzupassen, allerdings werden mir im März dann gar keine Threads mehr angezeigt. Ich komm nur leider nicht drauf, wie es sich anders beheben lässt...


Mein Teil für die member.php sieht so aus:
Code:
// START Szenentracker

$monthOpen = array(
'Januar' => 'Jan',
'Februar' => 'Feb',
'März' => 'Mar',
'April' => 'April',
'Mai' => 'Mai',
'Juni' => 'Juni',
'Juli' => 'Juli',
'August' => 'Aug',
'September' => 'Sept',
'Oktober ' => 'Okt',
'November' => 'Nov',
'Dezember' => 'Dez',
);

foreach($monthOpen as $monthName) {


// JAHR 2014
$query = $db->query("
SELECT t.subject, t.description, t.tid, p.username, p.uid, p.pid, p.dateline
FROM ".TABLE_PREFIX."threads t
INNER JOIN ".TABLE_PREFIX."forums f ON t.fid=f.fid AND f.parentlist LIKE '28%' || f.parentlist LIKE '50%'
INNER JOIN ".TABLE_PREFIX."posts p ON t.tid=p.tid
WHERE (p.uid='".$memprofile['uid']."') AND t.description LIKE '%$monthName%' AND t.description LIKE '%2014%'
GROUP BY t.subject, p.username
ORDER BY t.description ASC
");

while($row = $db->fetch_array($query)) {    
           $userid = $row['uid'];
           $row['pid'] = $row['pid'];
           $row['tid'] = $row['tid'];
           
           $szenen_subject = "<a href=\"showthread.php?tid={$row['tid']}\">".htmlspecialchars_uni($row['subject'])."</a>";
           $szenen_desc = "<br /><span class=\"tdesc\">{$row['description']}</span>";
           
           eval("\$memprofile_szenen14_$monthName .= \"".$templates->get("member_profile_szenen_listbit")."\";");

       eval("\$memprofile_szenen14 = \"".$templates->get("member_profile_szenen14")."\";");
       }
       if(!$memprofile_szenen) {
           eval("\$memprofile_szenen = \"".$templates->get("member_profile_szenen_empty")."\";");
       }
  
// JAHR 2015
$query = $db->query("
SELECT t.subject, t.description, t.tid, p.username, p.uid, p.pid, p.dateline
FROM ".TABLE_PREFIX."threads t
INNER JOIN ".TABLE_PREFIX."forums f ON t.fid=f.fid AND f.parentlist LIKE '28%' || f.parentlist LIKE '50%'
INNER JOIN ".TABLE_PREFIX."posts p ON t.tid=p.tid
WHERE (p.uid='".$memprofile['uid']."') AND t.description LIKE '%$monthName%' AND t.description LIKE '%2015%'
GROUP BY t.subject, p.username
ORDER BY t.description ASC
");

while($row = $db->fetch_array($query)) {    
           $userid = $row['uid'];
           $row['pid'] = $row['pid'];
           $row['tid'] = $row['tid'];
           
           $szenen_subject = "<a href=\"showthread.php?tid={$row['tid']}\">".htmlspecialchars_uni($row['subject'])."</a>";
           $szenen_desc = "<br /><span class=\"tdesc\">{$row['description']}</span>";
           
           eval("\$memprofile_szenen15_$monthName .= \"".$templates->get("member_profile_szenen_listbit")."\";");

       eval("\$memprofile_szenen15 = \"".$templates->get("member_profile_szenen15")."\";");
       }
       if(!$memprofile_szenen) {
           eval("\$memprofile_szenen = \"".$templates->get("member_profile_szenen_empty")."\";");
       }

}

// ENDE Szenentracker

Die member_profile_szenen_listbit und die member_profile_szenen_empty sehen bei mir genauso aus wie oben von melancholia beschrieben. 
Statt dem Template member_profile_szenen hab ich member_profile_szenen14 bzw. member_profile_szenen15, beide mit folgendem Inhalte (lediglich die Zahlen entsprechend angepasst):

Code:
<center><h4>Jahr 2014</h4></center>

<if $memprofile_szenen14_Jan then>
<h3>Januar 2014</h3>
<ul>{$memprofile_szenen14_Jan}</ul>
<else>
</if>

<if $memprofile_szenen14_Feb then>
<h3>Februar 2014</h3>
<ul>{$memprofile_szenen14_Feb}</ul>
<else>
</if>

<if $memprofile_szenen14_Mar then>
<h3>März 2014</h3>
<ul>{$memprofile_szenen14_Mar}</ul>
<else>
</if>

<if $memprofile_szenen14_April then>
<h3>April 2014</h3>
<ul>{$memprofile_szenen14_April}</ul>
<else>
</if>

<if $memprofile_szenen14_Mai then>
<h3>Mai 2014</h3>
<ul>{$memprofile_szenen14_Mai}</ul>
<else>
</if>

<if $memprofile_szenen14_Juni then>
<h3>Juni 2014</h3>
<ul>{$memprofile_szenen14_Juni}</ul>
<else>
</if>

<if $memprofile_szenen14_Juli then>
<h3>Juli 2014</h3>
<ul>{$memprofile_szenen14_Juli}</ul>
<else>
</if>

<if $memprofile_szenen14_Aug then>
<h3>August 2014</h3>
<ul>{$memprofile_szenen14_Aug}</ul>
<else>
</if>

<if $memprofile_szenen14_Sept then>
<h3>September 2014</h3>
<ul>{$memprofile_szenen14_Sept}</ul>
<else>
</if>

<if $memprofile_szenen14_Okt then>
<h3>Oktober 2014</h3>
<ul>{$memprofile_szenen14_Okt}</ul>
<else>
</if>

<if $memprofile_szenen14_Nov then>
<h3>November 2014</h3>
<ul>{$memprofile_szenen14_Nov}</ul>
<else>
</if>

<if $memprofile_szenen14_Dez then>
<h3>Dezember 2014</h3>
<ul>{$memprofile_szenen14_Dez}</ul>
<else>
</if>
 

Liebe Grüße,
Shanee
Zitieren
#16
Ich hab ein bisschen gebraucht, aber so funktioniert's bei mir im Testforum:

PHP-Code:
// START Szenentracker
$monthOpen = array(
    
'Januar' => 'Januar',
    
'Februar' => 'Februar',
    
'März' => 'Marz',
    
'April' => 'April',
    
'Mai' => 'Mai',
    
'Juni' => 'Juni',
    
'Juli' => 'Juli',
    
'August' => 'August',
    
'September' => 'September',
    
'Oktober ' => 'Oktober',
    
'November' => 'November',
    
'Dezember' => 'Dezember',
);

    foreach(
$monthOpen as $monthName) {

    
$query $db->query("
    SELECT t.subject, t.description, t.tid, p.username, p.uid, p.pid, p.dateline
    FROM "
.TABLE_PREFIX."threads t
    INNER JOIN "
.TABLE_PREFIX."forums f ON t.fid=f.fid AND f.parentlist LIKE '1%'
    INNER JOIN "
.TABLE_PREFIX."posts p ON t.tid=p.tid
    WHERE (p.uid='"
.$memprofile['uid']."') AND t.description LIKE '%$monthName%'
    GROUP BY t.subject, p.username
    ORDER BY t.description ASC
    "
);

        while(
$row $db->fetch_array($query)) {
            if (
stristr($row['description'], '2014') !== false) {
                
$userid $row['uid'];
                
$row['pid'] = $row['pid'];
                
$row['tid'] = $row['tid'];
                
$szenen_subject "<a href=\"showthread.php?tid={$row['tid']}\">".htmlspecialchars_uni($row['subject'])."</a>";
                
$szenen_desc "<br /><span class=\"tdesc\">{$row['description']}</span>";
                eval(
"\$memprofile_szenen14_$monthName .= \"".$templates->get("member_profile_szenen_listbit")."\";");
            eval(
"\$memprofile_szenen14 = \"".$templates->get("member_profile_szenen14")."\";");
            }
            if (
stristr($row['description'], '2015') !== false) {
                
$userid $row['uid'];
                
$row['pid'] = $row['pid'];
                
$row['tid'] = $row['tid'];
                
$szenen_subject "<a href=\"showthread.php?tid={$row['tid']}\">".htmlspecialchars_uni($row['subject'])."</a>";
                
$szenen_desc "<br /><span class=\"tdesc\">{$row['description']}</span>";
                eval(
"\$memprofile_szenen15_$monthName .= \"".$templates->get("member_profile_szenen_listbit")."\";");
            eval(
"\$memprofile_szenen15 = \"".$templates->get("member_profile_szenen15")."\";");
            }
       }
       if(!
$memprofile_szenen14$memprofile_szenen14 "<center><h4>Jahr 2014</h4></center>Dieses Mitglied besitzt noch keine Szenen im Jahr 2014.";
       if(!
$memprofile_szenen15$memprofile_szenen15 "<center><h4>Jahr 2015</h4></center>Dieses Mitglied besitzt noch keine Szenen im Jahr 2015.";
}
// ENDE Szenentracker 

Ins Template member_profile kommen die beiden Variablen {$memprofile_szenen14} und {$memprofile_szenen15}

Template member_profile_szenen14:
Code:
<center><h4>Jahr 2014</h4></center>

<if $memprofile_szenen14_Januar then>
<h3>Januar 2014</h3>
<ul>{$memprofile_szenen14_Januar}</ul>
<else>
</if>

<if $memprofile_szenen14_Februar then>
<h3>Februar 2014</h3>
<ul>{$memprofile_szenen14_Februar}</ul>
<else>
</if>

<if $memprofile_szenen14_Marz then>
<h3>März 2014</h3>
<ul>{$memprofile_szenen14_Marz}</ul>
<else>
</if>

<if $memprofile_szenen14_April then>
<h3>April 2014</h3>
<ul>{$memprofile_szenen14_April}</ul>
<else>
</if>

<if $memprofile_szenen14_Mai then>
<h3>Mai 2014</h3>
<ul>{$memprofile_szenen14_Mai}</ul>
<else>
</if>

<if $memprofile_szenen14_Juni then>
<h3>Juni 2014</h3>
<ul>{$memprofile_szenen14_Juni}</ul>
<else>
</if>

<if $memprofile_szenen14_Juli then>
<h3>Juli 2014</h3>
<ul>{$memprofile_szenen14_Juli}</ul>
<else>
</if>

<if $memprofile_szenen14_August then>
<h3>August 2014</h3>
<ul>{$memprofile_szenen14_August}</ul>
<else>
</if>

<if $memprofile_szenen14_September then>
<h3>September 2014</h3>
<ul>{$memprofile_szenen14_September}</ul>
<else>
</if>

<if $memprofile_szenen14_Oktober then>
<h3>Oktober 2014</h3>
<ul>{$memprofile_szenen14_Oktober}</ul>
<else>
</if>

<if $memprofile_szenen14_November then>
<h3>November 2014</h3>
<ul>{$memprofile_szenen14_November}</ul>
<else>
</if>

<if $memprofile_szenen14_Dezember then>
<h3>Dezember 2014</h3>
<ul>{$memprofile_szenen14_Dezember}</ul>
<else>
</if>

Für das Template member_profile_szenen15 tauschst du einfach alle 14 gegen eine 15 aus.

Das Template member_profile_szenen_empty kannst du löschen.
Zitieren
#17
Und natürlich musst du auch noch diese Angabe wieder deinen anpassen.. leider fiel es mir erst jetzt auf und ich konnte den Beitrag nicht mehr editieren  Rolleyes

Code:
f.parentlist LIKE '1%'

Ersetze mit:

Code:
f.parentlist LIKE '28%' OR f.parentlist LIKE '50%'
Zitieren
#18
Ich danke dir vielmals für diese doch sehr viel elegantere Lösung, die tadellos funktioniert Smile Da hast du mir einige graue Haare erstarrt Wink Danke!

edit: Ok, ein Problem bleibt immer noch und das ist der Juli ^^ Da kommt es erneut zu Dopplungen mit dem Monat und dem Namen. Gibt es da noch einen Trick 17, dass wirklich nur Juli und nicht etwa Julian oder Julia genommen wird?
Wenn nicht, muss man da eben auf das englische July ausweichen ^^
Zitieren
#19
Was anderes, als auf das englische July auszuweichen, fiele mir auch nicht ein  Wink
Zitieren
#20
Dann noch einmal danke für die Mühe, die du dir gemacht hast Smile
Zitieren