【问题标题】:PHP printf; Css only works on first row from databasePHP 打印; Css 仅适用于数据库的第一行
【发布时间】:2016-06-22 12:58:05
【问题描述】:

需要帮助。我试图在我的页面上显示阅读器 cmets。 cmets 保存在数据库 (MySQL) 中。我使用了printf(String, args1,args2) 并在其上添加了一些 css 样式。奇怪的是,css 仅适用于第一条评论。

if ($conn = mysqli_connect("$servername", "$username", "$password", "$dbname")){
    $sql = "SELECT * FROM kommentare ORDER BY datum DESC";
    $ergebnis = mysqli_query($conn, $sql);
    while ($zeile = mysqli_fetch_object($ergebnis)){
        **$format = "<p><span id='ueberschrift'>%s<span/>&nbsp;<span id='writer'><a href='mailto:%s'>%s<a/> schrieb am:%s<span/><p/>
             <p id='kommentare'>%s<p/><hr/>";
        printf($format,
               htmlspecialchars($zeile->ueberschrift),     
               urlencode($zeile->email),
               htmlspecialchars($zeile->name),
               htmlspecialchars(date("d.m.Y, H:i", $zeile->datum)),

               nl2br(htmlspecialchars($zeile->kommentar))
              );**
    }
} else {
    echo "Fehler: ".  mysqli_connect_error(). "!";
}    

#writer{
    font-weight: normal;
    float:right;   
}

 #ueberschrift {
       font-weight: bold;
       font-size: 14px;
}

float:right 仅适用于第一条评论(数据库的最后一行) 我做错了什么?这是image of the page

【问题讨论】:

  • 使用类来设置样式而不是 id
  • 我试过了,还是不行。 :(

标签: php html mysql css printf


【解决方案1】:

尝试使用

<span class ='ueberschrift'
<span class ='writer'

不是

<span id ='ueberschrift'
<span id='writer'

每个 id 应该是唯一的,并且每个 html 文档只出现一次。类可以出现多次。

CSS 将是:

.writer{
    font-weight: normal;
    float:right;   
}

 .ueberschrift {
       font-weight: bold;
       font-size: 14px;
}

https://css-tricks.com/the-difference-between-id-and-class/

【讨论】:

  • 我把所有东西都改成了类:还是不行 :(
  • 尝试发布生成的 HTML 而不是 PHP 代码。
  • 尝试在您期望格式化的地方使用 chrome 或 firefox 检查器,看看为什么没有应用 css id 或类。
  • 所以我把一切都放到网上2sigma.ch/index.php 对我来说看起来不错,除了在某些行中 的末尾有“==$0”,我真的不知道这是什么意思.如您所见,浮动右侧仅适用于第一条评论!
  • 你正在关闭你的 p,span 并且标签错误地应该是 而不是

【解决方案2】:

检查你的html结束标签,all你的html结束标签是错误的。

斜线/ 应该放在&lt; 之后,所以它就像&lt;/tag&gt;,除了像&lt;br /&gt;&lt;hr /&gt; 等自闭标签。

<span/> should be </span>
<a/> should be </a>
<p/> sholud be </p>

这里是你的代码的完成

if ($conn = mysqli_connect("$servername", "$username", "$password", "$dbname")){
    $sql = "SELECT * FROM kommentare ORDER BY datum DESC";
    $ergebnis = mysqli_query($conn, $sql);
    while ($zeile = mysqli_fetch_object($ergebnis)){
        **$format = "<p><span id='ueberschrift'>%s</span>&nbsp;<span id='writer'><a href='mailto:%s'>%s</a> schrieb am:%s</span></p>
             <p id='kommentare'>%s</p><hr />";
        printf($format,
               htmlspecialchars($zeile->ueberschrift),     
               urlencode($zeile->email),
               htmlspecialchars($zeile->name),
               htmlspecialchars(date("d.m.Y, H:i", $zeile->datum)),

               nl2br(htmlspecialchars($zeile->kommentar))
              );**
    }
} else {
    echo "Fehler: ".  mysqli_connect_error(). "!";
} 

它可能会帮助你https://www.w3.org/TR/html5/syntax.html#end-tags

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-06
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    • 2018-03-04
    • 2015-12-09
    • 2012-03-26
    相关资源
    最近更新 更多