2014-06-22 2 views
0

2 주 전 나는 정적 인 웹 페이지에서 동적 인 웹 페이지로 전환하여 삶을 더 쉽게 만들었습니다. 결과는 매일 좋아 보이지만 여전히 해결할 수없는 몇 가지 문제가 있습니다.동적 웹 페이지 : 이전 및 다음 블로그 게시물에 연결하는 방법

다음 목표는 "id"를 기반으로 각 페이지 하단의 두 div에있는 이전 및 다음 블로그 게시물에 대한 링크를 추가하는 것입니다.

각 블로그 게시물의 URL은 ID와 제목 구성 "domain.com/id/title"

예 :

의 난으로 블로그 게시물을 읽고 있어요 가정 해 봅시다 id = 2. id = 1 (이전) 및 3 (다음) 인 블로그 게시물에 어떻게 링크합니까?

<?php 
    (connect to database) 
    $id = str_replace ('-', ' ', $_GET['id']); 
    $sql = "SELECT * FROM `newstable` WHERE `id` = '$id'"; 
    $result = $conn->query($sql); 
    if ($result->num_rows > 0) { 
    while($row = $result->fetch_assoc()) { 
?> 

<div class="content-title"> 
    <?php echo $row['title'];?> 
</div> 

<div class="content-text"> 
    <?php echo $row['text'];?> 
</div>  


<div id="previous post"> 
    ........... 
    (here comes the link to the previous post, I need to link to the correct url so that means I'll need to echo the id AND the title of that previous post) 
</div> 

<div id="next post"> 
    ........... 
    (here comes the link to the next post, I need to link to the correct url so that means I'll need to echo the id AND the title of that next post) 
</div> 
+0

정확한 문제는 아이디의 올바른을 얻거나 링크를 생성 무엇입니까? – jeroen

+0

ID의 데이터 유형은 무엇입니까 ?? –

+0

@jeroen 올바른 이드와 제목을 얻는 것이 문제입니다. – Stan

답변

0

다음은 필요한 것을 얻기 위해 사용할 수있는 간단한 방법입니다.

코드가 테스트되지 않았으므로 오류가 발생할 수 있습니다. 아래 설명이나 Google의 도움을 받아 명확하게 설명 할 수 있습니다.

그러나이 과정을 통해 필요한 논리를 이해하기를 바랍니다.

<?php 
    function selectFromDatabase($queryToRun){ // A function to facilitate the querying of the database. It returns an array. 
     $result = $conn->query($queryToRun); 
     if ($result->num_rows > 0) { 
      $record = $result->fetch_assoc(); 
      return $record; 
     } 
    } 
    $pageLink = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; // Get the page's URL. 
    $exploded = explode('/', $pageLink); // Split the URL into an array delimited by '/'s. 
    $id = $exploded[3]; // This will be the ID of the content, based on the sample URL you provided. 
    $smallestID = selectFromDatabase("SELECT MIN(id) FROM `newstable` WHERE `id` = '$id'")['id']; // Select the smallest ID from the database, to ensure that you link to existing content only. 
    $largestID = selectFromDatabase("SELECT MAX(id) FROM `newstable` WHERE `id` = '$id'")['id']; // Select the greatest ID from the database for a similar purpose. Note that doing this would not reap benefits if you have gaps in the IDs of your content. 
    $previousPostID = (($id - 1) < $smallestID) ? $largestID : ($id - 1); // If ($id - 1) is smaller than the smallest ID, make the previous post's ID = the largest ID. Else leave it at that. 
    $nextPostID = (($id++) > $largestID) ? $smallestID : ($id++); // Similar to the previous line, but for the largest ID. 
    $previousPostTitle = selectFromDatabase("SELECT `title` FROM `newstable` WHERE `id` = '$previousPostID'")['title']; // Select the required title. 
    $nextPostTitle = selectFromDatabase("SELECT `title` FROM `newstable` WHERE `id` = '$nextPostID'")['title']; // Select the required title. 
    $sql = "SELECT * FROM `newstable` WHERE `id` = '$id'"; // Your code to get the content in question. 
    $result = $conn->query($sql); 
    if ($result->num_rows > 0) { 
     while($row = $result->fetch_assoc()) { 
?> 
<div class="content-title"> 
    <?php echo $row['title'];?> 
</div> 
<div class="content-text"> 
    <?php echo $row['text'];?> 
</div>  
<?php 
     } 
    } 
?> 
<div id="previousPost"> 
    <a href="<?php echo "http://$_SERVER[HTTP_HOST]".$previousPostID."/".$previousPostTitle; ?>">Previous</a> <!-- Putting together the URL for the previous page. --> 
</div> 
<div id="nextPost"> 
    <a href="<?php echo "http://$_SERVER[HTTP_HOST]".$nextPostID."/".$nextPostTitle; ?>">Next</a> <!-- Putting together the URL for the next page. --> 
</div> 
+0

$ id는 이스케이프해야합니다. –

+0

참. 이 코드는이 상태에서 사용하면 안됩니다. 이것은 예상 결과를 제공하는 논리의 예로서 기능하기위한 것입니다. – TribalChief

+0

답변 해 주셔서 감사합니다. 어떻게 작동하는지 알지만 Dreamweaver에서는 몇 가지 오류가 있음을 알려줍니다. 분명히 $ smallestID, $ largestID, $ previousPostTitle 및 $ nextPostTitle에 대한 코드가 완전히 올바르지 않습니다. 이 코드가 무엇이 잘못 되었습니까? – Stan