Det går nog inte att fixa direkt i queryn men det går ju att fixa när du skriver ut det på sidan.
if(strlen($row['meddelande']) > 80) {
echo substr($meddelande['meddelande'], 0, 77) . "...";
} else {
echo $row['meddelande'];
}
9 svar · 922 visningar · startad av Andreas_J
Hej!
Jag håller på att försöka hämta ut de senaste phpbb2-trådarna från mitt forum till min startsida. Har fått ut så att trådarna syns, men har ett problem bara.
Finns det något sätt att begränsa antalet tecken per rad när man hämtar från mysql?
Alltså, om någon skapar en tråd med ett långt namn nu så förstör det utseendet på sidan:
"Kolla in den här coola bilen som jag precis hittade"
Jag vill kunna ställa in så att exemplet ovan istället blir:
"Kolla in den här coola bilen som....."
Någon som vet?
Det går nog inte att fixa direkt i queryn men det går ju att fixa när du skriver ut det på sidan.
if(strlen($row['meddelande']) > 80) {
echo substr($meddelande['meddelande'], 0, 77) . "...";
} else {
echo $row['meddelande'];
}
Du har även LEFT, RIGHT och SUBSTR i mySql så det kan du med fördel göra där.
I alla fall inte hämta fler tecken än vad du skall använda.
SELECT LEFT(meddelande,80) FROM tabell ...
Jag tipsar om min egna utmärkta funktion :h
http://www.webforum.nu/showthread.php?p=1320835#post1320835
Travoni skrev:
Du har även LEFT, RIGHT och SUBSTR i mySql så det kan du med fördel göra där.
I alla fall inte hämta fler tecken än vad du skall använda.SELECT LEFT(meddelande,80) FROM tabell ...
Ah, det finns det ju.
Vad mycket man glömmer när man inte använder det. :)
Tack för hjälpen! Men jag får det inte riktigt att fungera, är väl för dålig på det här helt enkelt :P
Så här ser koden ut:
<?php
function show_posts($limit = 10)
{
global $wpdb;
//Put your phpBB and wordpress database info here:
$WPDB = "blabla_com"; //WP db name
$PHPBBDB = "blabla_com"; //phpBB db name
$USERS_TABLE = "phpbb_users"; //phpbb user table
$TOPICS_TABLE = "phpbb_topics"; //phpbb topics table
$POSTS_TABLE = "phpbb_posts"; //phpbb posts table
$SITEURL = "http://www.blabla.com/forum"; //Forum URL with trailing /
//Do not edit beyond this point
$wpdb->select($PHPBBDB);
$results = $wpdb->get_results("SELECT * FROM $POSTS_TABLE ORDER BY post_time DESC LIMIT $limit");
if ($results)
{
foreach ($results as $post)
{
$user = $wpdb->get_row("SELECT * FROM $USERS_TABLE WHERE user_id = $post->poster_id");
$topic = $wpdb->get_row("SELECT * FROM $TOPICS_TABLE WHERE topic_id = $post->topic_id");
if($user && $topic)
{
echo "<a href='" . $SITEURL . "/viewtopic.php?t=$post->topic_id'>";
echo "<strong>$user->username: </strong> $topic->topic_title<br>\n";
echo "</a>";
echo "</li>";
}
}
}
$wpdb->select($WPDB);
}
?>
Har verkligen försökt men fattar inte vart jag ska ändra? :\
Som den skriver ut nu så skriver den: Användarnamn:Tråd.
Någon som vet, eller behöver jag förklara något annat? :D tack i förhand
Låt oss använda Troxys funktion.
<?php
function str_truncate($input, $length, $tail = '...') {
if (!strlen($input) > $length) {
return $input;
} else {
$output = substr($input, 0, $length);
$dot = strrpos($output, '.');
$space = strrpos($output, ' ');
$output = substr($output, 0, ($dot > $space? $dot : $space)) . $tail;
return $output;
}
}
function show_posts($limit = 10)
{
global $wpdb;
//Put your phpBB and wordpress database info here:
$WPDB = "blabla_com"; //WP db name
$PHPBBDB = "blabla_com"; //phpBB db name
$USERS_TABLE = "phpbb_users"; //phpbb user table
$TOPICS_TABLE = "phpbb_topics"; //phpbb topics table
$POSTS_TABLE = "phpbb_posts"; //phpbb posts table
$SITEURL = "http://www.blabla.com/forum"; //Forum URL with trailing /
//Do not edit beyond this point
$wpdb->select($PHPBBDB);
$results = $wpdb->get_results("SELECT * FROM $POSTS_TABLE ORDER BY post_time DESC LIMIT $limit");
if ($results)
{
foreach ($results as $post)
{
$user = $wpdb->get_row("SELECT * FROM $USERS_TABLE WHERE user_id = $post->poster_id");
$topic = $wpdb->get_row("SELECT * FROM $TOPICS_TABLE WHERE topic_id = $post->topic_id");
if($user && $topic)
{
echo "<a href='" . $SITEURL . "/viewtopic.php?t=$post->topic_id'>";
// ändra 20 till ett antal tecken som passar dig
echo "<strong>$user->username: </strong>".str_truncate($topic->topic_title,20)."<br>\n";
echo "</a>";
echo "</li>";
}
}
}
$wpdb->select($WPDB);
}
?>
Fungerade perfekt! Tack så mycket för hjälpen :D
Vill bara tipsa om att PHP har en inbyggd funktion för smart uppdelning av strängar: Wordwrap
http://docs.php.net/manual/en/function.wordwrap.php
Med den kan vi snygga till Troxys funktion och troligen göra den snabbare:
function str_truncate($input, $length, $tail = '…') {
$lines = wordwrap($input,$length,"\n",true);
$lines = explode("\n",$lines);
return $lines[0];
}