2015-02-17 5 views
0

Я пытаюсь сделать paginating блог с помощью PHP, HTML и MySQL. Я написал код, но по какой-то причине веб-страница отображается пустым. Что случилось с моим кодом? Консоль Chrome возвращает 500 внутренних ошибок сервера.Paginating мой блог не работает

<div id="article"> 

<?php 
    include 'php/mysql_connect.php'; 
    if(empty($_GET)){ 
    $current_id = SELECT max(id) FROM posts; 
    } 
    else{ 
    $current_id = mysql_safe_string($_GET['id']); 
    } 

    $result = mysql_safe_query('SELECT * FROM posts WHERE id=%s LIMIT 1',$current_id); 
    if(!mysql_num_rows($result)){ 
    echo '<h2>No Posts Found</h2>'; 
    exit; 
    } 

    $row = mysql_fetch_assoc($result) 
    echo '<h2>'.$row['title'].'</h2>'; 
    echo '<div class="row">'; 
    echo ' <div class="group1 col-sm-6 col-md-6">'; 
    echo ' <span class="glyphicon glyphicon-pencil"></span><a data-toggle="collapse" data-target="#comments" class"collapsed">'.$row['num_comments'].' Comments </a>'; 
    echo ' <span class="glyphicon glyphicon-time"></span>'.date('F j<\s\up>S</\s\up>, Y', $row['date']); 
    echo ' </div>'; 
    echo '</div>'; 
    echo '<br />'; 
    echo '<p class="lead">'.n12br($row['body']).'</p>'; 
    ?> 

    <div id="comments" class="collapse" > 
    <div class="well"> 
     <h4>Leave a comment</h4> 
     <?php echo '<form role="form" method="post" action="php/comment_add.php?id=($current_id)" class="clearfix">'; ?> 
     <div class="col-md-6 form-group"> 
      <label class="sr-only" for="name">Name</label> 
      <input type="text" class="form-control" id="name" placeholder="Name" required /> 
     </div> 
     <div class="col-md-6 form-group"> 
      <label class="sr-only" for="email">Email</label> 
      <input type="email" class="form-control" id="email" placeholder="Email" required /> 
     </div> 
     <div class="col-md-12 form-group"> 
      <label class="sr-only" for="content">Comment</label> 
      <textarea class="form-control" id="content" placeholder="Comment" required></textarea> 
     </div> 
     <div class="col-md-12 form-group text-right"> 
      <button type="submit" class="btn btn-primary">Submit</button> 
     </div> 
     </form> 
    </div> 
    <br> 

<?php 
    $result = mysql_safe_query('SELECT * FROM comments WHERE post_id=%s ORDER BY date ASC',$current_id); 
    echo ' <ul id="comments" class="comments">'; 

    while($row = mysql_fetch_assoc($result)){ 
    echo ' <li class="comment">'; 
    echo '  <div id="inline" ><h4 style="display:inline;">'.$row['name'].'</h1><sup><p style="display:inline; font-size:10px;">&nbsp; '.date('j-M-Y g:ia', $row['date']).'</p></sup></div>'; 
    echo '  <em>'.n12br($row['content']).'</em>'; 
    echo ' </li>'; 
    echo ' </ul>'; 
    } 
?> 
    <hr> 
    </div> 
</div> 

<nav> 
    <ul class="pager"> 
<?php 

    $newer_id = IFNULL(mysql_safe_query('SELECT min(id) FROM posts WHERE id > $current_id ORDER BY id ASC LIMIT 1'),-1); 
    $older_id = IFNULL (mysql_safe_query('SELECT max(id) FROM posts WHERE id < $current_id ORDER BY id ASC LIMIT 1'),-1); 

    if($newer_id != -1){ 
     echo '<li><a href="#">Newer</a></li>'; 
    } 
    if ($older_id != -1){ 
     echo '<li><a href="#">Older</a></li>'; 
    } 
?> 
    </ul> 
</nav> 

Это PHP/mysql_connect.php, который должен предотвратить SQL-инъекции (я получил это из учебника):

<?php 
// mysql.php 
function mysql_safe_string($value) { 
    $value = trim($value); 
    if(empty($value))   return 'NULL'; 
    elseif(is_numeric($value)) return $value; 
    else      return "'".mysql_real_escape_string($value)."'"; 
} 

function mysql_safe_query($query) { 
    $args = array_slice(func_get_args(),1); 
    $args = array_map('mysql_safe_string',$args); 
    return mysql_query(vsprintf($query,$args)); 
} 

function redirect($uri) { 
    header('location:'.$uri); 
    exit; 
} 

mysql_connect('localhost','(username)','(password)'); 
mysql_select_db('(database)'); 

Из журналов я Расположить недостаточность, которая является:

Syntax error, unexpected 'max' (T_STRING) on line 6 (if(empty($_GET)){$current_id = SELECT max(id) FROM posts}) 
+2

Если вы получаете '500', то где-то должен быть журнал. Проводка соответствующих частей будет первым шагом, чтобы четко определить, с какой ошибкой вы столкнулись. – h7r

+0

Ошибка синтаксиса, неожиданный «max» (T_STRING) в строке 6 (если (пустой ($ _ GET)) {$ current_id = SELECT max (id) FROM posts}) – xSpartanCx

+1

Вы использовали старый учебник. 'mysql_ *' функции (известные как 'ext/mysql') устарели и не должны использоваться. Вместо этого вы должны использовать ['PDO'] (http://php.net/manual/en/book.pdo.php) или [' mysqli'] (http://php.net/manual/en/book.mysqli .php). – prodigitalson

ответ

0

Если ваш файл myfile.html, и у вас нет разрешения на встроенный PHP, он не будет выполняться на сервере.

1
if(empty($_GET)){ 
    $current_id = SELECT max(id) FROM posts; 
} 

никаких котировок вокруг sql является ошибкой.

1

Как указывалось другим (и это должно быть сразу видно из-за ошибки синтаксиса, с которой вы сталкиваетесь), ваш запрос $current_id не цитируется. Хорошим началом является фиксация первого блока как такового:

if(empty($_GET)) { 
    $current_id = "SELECT max(id) FROM posts;"; 
} else { 
    $current_id = mysql_safe_string($_GET['id']); 
} 
+0

А, я вижу. Спасибо. Имеет ли значение, являются ли они одиночными или двойными кавычками? – xSpartanCx

+0

В этом случае нет. – h7r

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