2016-03-08 85 views
1

这一个将有点难以解释,但我会尽我所能。PHP把正确的行放在正确的html div

我有一个数据库与一个名为内容与3列的表,我试图得到的值作为行,并把它们放在不同的<div>’s。这里是我写到目前为止

<?php 
$sql = "SELECT * FROM content"; 
$query = mysqli_query($db, $sql) or die (mysqli_error()); 

$contentDisplay = ''; 
while ($row = mysqli_fetch_array($query)) { 

    $content_id = $row["id"]; 
    $content_title= $row["title"]; 
    $content_text = $row["text"]; 

    $contentDisplay .= '<h1>'.$content_title.'</h1> <p>'.$content_text.'</p>' ."\n";   
} 

$row_cnt = $query->num_rows; 
printf("Result set has %d rows.\n", $row_cnt); 

?> 

行计数给出4行是正确的行数。

在我的HTML我有<?php echo $contentDisplay; ?>这之后对方拿出所有的4行,但我需要显示的第一行中我第一次<div>,在第二行中我的第二个<div>等等。在此先感谢

更新:我忘了说,我有我的<div>'s与不同风格的HTML部分。所有我需要的是一个在第一行<div>(如在页面的顶部)和第二行中的另一个<div>(如在页面的底部):)

UPDATE2:这里是HTML代码

<div class="content-top"> 
    <section> 
     <h1></h1> 
     <p></p> 
    </section> 
</div> 

<div class="content-left"> 
    <section> 
     <h1></h1> 
     <p></p> 
    </section> 
</div> 

<div class="content-center"> 
    <section> 
     <h1></h1> 
     <p></p> 
    </section> 
</div> 

<div class="content-right"> 
    <section> 
     <h1></h1> 
     <p></p> 
    </section> 
</div> 

我想显示在<div class="content-top">第一行的第二行中<div class="content-left"><div class="content-center">第三行和第四行中<div class="content-right">

+1

不知道我理解你的更新。只有两行,他们应该在两个预定义的'div's?如果您也发布了部分代码,这可能会有所帮助!顺便说一句欢迎来到SO。 –

+0

你是正确的先生。谢谢:)看到第二个更新与HTML代码。 – Nevel

+0

当查询返回的行数超过4行时,你该怎么办? – jeoj

回答

0
<?php 
$sql = "SELECT * FROM content"; 
$query = mysqli_query($db, $sql) or die (mysqli_error()); 

$rows = []; 
while ($row = mysqli_fetch_array($query)) 
    $rows[] = '<h1>'.$row['title'].'</h1> <p>'.$row['text'].'</p>' . "\n";   
?> 

<div class="content-top"> 
    <section> 
     <?php echo $rows[0]; ?> 
    </section> 
</div> 

<div class="content-left"> 
    <section> 
     <?php echo $rows[1]; ?> 
    </section> 
</div> 

<div class="content-center"> 
    <section> 
     <?php echo $rows[2]; ?> 
    </section> 
</div> 

<div class="content-right"> 
    <section> 
     <?php echo $rows[3]; ?> 
    </section> 
</div> 
+0

请参阅更新:) – Nevel

+0

Omg谢谢先生。它的工作就像一个魅力。我一直在这个决斗三天了。我确实有一个问题:)'$ rows = [];' – Nevel

+1

'$ rows = [];''会将'$ rows'声明为一个空数组。请注意,此语法仅适用于PHP版本5.4及更高版本。在此之前的版本中,您将不得不使用'$ rows = array();''rows rows [] =“value”;'为数组的末尾添加一个值。 – jeoj

0
$contentDisplay .= '<div><h1>'.$content_title.'</h1> <p>'.$content_text.'</p></div>' ."\n"; 

只需为每行添加div? :)这样,数据库中的每一行都会得到一个div。

每行都会附加到$contentDisplay变量,但由于您所做的只是打印它,因此您可以直接打印html。

我不确定你为什么会被低估,因为你要求一个有效的代码问题来显示你到目前为止所尝试过的。

+0

请参阅更新:) – Nevel