2013-10-05 24 views
-1

我正在創建一個動態頁面,它回顯了很多divs,並從數據庫中提取了一個類和一個唯一的ID,以便輕鬆操作它們。我不確定我是否以最好的方式做到這一點,它似乎是馬虎,我很難理解。我希望有更多經驗的人能幫助我弄清楚是否有更好的方法來完成同樣的事情。例如:結合了php和大量的html

if ($comment['reply'] == 1) { 
    echo '<div class="comment">'; 
    echo $comment['comment']; 
    echo "</div>"; 
    echo '<BR /> <div class="replys" id="'.$comment['id'].'">'; 
    echo '</div>'; 
    echo '<div class="replyTo" id="'.$comment['id'].'reply">'; 
while ($replys = $stmt1->fetch(PDO::FETCH_ASSOC)) { 
    if ($replys['order_by'] % 2 == 0){ 
     echo '<div class="replyToEven">'; 
     echo $replys['reply']; 
     echo "</div>"; 
} else { 
     echo '<div class="replyToOdd">'; 
     echo $replys['reply']; 
     echo "</div>"; 
    } 

} 

我之所以把它呼應一個div是因爲我希望所有的內容是在單獨divs,而不是一個將數據從MySQL查詢分開。希望我已經提供了足夠的信息,讓我知道你是否需要了。

+2

你應該考慮使用像Smarty這樣的模板系統:http://www.smarty.net/ – Joren

+0

我同意@Joren使用模板系統。雖然我個人不是Smarty的粉絲。 – Boundless

+0

它是不是更聰明的使用一個回聲整個文本而不是回聲少? – Yotam

回答

1

您可以凝聚的代碼下降了不少,如果這就是你的意思:

if($comment['reply'] == 1){ 
    echo '<div class="comment">' . $comment['comment'] . '</div> <br />' . 
       '<div class="replys" id="' . $comment['id'] . '">' . '</div>' . 
       '<div class="replyTo" id="'.$comment['id'].'reply">'; 

    while($replys = $stmt1->fetch(PDO::FETCH_ASSOC)){ 
     if($replys['order_by'] % 2 == 0){ 
      echo '<div class="replyToEven">' . $replys['reply'] . "</div>"; 
     }else{ 
      echo '<div class="replyToOdd">' . $replys['reply'] . "</div>"; 
     } 
    } 
} 
0

您的數據庫中不應只有一列,用於爲數據庫分配替代行樣式。相反,您可以引入一個變量並對其進行檢查。

if ($comment['reply'] == 1) { 
    echo '<div class="comment">'; 
    echo $comment['comment']; 
    echo "</div>"; 
    echo '<BR /> <div class="replys" id="'.$comment['id'].'">'; 
    echo '</div>'; 
    echo '<div class="replyTo" id="'.$comment['id'].'reply">'; 
    $i = 0; 
while ($replys = $stmt1->fetch(PDO::FETCH_ASSOC)) { 
    if ($i % 2 == 0) 
     $class = "replyToEven"; 
    else 
     $class = "replyToOdd"; 

     echo '<div class="$class">'; 
     echo $replys['reply']; 
     echo "</div>"; 
     $i++; 
} 

你也可以寫在標籤爲:

<?php 
if ($comment['reply'] == 1) { 
?> 
<div class="comment"><?=$comment['comment']?></div><BR /> 
<div class="replys" id="<?=$comment['id']?>"></div> 
<div class="replyTo" id="<?=$comment['id']?>reply">'; 
<?php 
} 
?> 

這將使你的代碼了很多更具可讀性。

+0

通知:快捷方式''isn '默認情況下允許

1

一個關於PHP很酷的事情是,你可以將其嵌入到HTML。所以你可以做的是使用html佈局,並使用內聯php語句來處理你的值。我會向你展示一個你發佈的php的例子。

<?php if(comment['reply'] == 1 { ?> 
    <div class="comment"> 
     <?php echo $comment['comment']; ?> 
    </div> 
    <br/> 
    <div class="replys" id="<?php echo comment['id']; ?>" > 
    <div class="replyTo" id="<?php echo $comment['id']; ?>reply"> 
    <?php while ($replys = $stmt1->fetch(PDO::FETCH_ASSOC)) { ?> 
     <?php if ($replys['order_by'] % 2 == 0){ ?> 
      <div class="replyToEven"> 
      <? php echo $replys['reply']; ?> 
      </div> 
     <?php } else { ?> 
      <div class="replyToOdd">'; 
      <?php echo $replys['reply']; ?> 
      </div> 
<?php 
    } 
} 

?>

然後你就可以把這個片段,並在任何你想顯示這個格式的評論,你可以調用函數show_comments();,而不是將其放置在一個名爲show_comments();功能,在您的主模板再次輸入此代碼。