如何使用 PHP 显示从 MySQL 数据库中获取的更多文本
Posted
技术标签:
【中文标题】如何使用 PHP 显示从 MySQL 数据库中获取的更多文本【英文标题】:How to show more of text fetched from MySQSL database with PHP 【发布时间】:2021-04-09 01:56:52 【问题描述】:我有我的属性卡,其中还有描述 (从 DB 中获取),但由于它太长,我需要隐藏大部分并使用“阅读更多”按钮再次显示它. 我知道硬编码文本的解决方案,但我不知道如何将其应用于获取的数据。
我在想这样的事情:
<p class="card-text"><?php
if(strlen($fetch['description']) > 50)
echo '<a href="#" class="read-more">Show More</a>';
else
// SOLUTION HERE
?></p>
用于改变 show-more-show less 的 jQuery:
$(document)
.on('click','.read-more',function()
$(this).removeClass('read-more').addClass('show-less').html('Show Less').prev('.description').removeClass('ellipsis');
)
.on('click','.show-less',function()
$(this).removeClass('show-less').addClass('read-more').html('Read More').prev('.description').addClass('ellipsis');
);
【问题讨论】:
你为什么不在那个空间里回显 show less 链接呢?我错过了什么吗? 您通常如何处理硬编码文本 - 您是否需要将数据库中的描述值包装在额外的 HTML 标记中的前 50 个字符之外? 代码不起作用 - 是的,按钮从显示更多变为显示更少,但实际文本没有改变,您仍然可以看到完整的说明。假设我在数据库中的描述有 200 个字符,我在前端获取它 -echo $fetch['description']
但我只需要显示 200 个字符中的 50 个字符,点击“显示更多”按钮后 - 整个 200 个字符将出现跨度>
那么您是说您需要 PHP 中的逻辑来决定最初显示多少文本?我们无法看到您在何处或如何显示文本
您可以在我的帖子中看到它 - 我无法更详细地描述它。我只是错过了如何仅显示部分描述的 PHP 逻辑,单击显示更多按钮后,将显示整个描述。
【参考方案1】:
很抱歉这么说,但我认为你的方法是错误的。
如果 php 代码只是将前 50 个字符输出到 HTML 页面,例如使用 substr() 其余文本将不会出现在 HTML 代码中! 所以你的 jquery 将无法显示它(除非你使用 AJAX/Reload 这将是一个极端的过度杀伤)。
您的解决方案应该是:获取所有文本,如果太长,仅显示介绍文本,隐藏剩余文本并通过 JS/JQUERY 显示剩余文本,如帖子中所述 How to hide/show more text within a certain length (like youtube)
取自上面链接帖子的小提琴完全显示了所需的行为。http://jsfiddle.net/zA23k/215/
所以你的 HTML 输出应该看起来像(来自小提琴的修改代码)
[...]Mary had a little lamb
<span class="complete">
Its fleece was white as snow And everywhere that Mary went</span>
<span class="more">more...</span>
[...]
所以你的代码应该是这样的:
<p class="card-text"><?php
$txt=$fetch['description'];
if(strlen($txt) < 50)
echo $txt;
else
echo substr($txt,0,50)."<span class=\"complete\">". substr($txt,50)."</span>". "<span class=\"more\">more...</span>";
?>
这个非常简单的 substr() 解决方案有一个缺点: 如果位置 50 在一个单词中,则该单词将被截断。 这可以通过wordwrap() 或正则表达式修复
【讨论】:
感谢 Alexander 明确我的问题 - 我明白了,你将我重定向到正确的路径,但我仍然没有得到 html - 我应该将什么放入“完整”类等等- 所有文本都是从 db 中获取的,所以它会是<span class="complete"> $fetch['description']</span>
?
请参阅我在原始答案中发布的小提琴 - 在那里您可以找到用于隐藏长文本的 JS + CSS 代码。 (最初它被 CSS [ .completedisplay:none; 隐藏 - 然后通过单击更多它由 jquery 切换显示 - 如果您按照小提琴并使用那里的代码,它应该可以正常工作。### # 如果我的回答对你有帮助,请点击上面的接受回答。;-)
>所有文本都是从 db 中获取的,所以它会是 >$fetch['description'] #### NO.请使用我在上面的答案中发布的代码。它在预告片中发布前 50 个字符,在最初隐藏的 元素中发布剩余文本。
以上是关于如何使用 PHP 显示从 MySQL 数据库中获取的更多文本的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PHP 和 Smarty 同时获取数据并在浏览器中显示?
使用 PHP 从 MySQL 数据库中获取数据,以表格形式显示以进行编辑