Menü

  Login

  Shoutbox

  Forum » Fragen zu Ilch » Andere Dinge » last post in der userdetails


last post in der userdetails
Alpha
Gast

User Pic

# 10.08.2008 - 03:29:28
    zitieren



hi mairu,

wie kann ich eigentlich in der user_details die letzten 5 Posts anzeigen lassen die ein User geschrieben hat für jeden user seprat , da ich ein php noob bin frage ich mal ob du mir bitte helfen könntest.

mfg alpha

ps. ich hoffe das ist nicht so kompliziert ist
Mairu
Administrator

User Pic

Posts: 1908
# 10.08.2008 - 08:40:25
    zitieren



OK dann mal wieder auf ein neues, zuerst legt man in der Datenbank das Feld für die Userdetails an, dazu folgende SQL Anweisung mit phpmyadmin ausführen (SQL) und dabei prefix durch sein eigenes meist ic1 ersetzen (2mal).
 Code
1:
 INSERT INTO prefix_profilefields (`show`, `pos`, `func`) SELECT 'last5posts', MAX(pos) + 1, 3 FROM prefix_profilefields;


Dann noch die includes/func/profilefields.php öffnen und folgende Funktion einfügen, wenn man nicht genau weiß wo, einfach vor das ?> am Ende.

 Php
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
  function profilefields_show_spez_last5posts ($value$uid) {
    global 
$allgAr;
    
$sql db_query("SELECT a.id, a.tid, a.txt, a.time, b.name, b.rep FROM prefix_posts a LEFT JOIN prefix_topics b ON a.tid = b.id WHERE a.erstid = $uid ORDER BY a.id DESC LIMIT 5");
    
$content '<table class="border" cellspacing="1" cellpadding="1" border="0" width="95%">';
    while (
$r db_fetch_object($sql)) {
        
$content .= '<tr class="Chead"><td>Im Thema :<a href="?forum-showposts-'.$r->tid.'-p'.(ceil(($r->rep 1)/$allgAr['Fpanz'])).'#'.$r->id.'">'.$r->name.'</a></td><td>'.date('d.m.Y H:m:i',$r->time).'</td></tr>';
        
$content .= '<tr class="Cmite"><td colspan="2">'.bbcode($r->txt).'</td></tr>';
    }
    
$content .= '</table>';
    return 
profilefields_show_echo_standart('Letzten 5 Posts'$content);
}


Ich sage gleich mal dazu, bei mir hat das nicht vernünftig ins Design gepasst.
Mike
Gast

User Pic

# 10.08.2008 - 10:52:23
    zitieren



hallo mairu,

da hacke ich gleich mal nach , wenn ich eine veränderte user_details habe und möchte dies über {last10posts} ausgeben wie wäre dann der code dafür , würdest du in bitte auch mal schreiben;


habs mal versucht aber irgenwie funkt das nicht Weinen

 Code
1:
2:
3:
4:
5:
6:
 $abf10 = 'SELECT a.id, a.tid, a.txt, a.time, b.name, b.rep FROM prefix_posts a LEFT JOIN prefix_topics b ON a.tid = b.id WHERE a.erstid = $uid ORDER BY a.id DESC LIMIT 5';   
$erg10 = db_query($abf10);
while ($row10 = db_fetch_object($erg10))
{
$last10posts .= ' <a href="?forum-showposts-'.$row10->tid.'-p'.(ceil(($row10->rep + 1)/$allgAr['Fpanz'])).'#'.$row10->id.'">'.$row10->name.'</a></td><td>'.date('d.m.Y H:m:i',$row10->time).'</td></tr>';     
}   


und da ich nicht recht große php kenntnisse habe bitte ich mal ob du mir helfen könntest

thx mairu
mfg mike
Mairu
Administrator

User Pic

Posts: 1908
# 10.08.2008 - 11:58:56
    zitieren



Auch einfach als Funktion lassen und diese dann aufrufen, sieht natürlich ein bisschen anders aus.
 Code
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
 function last5posts ($uid) {
    global $allgAr;
    $sql = db_query("SELECT a.id, a.tid, a.txt, a.time, b.name, b.rep FROM prefix_posts a LEFT JOIN prefix_topics b ON a.tid = b.id WHERE a.erstid = $uid ORDER BY a.id DESC LIMIT 5");
    $content = '<table class="border" cellspacing="1" cellpadding="1" border="0" width="95%">';
    while ($r = db_fetch_object($sql)) {
        $content .= '<tr class="Chead"><td>Im Thema :<a href="?forum-showposts-'.$r->tid.'-p'.(ceil(($r->rep + 1)/$allgAr['Fpanz'])).'#'.$r->id.'">'.$r->name.'</a></td><td>'.date('d.m.Y H:m:i',$r->time).'</td></tr>';
        $content .= '<tr class="Cmite"><td colspan="2">'.bbcode($r->txt).'</td></tr>';
    }
    $content .= '</table>';
    return $content;
}

