2013-08-02 205 views
1

我正在構建一個簡單的錯誤跟蹤工具。 登錄後,您可以創建一個新項目,當您創建一個新項目時,您將重定向到項目頁面。爲每個項目頁面創建一個獨特的頁面

我的問題是,我怎樣才能給每個項目一個獨特的頁面? 我知道我只需要創建1個頁面(projectpage.php),然後爲每個項目創建一個獨特的頁面。我必須從每個項目中獲取ID。

您在表單中創建一個新的填寫項目後,該表格將張貼到這個網頁:

project.class.php

$name  = $_POST['name']; 
$descr  = $_POST['description']; 
$leader  = $_POST['leader'];  
$email  = $_POST['email']; 

$sql="INSERT INTO projects (name, description, leader, email, registration_date) 
VALUES ('$name', '$descr', '$leader', '$email', NOW())"; 
$result = mysql_query($sql); 

if($result){ 
header('Location: ../projectpage.php'); 
} 
else { 
echo "Oops, there is something wrong. Try again later."; 
} 

mysql_close(); 

這將數據存儲在MySQL數據庫。

那麼,我怎樣才能爲每個項目製作一個獨特的頁面? 這樣做的最好方法是什麼?

在此先感謝!

+1

您正在使用[**的**過時的數據庫API(http://stackoverflow.com/q/12859942/19068),並應使用[現代更換]( http://php.net/manual/en/mysqlinfo.api.choosing.php)。你也**易受[SQL注入攻擊](http://bobby-tables.com/)**,現代的API會使[防禦]更容易(http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)自己從。 – Quentin

+0

不要以每個項目的唯一頁面來考慮它。這將可怕地縮放。事實上,你用不同的數據填充同一頁面,這就是服務器端編程的美妙之處。 – christopher

回答

2

您有一個PHP文件,通過查詢字符串(或URL的其他部分)獲取項目id並查詢數據庫以獲取與該id相關的數據。然後,使用該數據爲項目頁面生成HTML。

0

首先,mysql_ *功能已過時,你應該使用PDO ...

你應該有一個PHP腳本,由它的ID數據庫中獲取的項目。您的表格中可能應該有一個ID列。這裏是一個示例代碼:

if($result){ 
    header('Location: ../project.php?id='.mysql_insert_id()); 
} 

mysql_insert_id返回最後插入的ID。請參閱documentation。 然後,project.php:

<?php 
if (!isset($_GET['id']) || empty($_GET['id']) { 
    echo "error : bad url"; 
    exit(); 
} 

$cn = new PDO(...); // Check PDO documentation for this 

$sql = "SELECT * FROM projects WHERE project_id = :id"; 
$stmt = $cn->prepare($sql); 

$stmt->bindParam(":id", $_GET['id']); 
$stmt->execute(); 

$project = $stmt->fetch(PDO::FETCH_OBJ); 

// $project will behave like an Object, you can display for example the project name 
echo $project->name; 

// or the project date... 
echo $project->registration_date; 
相關問題