2016-07-31 8 views
0

私は高校のNHSのウェブサイトを作成しています。ホームページには、お知らせがあります。ボード全体、つまりプログラミング経験のない多くの人がアナウンスを追加できるようにするために、アナウンスを誰でも簡単に作成できるようにしたいと考えています。SQLデータベースから複数の列を取得し、HTMLで表示する最も良い方法は?

私は現在、アナウンスのタイトル、メッセージのタイトル、アナウンスが投稿された日付、作成者の4つの列を含むSQLデータベースを持っています。

私の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); 

私の考えでは、データを取得する1つのマトリックスにそれを組み合わせるし、HTMLを生成するJavaScriptスクリプトにそれを渡すことです。明らかに、これはあまり効率的ではありません(または、そうかもしれません。私は完全な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ファイルinbetweenを望んで、物事を複雑にしていたと思う... – ryanyz10

1

複数の配列でデータをプッシュするのではなく、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

最適化いただきありがとうございます!あなたが気にしないならば、私はちょっと私がページロード時にこのデータを取得し、それをDOMに転送するJavaScript関数を書く方法について少し混乱しています。 – ryanyz10

+0

また、JSの間にも必要ですか? – ryanyz10

+0

@ ryanyz10 - AjaxでPHPの値でHTMLをラップし、繰り返し... – Rayon

関連する問題