<?
// Original hack by Rene displays last 5 postings in forum 1.
//This hack will show the last 3 posted headlines in each forum sectioned by folders if any
chdir("../phorum/"); //again, don't forget to change this to suit your phorum dir.
include "common.php";
$curr_par = "";
$par = "";
$number=3; // number of messages to show.
//omit or change the forum name for your test forums.
// we select active forums tables that are not folders
$sSQL="Select id, name, table_name, parent from ".$pho_main." where active=1 and folder='0' and name!='Test' order by parent";
$q->query($DB, $sSQL);
$rec=$q->getrow();
if(is_array($rec)){
while(is_array($rec)){
//get folder name
if ($rec[parent]>0) {
$pSQL="Select name from ".$pho_main." where id=$rec[parent]";
$pq = new query($DB, $pSQL);
$prec=$pq->getrow();
$par = $prec[name];
}
$SQL="select id, thread, author, subject, datestamp from $rec[table_name] order by datestamp desc limit $number";
$nq = new query($DB, $SQL);
$nrec=$nq->getrow();
if(is_array($nrec)) {
if ($curr_par != $par) echo "<br><b>$par</b>";
$curr_par = $par;
echo "<br><b><i>$rec[name]</i></b><br>\n";
while(is_array($nrec)){
echo "$nrec[author] - <a href=\"$forum_url/$read_page.$ext?f=$rec[id]&i=$nrec[id]&t=$nrec[thread]\"> $nrec[subject]</a><br>\n";
$nrec=$nq->getrow();
}
}
$rec=$q->getrow();
}
}
?>
Nu vill jag att antal tecken i ämnesraden ska kunna vara max 20 st.
Spango har postat en kodsnutt, som kanske kan vara till hjälp här. Den ser ut så här:
$txt = 'en massa långa ord';
$ptn = '/(\S{20})/'; # matcha och memorera 20 efterföljande icke-blanksteg
echo preg_replace($ptn, '\1 ', $txt);
Alltså hur kan jag få till ett blanksteg efter säg 20 tecken?
Blev lite fel där. :r Menar snarare så här: hejahejahejahejahejahejahejaheja skall istället synas så här: hejahejahejahejaheja...
Jag har suttit och ändrat lite och koden ser nu ut så här:
<?
// Original hack by Rene displays last 5 postings in forum 1.
//This hack will show the last 3 posted headlines in each forum sectioned by folders if any
chdir("../phorum/"); //again, don't forget to change this to suit your phorum dir.
include "common.php";
$curr_par = "";
$par = "";
$number=3; // number of messages to show.
//omit or change the forum name for your test forums.
// we select active forums tables that are not folders
$sSQL="Select id, name, table_name, parent from ".$pho_main." where active=1 and folder='0' and name!='Test' order by parent";
$q->query($DB, $sSQL);
$rec=$q->getrow();
if(is_array($rec)){
while(is_array($rec)){
//get folder name
if ($rec[parent]>0) {
$pSQL="Select name from ".$pho_main." where id=$rec[parent]";
$pq = new query($DB, $pSQL);
$prec=$pq->getrow();
$par = $prec[name];
}
$SQL="select id, thread, author, subject, datestamp from $rec[table_name] order by datestamp desc limit $number";
$nq = new query($DB, $SQL);
$nrec=$nq->getrow();
if(is_array($nrec)) {
if ($curr_par != $par) echo "<br><b>$par</b>";
$curr_par = $par;
echo "<br><b><i>$rec[name]</i></b><br>\n";
while(is_array($nrec)){
$subject = explode (" ", $nrec[subject]);
$i = 0;
while($subject[$i]) {
if(strlen($subject[$i]) >= 20){ $subject[$i] = substr ($subject[$i], 0, 20)."..."; }
$i++;
}
$subject = implode (" ", $subject);
echo "$nrec[author] - <a href=\"$forum_url/$read_page.$ext?f=$rec[id]&i=$nrec[id]&t=$nrec[thread]\"> $nrec[subject]</a><br>\n";
$nrec=$nq->getrow();
}
}
$rec=$q->getrow();
}
}
?>
Jag får inga felmeddelanden, men resultatet blir detsamma, som med översta exemplet, nämligen så att allt skrivs ut korrekt,
fast utan att ämnesraden begränsas till 20 tecken.
Nu får jag felet att en } på rad 45 är "oväntad". Tar jag bort denna }, kommer de tre punkterna (...) fram sist i ämnesraden, men dessutom upprepas ämnesraden massor av ggr.