2016-03-24 9 views
2

私はphp-mysqlを使ってニュースサイトを開発しています。ウェブサイトのインデックスページ上PHPでページを自動的に作成するには? (詳細は内部)

news_id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
news_title VARCHAR(250) NOT NULL, 
news_short_description TEXT NOT NULL, 
news_full_content TEXT NOT NULL, 
news_author VARCHAR(30) NOT NULL, 
news_published_on DATE NOT NULL 
)"; 

記事が表示されます:


この

はテーブルです。私は必要なもの


$sql = "SELECT news_id,news_title,news_short_description,news_full_content,news_author,news_published_on FROM ARTICOLI ORDER BY news_id DESC LIMIT 10"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     echo "<h3>". $row["news_title"]. " </h3><br> " . $row["news_short_description"]. "<br> " ."Posted by ". $row["news_author"]. "<br>"; 
    } 
} else { 
    echo "0 results"; 
} 

? 1つの記事の自動ページとリンクを作成する方法がわかりません。 例:www.website.com/this-is-the-title-of-the-article。 私はdbテーブルのIDを使用することについて考えていたが、どのように正確な行を選択するのですか? 私を助けることができますか?ありがとう! ;)

+0

'where句'を使って特定の行を選択できます。 –

+0

"正確な行を選択する方法はありますか?" - 'WHERE news_id = 1'は' news_id'が '1'の行だけを選択します。 – ROAL

+0

正確な行の基準は何ですか? –

答えて

1

1つのアイデア。 まず、テーブルにスラッグフィールド(https://en.wikipedia.org/wiki/Semantic_URL#Slug)を追加する必要があります。スラッグフィールドは、タイトルをthis-is-the-title-of-the-articleという形で保持します。

ここでは、「スラグ」はテーブル内の一意の文字列である必要があります。

第2に、www.website.com/this-is-the-title-of-the-articleというフォームのリクエストを処理できるものに変換するために、ある種の書き換えメカニズム(たとえばApacheのmod_rewrite)を使用する必要がありますPHPスクリプトを介して。 たとえば、www.website.com/this-is-the-title-of-the-articleは、www.website.com/index.php?q=this-is-the-title-of-the-として書き直されます。記事)。

例の.htaccess

RewriteRule ^(.*)$ /index.php?q=$1 [L] 

のindex.php

<?php 
$articleSlug = isset($_GET(["q"])?$_GET["q"]:null; 

if ($articleSlug !== null) { 
    $query = "SELECT news_id,news_title,news_short_description,news_full_content,news_author,news_published_on FROM ARTICOLI WHERE slug=?"; // Bind the ? to $articleSlug 
     //Execute SQL here and echo the results 
} else { 
    // 404 error 
} 

私は、これは非常にあいまいな説明であり、これはそれを行うための唯一の方法であることを理解。私は個人的には、MVCのようなフレームワークを調べることをお勧めします。この機能が既に組み込まれているLaravel

関連する問題