You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为PHP查询结果设置样式并换行?美化滚动Marquee效果求助

解决PHP查询结果滚动展示的样式与换行问题

嘿,我来帮你搞定这个问题!咱们分两部分来处理:一是给从数据库拿到的结果加样式和换行,二是美化滚动效果的样式。

一、完善PHP代码:给查询结果加样式与换行

首先我把你的代码补全并优化,重点是给每条查询结果套上可样式化的HTML容器,同时处理换行问题:

<?php 
$data_source='ss'; 
$user='su'; 
$password='pass'; 

// 连接到数据源并获取该连接的句柄 
$conn=odbc_connect($data_source,$user,$password); 
if (!$conn){ 
    if (phpversion() < '4.0'){ 
        exit("Connection Failed: " . $php_errormsg); 
    } else{ 
        exit("Connection Failed:" . odbc_errormsg()); 
    } 
} 

// 替换成你实际的SQL查询,这里假设你要获取标题和内容
$sql="SELECT title, content FROM your_table_name"; 
$result=odbc_exec($conn,$sql); 

// 外层容器,方便整体样式控制
echo '<div class="scroll-wrapper">';
// 用marquee标签实现滚动,给它加自定义类方便样式
echo '<marquee class="custom-scroll">';

// 循环遍历每一条查询结果
while($row=odbc_fetch_array($result)){
    // 给每条结果套一个独立容器,方便单独加样式,同时自动换行
    echo '<div class="scroll-item">';
    // 用htmlspecialchars防止XSS攻击,同时给标题加标签
    echo '<h4>' . htmlspecialchars($row['title']) . '</h4>';
    // nl2br把数据库里的换行转成HTML的<br>标签,实现内容换行
    echo '<p>' . nl2br(htmlspecialchars($row['content'])) . '</p>';
    echo '</div>';
}

echo '</marquee>';
echo '</div>';

// 记得关闭数据库连接
odbc_close($conn);
?>

这里几个关键细节:

  • htmlspecialchars():防止用户输入的特殊字符破坏HTML结构,同时避免XSS攻击,一定要加!
  • nl2br():把数据库中存储的换行符(\n)转换成HTML的<br>标签,让内容在网页上正常换行。
  • 用<div class="scroll-item">包裹每条结果:这样可以给每条数据单独设置样式,而且块级元素会自动换行,不用额外加<br>。

二、给滚动效果和查询结果加CSS样式

接下来写CSS样式,不管是用原生的<marquee>还是现代CSS动画,都能轻松美化:

方案1:给原生<marquee>加样式

/* 外层容器样式,控制整体布局 */
.scroll-wrapper {
    width: 90%;
    max-width: 1200px;
    margin: 20px auto;
    border: 1px solid #e0e0e0;
    padding: 15px;
    border-radius: 8px;
    background-color: #fafafa;
}

/* 自定义marquee的滚动样式 */
.custom-scroll {
    font-size: 15px;
    line-height: 1.7;
    color: #333;
    scrollamount: 2; /* 控制滚动速度,数值越大越快 */
    direction: left; /* 滚动方向:left/right/up/down */
    behavior: scroll; /* 滚动方式:scroll(循环滚动)/slide(滑一次)/alternate(来回滚) */
}

/* 每条查询结果的样式 */
.scroll-item {
    margin-bottom: 12px;
    padding-bottom: 10px;
    border-bottom: 1px dashed #ccc;
}

.scroll-item h4 {
    margin: 0 0 5px 0;
    color: #2d3748;
    font-weight: 600;
}

.scroll-item p {
    margin: 0;
    color: #4a5568;
}

方案2:用现代CSS动画代替<marquee>(更推荐)

原生<marquee>标签其实已经被W3C标记为过时特性,虽然大部分浏览器还支持,但用CSS动画更灵活、可控性更强,这里给你一个水平滚动的示例:

修改后的HTML/PHP部分:

// 把原来的marquee换成普通div
echo '<div class="scroll-wrapper">';
echo '<div class="css-scroll">';
while($row=odbc_fetch_array($result)){
    echo '<div class="scroll-item">';
    echo '<h4>' . htmlspecialchars($row['title']) . '</h4>';
    echo '<p>' . nl2br(htmlspecialchars($row['content'])) . '</p>';
    echo '</div>';
}
echo '</div>';
echo '</div>';

对应的CSS:

.scroll-wrapper {
    width: 90%;
    max-width: 1200px;
    margin: 20px auto;
    border: 1px solid #e0e0e0;
    padding: 15px;
    border-radius: 8px;
    background-color: #fafafa;
    overflow: hidden; /* 隐藏超出容器的内容 */
}

.css-scroll {
    display: flex;
    gap: 30px; /* 每条数据之间的间距 */
    animation: scroll-left 30s linear infinite;
}

/* 每条查询结果保持块级显示 */
.scroll-item {
    min-width: 300px; /* 每条数据的最小宽度,防止被挤压 */
    padding: 10px;
    border: 1px solid #eee;
    border-radius: 4px;
    background-color: white;
}

.scroll-item h4 {
    margin: 0 0 5px 0;
    color: #2d3748;
    font-weight: 600;
}

.scroll-item p {
    margin: 0;
    color: #4a5568;
    font-size: 14px;
}

/* 定义滚动动画 */
@keyframes scroll-left {
    0% {
        transform: translateX(100%);
    }
    100% {
        transform: translateX(-100%);
    }
}

如果需要垂直滚动,只需要调整CSS的动画和布局,把flex改成垂直方向,动画改成translateY即可。

内容的提问来源于stack exchange,提问作者ganga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:07:16