2013-08-02 3 views
1

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

Мой вопрос в том, как я могу дать каждому проекту уникальную страницу? Я знаю, что мне нужно создать 1 страницу (projectpage.php), а затем создать уникальную страницу для каждого проекта. Мне нужно получить идентификатор от каждого проекта.

После заполнения формы, чтобы создать новый проект, эта форма будет размещать на этой странице:

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-адреса) и запросите базу данных для данных, связанных с этим идентификатором. Затем вы создаете HTML для страницы проекта, используя эти данные.

0

Во-первых, mysql_ * функции устарели, вы должны использовать PDO ...

Вы должны иметь PHP скрипт, который получает проект из базы данных по его идентификатору. Вероятно, вы должны иметь столбец идентификатора в своей таблице. Вот пример кода:

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

mysql_insert_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;