Beste allen,

Ik ben al enige tijd bezig met een wordwrap functie voor mijn laatste forum berichten.

Graag zou ik zien dat deze forum titels maar 15 tekens breed zijn en dat daarachter ".." komt te staan.

Alles wat ik doe aan onderstaande code, zorgt voor een wit beeld...

Heb de functie wordwrap meerdere malen doorgenomen maar ik krijg het niet voor elkaar :( Iemand enig idee?

<?php
    // How Many Topics you want to display?
    $topicnumber = 5;
    // Change this to your phpBB path
    $urlPath = "/phpbb";
 
    // Database Configuration (Where your phpBB config.php file is located)
    include 'config.php';
 
    $table_topics = $table_prefix. "topics";
    $table_forums = $table_prefix. "forums";
    $table_posts = $table_prefix. "posts";
    $table_users = $table_prefix. "users";
    $link = mysql_connect("$dbhost", "$dbuser", "$dbpasswd") or die("Could not connect");
    mysql_select_db("$dbname") or die("Could not select database");
 
    $query = "SELECT t.topic_id, t.topic_title, t.topic_last_post_id, t.forum_id, p.post_id, p.poster_id, p.post_time, u.user_id, u.username
    FROM $table_topics t, $table_forums f, $table_posts p, $table_users u
    WHERE t.topic_id = p.topic_id AND
    f.forum_id = t.forum_id AND
    t.forum_id != 4 AND
    t.topic_status <> 2 AND
    p.post_id = t.topic_last_post_id AND
    p.poster_id = u.user_id
    ORDER BY p.post_id DESC LIMIT $topicnumber";
    $result = mysql_query($query) or die("Query failed");									
 
    print "<table cellpadding='3' cellSpacing='2' width='640'>";
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
 
    echo "<a href=\"$urlPath/viewtopic.php?f=$row[forum_id]&t=$row[topic_id]&p=$row[post_id]#p$row[post_id]\" TARGET=\"_blank\">" .
    $row["topic_title"] .
    "</a><br>";
    }
    print "</table>";
    mysql_free_result($result);
    mysql_close($link);
    ?>


Groeten
Schrijvers.
Bij word wrapping wordt een regel afgebroken over meerdere regels met een maximum bvreedte. Volgens mij is dat niet wat je wilt.

Volgens mij wil je iets als:

echo substr($row["topic_title"],0,15) . "...";
En dan een iets mooiere variant zodat hij niet halverwege woorden afbreekt:
<?php
/**
* @param string $string
* @param integer $limit The limit of characters
* @param integer $offset Where to start in the string. Default = 0
*
* @return string
*/
function excerpt($string, $limit, $offset = 0) {
$string = substr($string, $offset);

if ($limit > strlen($string)) {
return $string;
}

$limitedString = substr($string, 0, $limit);
$restString = substr($string, $limit);
$finishWord = substr($restString, 0, strpos($restString, ' '));
$finishWord = trim($finishWord, '.,!?:;');


return $limitedString.$finishWord;
}
?>
Hartelijk dank voor de code, echter ben ik weer meerdere malen aan de slag geweest deze ertussen te bouwen maar ik krijg telkens weer een wit scherm.

Aangezien op het forum vaak lange woorden langskomen, heb ik liever dat de titels na 15 tekens stoppen en er dan ... verschijnt.

Iemand die zo lief is mij heeel goed op weg te helpen?

De code hierboven van Wouter J doet precies dat!
Nu nog even excerpt($jouw_tekst) in je code duwen.
Ik krijg het maar niet voor elkaar....!!!!

Is er geen andere manier dan wordwrap om de titel kort te houden volgens mij is het gewoon niet mogelijk.
Ja, substr().
Maar excerpt() is een betere, uitgebreidere versie met dezelfde syntax.
Waar plaats ik dat het best dan?

Als ik deze codes ook maar ergens neerzet word me scherm wit.

Word het serieus echt gek van maar anders word me layout verneukt.

Iemand oplossing?
Vervang de $row["topic_title"] in regel 32 van de code in je eerste bericht door de substr($row["topic_title"],0,15) uit mijn vorige bericht en je bent er...

Reageren