2014-11-30 2 views
-2

Я пытаюсь распечатать в таблице, но я не уверен, как использовать PDO. Это моя попытка.PDO Вывод печати в таблице

require_once('connect.php'); 
$sql = "SELECT CourseID, Module_Name,ModuleID, Module_Code, Module_Year FROM 
coursemodule ORDER BY ModuleID ASC"; 
$stmt = $db->prepare($sql); 
$stmt->bindParam(':ModuleID', $CourseID, PDO::PARAM_INT); 
$stmt->execute(); 
while ($output = $stmt->fetch(PDO::FETCH_OBJ)) { 
    echo "<p>" . $output->Module_Name . " " . $output->Module_Code . "</p>\n"; 

} 

и

 <div class="table-responsive"> 
    <table class="table table-bordered table-striped table-hover table-condensed"> 
     <thead> 
     <tr> 
     <th>Modules from Current Course</th> 
     <th>Modules from New Course</th> 

    <th colspan="3"></th> 
    </tr> 
</thead> 
    <tbody> 

Я знаю, что я должен хранить данные из запроса затем распечатать его в таблице, но все попытки не приведут ни к чему. Может ли кто-нибудь помочь?

EDIT Последние попытки

try 
{ 
    $sql = "SELECT * FROM coursemodule WHERE ModuleID=?"; 
    $stmt = $db->prepare($sql); 
    $stmt->execute(array(
    $_POST['ModuleID'] 
)); 
$result = $stmt->fetchAll(); 
?> 
<h1>Course Modules</h1> 


<div class="table-responsive"> 
<table class="table table-bordered table-striped table-hover table-condensed"> 
<thead> 
    <tr> 
    <th>ID</th> 

<th colspan="3"></th> 
</tr> 

 <?php 
    foreach ($result as $row) 
    { 

     <tr> 
     <td>echo {$row['ModuleID']}</td> 

     <td> 


    } // End Foreach 
    ?> 
    </tbody> 
</table> 
</div> 

Получение ошибки 'Ошибка синтаксического разбора: ошибка синтаксиса, неожиданный' < '' связано с моей попыткой эхо в таблице.

+1

[** Чтение руководства **] (http://php.net/pdo.prepared-statements) помог бы. Кроме того, проверка ошибок. –

+0

Чтобы напечатать что-то в таблице, вам нужно добавить строки и столбцы. На данный момент ваш код просто эхом абзацев с именем модуля и кодом модуля. Ваш запрос возвращает что-нибудь? Где проблема? – ymas

+0

@ymas Querry работает и распечатывается отлично, но за столом. Я просто не знаю, как сохранить имя/код модуля, а затем снова открыть его в классе таблицы для печати. – mkra

ответ

1

Поскольку проблем с запросом нет, то для заполнения таблицы вам нужно добавить строки и столбцы. Например, вы можете сделать что-то вроде этого:

<table class="table table-bordered table-striped table-hover table-condensed"> 
    <thead> 
    <tr> 
     <th>Modules from Current Course</th> 
     <th>Modules from New Course</th> 
    </tr> 
    </thead> 
    <tbody> 
    <?php foreach ($modules as $module): ?> 
    <tr> 
     <td><?php echo $module['Module_Name']; ?></td> 
     <td><?php echo $module['Module_Code']; ?></td> 
    </tr> 
    <?php endforeach; ?> 
    </tbody> 
</table> 

Не помещайте операторы SQL в том же месте, как вы кладете вид кода (это будет кошмар, чтобы поддерживать в будущем, и это привычка, вы должны а не). В моем решении я предполагаю, что вы назначаете набор результатов из запроса переменной с именем $modules.

Смотрите документацию для fetchAll:

http://php.net/manual/en/pdostatement.fetchall.php

Примечание Вам нужно будет адаптировать мой сниппет к вашим потребностям, я просто показываю вам пример из заполнения таблицы со строками и колонны.

Update Попробуйте изменить код генерирующий таблицы в последней попытке это:

<div class="table-responsive"> 
    <table class="table table-bordered table-striped table-hover table-condensed"> 
    <thead> 
    <tr> 
     <th>ID</th> 
     <th colspan="3"></th> 
    </tr> 
    <tbody> 
    <?php foreach ($result as $row): ?> 
    <tr> 
     <td><?php echo $row['ModuleID']; ?></td> 
     <td colspan="3"> 
    </tr> 
    <?php endforeach; ?> 
    </tbody> 
    </table> 
</div> 
+0

Является ли способ, которым вы показали, не рекомендуется, или это было со ссылкой на мой код? – mkra

+0

Я имел в виду смешивание кода представления SQL и HTML вместе. Это не рекомендуется. – ymas

+0

Причина появления сообщения об ошибке в вашей последней попытке заключается в том, что вы помещаете HTML непосредственно в PHP, смотрите мой ответ и пытаетесь отразить это в своем коде. – ymas

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