2016-07-31 44 views
0

我正在爲我高中的NHS創建一個網站。在主頁上,我們想要公告。由於我想要整個董事會,許多沒有編程經驗的人,爲了能夠添加公告,我正試圖爲任何人添加通告創建一個簡單的方法。從SQL數據庫獲取多列並以HTML格式顯示的最佳方法?

我目前有一個SQL數據庫,其中包含4列:公告的標題,消息,發佈公告的日期和作者。

我的PHP腳本是這樣的:

$conn = mysqli_connect($servername, $username, $password, $dbname); 

if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 

$sql = "SELECT Title, Message, Date, Author FROM Announcements"; 
$result = mysql_query($sql); 

$titles = array(); 
$messages = array(); 
$dates = array(); 
$authors = array(); 



while($db_field = mysql_fetch_assoc($result)) { 
    $title = $db_field['Title']; 
    $message = $db_field['Message']; 
    $date = $db_field['Date']; 
    $author = $db_field['Author']; 

    $date = DATE("Y-m-d", $date); 

    $titles[] = $title; 
    $messages[] = $message; 
    $dates[] = $date; 
    $authors[] = $author; 

} 

$combined = array($titles, $messages, $dates, $authors); 

我的想法是獲取數據,它結合成一個矩陣,然後傳遞到JavaScript腳本,將生成的HTML。顯然,這不是很有效率(或者是,我是一個完整的PHP noob,正在學習中,哈哈),所以我想知道是否有更好的方法來做到這一點。

提前致謝!

+0

您是否需要通過javascript生成html表格 – jonju

+0

我不確定您的問題是什麼意思。我需要以某種方式將其轉換爲html元素。我真的不在乎它是否通過javascript。 – ryanyz10

+0

在[CodereviewSE](http://codereview.stackexchange.com/)可能會收到更好的問題。 – Timo

回答

1

這是做你想做的。這是沒有JavaScript。

<?php 
$conn = mysqli_connect($servername, $username, $password, $dbname); 
if (!$conn) { 
    die("Connection failed:" . mysqli_connect_error()); 
} 
$result = mysqli_query($conn,"SELECT Title, Message, Date, Author FROM Announcements"); 
$newresult= []; 
while($row= mysqli_fetch_assoc($result)) { 
    $title = $row['Title']; 
    $message = $row['Message']; 
    $date = DATE("Y-m-d",$row['Date']); 
    $author = $row['Author']; 
    $newresult[] = ['title'=>$title,'message'=>$message,'date'=>$date,'author'=>$author]; 
} 

echo '<table><thead>'. 
      '<tr> 
       <th>Title</th><th>Message</th><th>Date</th><th>Author</th> 
      </tr> 
    </thead> 
    <tbody>'; 
     foreach($newresult as $r){ 
      echo '<tr>'. 
        '<td>'.$r['title'].'</td>'. 
        '<td>'.$r['message'].'</td>'. 
        '<td>'.$r['date'].'</td>'. 
        '<td>'.$r['author'].'</td>'. 
       '</tr>'; 
     } 
echo '</tbody></table>'; 
?> 
+0

偉大的作品!猜猜我只是想讓一個JavaScript文件介於兩者之間而使事情變得複雜...... – ryanyz10

1

不是在多個數組中推送數據,而是將它推入單個數組中,以便您可以迭代它!

$conn = mysqli_connect($servername, $username, $password, $dbname); 

if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 

$sql = "SELECT Title, Message, Date, Author FROM Announcements"; 
$result = mysql_query($sql); 

$addData = array(); 
while($db_field = mysql_fetch_assoc($result)) { 
    $title = $db_field['Title']; 
    $message = $db_field['Message']; 
    $date = $db_field['Date']; 
    $author = $db_field['Author']; 
    $date = DATE("Y-m-d", $date); 
    $addData[] = array($title,$message,$date,$author); 
} 
var_dump($addData); 
+0

感謝您的優化!如果你不介意,我也對我如何編寫javascript函數感到困惑,它將在頁面加載時獲取這些數據並將其傳輸到DOM。 – ryanyz10

+0

或者JS之間甚至有必要? – ryanyz10

+0

@ ryanyz10 - 包裝你的HTML與PHP值和迭代的Ajax ... – Rayon

相關問題