2016-07-31 2 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); 

Моя идея заключается в том, чтобы получить данные, объединить их в одну матрицу, а затем передать, что в яваскрипта скрипт, который будет генерировать HTML. Очевидно, что это не очень эффективно (или, может быть, и есть. Я полный PHP noob, который учится на ходу haha), поэтому мне интересно, есть ли лучший способ сделать это.

Заранее благодарен!

+0

вам нужно сгенерировать таблицу HTML только через JavaScript – 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 - Ajax обертывания вашего HTML с значениями php и итерацией ... – Rayon

Смежные вопросы