Dann halt $variable = last5posts($uid); oder ähnlich aufrufen.


Zuletzt modifiziert von Mairu am 10.08.2008 - 11:59:16
Mike
Gast

User Pic

# 10.08.2008 - 13:29:38
    zitieren



hallo mairu,

thx für feine hilfe, einfach perfekt Auslachen

mfg mike
s3mt3x
Gast

User Pic

# 29.08.2008 - 00:53:23
    zitieren



hi mairu

schreib mir nochmal den code rein, wie ich das mit {blabla} in die template einbauen kann. ich peil bei euch so oder so nimma durch. schade das auch nciht das entgültige laufende version als letztes gepostet wird ;(
Mairu
Administrator

User Pic

Posts: 1908
# 29.08.2008 - 09:24:41
    zitieren



Also beim Standardprofil muss man nix ins Template einbauen, und bei der anderen Variante hängts davon ab wie das bei dir ist ist, was ich ja nicht wirklich wissen kann.


Zuletzt modifiziert von Mairu am 29.08.2008 - 09:26:30
NQ2
Gast

User Pic

# 29.08.2008 - 14:57:09
    zitieren



Nehmen wir mal an ich nehme die 2 variante ^^

Also so das ich isn Template das mit {last10posts} eintrage.
Denn mein Profil ist schon lange nciht mehr Dynamisch ^^ So siehts wenigstens schön aus Zwinker

Also was muss ich dann genau machen ?

greetz
s3m
Mairu
Administrator

User Pic

Posts: 1908
# 29.08.2008 - 21:30:09
    zitieren



Ich kenn doch dein Code nicht, aber wie schon hier steht, meist gibts ein Array das $row heißt und dann mit
 Code
1:
 $tpl->set_ar_out($row, ??);
ausgegeben wird, davor müsstet du halt dann
 Code
1:
 $row['last5posts'] = last5posts($uid);
einfügen, aber eigentlich steht das ja schon in etwas so hier.
Und natürlich dann auch die Funktion oben.


Zuletzt modifiziert von Mairu am 29.08.2008 - 21:30:38
IRvD
Grünschnabel

User Pic

Posts: 15
# 01.11.2012 - 01:15:37
    zitieren



Find das auf jedenfall sehr Interessant mit den letzten 5 Beiträgen!

Habe nun in der include/include/func/profielfields.php folgenden Code eingefügt:

 Php
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
  <?php
function last5posts ($uid) {
    global 
$allgAr;
    
$sql db_query("SELECT a.id, a.tid, a.txt, a.time, b.name, b.rep FROM prefix_posts a LEFT JOIN prefix_topics b ON a.tid = b.id WHERE a.erstid = $uid ORDER BY a.id DESC LIMIT 5");
    
$content '<table class="border" cellspacing="1" cellpadding="1" border="0" width="95%">';
    while (
$r db_fetch_object($sql)) {
        
$content .= '<tr class="Chead"><td>Im Thema :<a href="?forum-showposts-'.$r->tid.'-p'.(ceil(($r->rep 1)/$allgAr['Fpanz'])).'#'.$r->id.'">'.$r->name.'</a></td><td>'.date('d.m.Y H:m:i',$r->time).'</td></tr>';
        
$content .= '<tr class="Cmite"><td colspan="2">'.bbcode($r->txt).'</td></tr>';
    }
    
$content .= '</table>';
    return 
$content;
}
?>


Somit besteht ja die Funktion!
Aber was genau muss ich jetzt in die user_deatils.php & userdetails.htm einfügen?

Würde diese Funktion gerne mit in unseren Profilmod einbinden.

Hoffe du kannst helfen Zwinker

LG IRvD
IRvD
Grünschnabel

User Pic

Posts: 15
# 01.11.2012 - 18:48:24
    zitieren



Eingebunden hab ich es nun! Fehlt nur noch eine Zeichenbegrenzug
Mairu
Administrator

User Pic

Posts: 1908
# 04.11.2012 - 10:17:17
    zitieren



Wenn du damit meinst, dass nur eine bestimmte Anzahl von Zeichen vom Beitrag gezeigt werden, müsstest du aus bbcode($row->txt) in der Funktion bbcode(substr($row->txt, 0, 200)) machen, wobei 200 für die Anzahl von Zeichen steht.
IRvD
Grünschnabel

User Pic

Posts: 15
# 06.11.2012 - 18:36:05
    zitieren



Vielen Dank Mairu Zwinker
sCar
Mitglied

User Pic

Posts: 53
# 09.02.2014 - 08:52:32
    zitieren



hi mairu habe diesen post endlich wieder gefunden, jetzt ist mein problem dass ich im forum manche threads nur ab einem bestimmten recht angezeigt habe, was aber in den letzten 5 posts ausgegeben wird. benutze den code von irvd

hoffe du hast da noch eine lösung!
mfg


Zuletzt modifiziert von sCar am 09.02.2014 - 08:53:11
Mairu
Administrator

User Pic

Posts: 1908
# 09.02.2014 - 23:41:21
    zitieren



Ich hatte dir doch per PM auf einen Beitrag hingewiesen, dort war in der Query auch die Rechtabfrage mit drin, ggf. auch mal einfach in der contents/forum/show_forum.php nachschauen, dort sind bei WHERE die Rechteabfragen zu sehen.
sCar
Mitglied

User Pic

Posts: 53
# 10.02.2014 - 10:21:59
    zitieren



ok hab ich gefunden, allerdings auch viel rumprobiert...
habs jetz so erstmal, aber es gibt keine änderung, aber auch kein fehler..
 Php
1:
2:
3:
  <?php
    $sql 
db_query("SELECT a.id, a.tid, a.txt, a.time, b.name, b.rep FROM prefix_posts a LEFT JOIN prefix_topics b ON a.tid = b.id WHERE a.erstid = {$r['erstid']} $uid ORDER BY a.id DESC LIMIT 3");
?>

ich bin mir sicher es hat noch hiermit zutun.. AND a.erstid = b.id
aber das will alles nicht funzen Traurig
Mairu
Administrator

User Pic

Posts: 1908
# 10.02.2014 - 20:12:29
    zitieren



Also damit ist ja noch nichts mit Rechten geklärt.

Dafür müsste die SQL umgestellt werden, ich mach das mal.

 Php
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
  function last5posts ($uid) {
    global 
$allgAr;
    
$sql db_query("SELECT a.id, a.tid, a.txt, a.time, b.name, b.rep"
            
" FROM prefix_posts a"
            
" INNER JOIN prefix_topics b ON a.tid = b.id"
            
" INNER JOIN prefix_forums f ON a.fid = f.id"
            
" LEFT JOIN prefix_groupusers vg ON vg.uid = " $_SESSION['authid'] . " AND vg.gid = f.view"
            
" LEFT JOIN prefix_groupusers rg ON rg.uid = " $_SESSION['authid'] . " AND rg.gid = f.reply"
            
" LEFT JOIN prefix_groupusers sg ON sg.uid = " $_SESSION['authid'] . " AND sg.gid = f.start"
            
" WHERE a.erstid = $uid AND "
            
"((" $_SESSION['authright'] . " <= f.view AND f.view < 1)"
            
" OR (" $_SESSION['authright'] . " <= f.reply AND f.reply < 1)"
            
" OR (" $_SESSION['authright'] . " <= f.start AND f.start < 1)"
            
" OR vg.fid IS NOT NULL OR rg.fid IS NOT NULL OR sg.fid IS NOT NULL"
            
" OR -9 = " $_SESSION['authright'] . ")"
            
" ORDER BY a.id DESC LIMIT 5");
    
$content '<table class="border" cellspacing="1" cellpadding="1" border="0" width="95%">';
    while (
$r db_fetch_object($sql)) {
        
$content .= '<tr class="Chead"><td>Im Thema :<a href="?forum-showposts-' $r->tid '-p'
            
. (ceil(($r->rep 1) / $allgAr['Fpanz'])) . '#' $r->id '">' $r->name '</a></td><td>'
            
date('d.m.Y H:m:i'$r->time) . '</td></tr>';
        
$content .= '<tr class="Cmite"><td colspan="2">' bbcode($r->txt) . '</td></tr>';
    }
    
$content .= '</table>';
    return 
$content;
}
sCar
Mitglied

User Pic

Posts: 53
# 11.02.2014 - 08:01:01
    zitieren



ok das hätte ich so schnell nicht hinbekommen, klappt bestens, dankesehr mairu!!