2015-12-12 12 views
3

Я работаю на классифицированном веб-сайте, в котором пользователь опубликует свои объявления, чтобы что-то продать. Это в основном мой первый веб-проект. У меня возникла проблема с созданием страниц самостоятельного создания, в которых, когда пользователь публикует свое объявление, он автоматически создаст HTML-страницу и свяжется с ним и немного заглянет в его рекламное шоу на надлежащей хорошо спроектированной странице ..Как генерировать самосозданные страницы динамически?

Здесь я описал мою проблему правильно:

  1. Когда пользователь нажимает кнопку отправить объявление HTML-страница будет создана автоматически и пользователь будет направлен на эту страницу (как создать эту страницу)?
  2. Как разместить ссылку на страницу объявления в верхней части других предыдущих объявлений, это тоже на Создано автоматически странице динамически?

Вот произвольный код вставки и отображения базы данных на странице:

<!DOCTYPE html> 
<html> 
<body> 

<form action="zain.php" method="post"> 
    Topic: <input type="text" name="topic"><br /> 
    <br /> 
    Name: <input type="text" name="name"><br /><br /> 
    Attendance: <input type="text" name="attendance"><br /> 
    <br /> 
    <input type="reset" name="reset"> 
    <input type="submit" name="submit" value="Go"> 
</form> 

<?php 

$user = 'root'; 
$password = 'zz224466'; 
$db = 'Zain'; 

// Create connection 
$conn = mysqli_connect('localhost', $user, $password, $db); 

// Check connection 
if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 
echo ""; 
mysqli_select_db($conn, "zain"); 
$insert = "INSERT INTO lectures (Topic,Name,Attendence) VALUES('$_POST[topic]','$_POST[name]','$_POST[attendance]')"; 
mysqli_query($conn,$insert); 


///////////Write records on the Screen////////////// 
$sql = "SELECT * FROM lectures"; 
$myData = mysqli_query($conn,$sql); 
while($record=mysqli_fetch_array($myData)){ 

    echo $record['Topic']. " " 
    ." ". $record['Name']." ".$record['Attendence']; 
    echo "<br>"; 
} 
mysqli_close($conn); 

?> 

</body> 
</html> 

Можете ли вы показать мне несколько подсказок, чтобы решить мою проблему?

+0

Это не способ сделать это. Когда вы создаете сообщение в stackoverflow, html не создается. Данные сохраняются в базе данных, а затем отображаются в Интернете с использованием страницы «шаблона». Поэтому вы должны сохранить информацию, которую хотите показать где-нибудь, а затем использовать ту же страницу, чтобы показать все разные добавления. – Gonzalo

+0

Но как создать эту страницу шаблона, имеющую разные ссылки каждый раз динамически? –

+0

Вы когда-нибудь видели URL-адреса, подобные этому 'site.com? Page.php? Id = 5'? Сайт передает идентификатор страницы на URL-адресе, это называется «GET' mehotd. Вы можете получить этот идентификатор и найти страницу в БД, чтобы показать ее. – Gonzalo

ответ

1

После добавления лекции вы можете получить идентификатор записи в базе данных функции

$id = mysqli_insert_id($conn); 

Вы можете подготовить новую страницу с идентификатором на нем, например:

page.com/lecture.php?id=3 

Где идентификатор вашей лекции идентификатор генерировать. Под этим сайтом вы должны подготовить php-код, чтобы показать именно эту лекцию.

Перенаправление на новую страницу лекции вы можете проверить это сообщение: How to make a redirect in PHP?

Ссылки на другие объявления может быть добавлена ​​Исла, изменив идентификатор в ссылке.

PS. Вы не должны напрямую вводить параметры $ _POST в базу данных, есть возможность SQL-инъекции, используйте http://php.net/manual/en/mysqli.real-escape-string.php

+0

Вы говорите, что я не должен использовать метод POST В целом в этом сценарии? –

+0

нет, метод POST в порядке, но если вы поместите эти переменные напрямую, не проверяя наличие проблемы с безопасностью. Вы можете прочитать об этом здесь: https://en.wikipedia.org/wiki/SQL_injection – pmaniora

1

Как прокомментировал gonzalo, вам не нужно создавать html-страницу. Скорее сохраните детали в БД и создайте динамический (.php) файл; и пусть этот файл выполняет всю работу. то есть. Передать идентификатор объявления этому файлу; получить данные из db и представить их пользователю, используя разметку html. При этом я настоятельно рекомендую использовать структуру.

+0

_ «Я настоятельно рекомендую использовать фреймворк». _ Почему? Кроме грунта, то есть. –

0

Если вы хотите каждый раз создавать новую страницу (хотя я тоже не рекомендовал бы этого), вы можете сохраните свои данные в переменных и создайте страницу с помощью fopen() и fwrite(), а затем добавьте заголовок ('location: file.ext'), чтобы перенаправить его на этот URL-адрес.

+0

Thankyou .. Looking nice –

+0

@ZainFarooq Я думаю, что я обратился к вашему первоначальному запросу ... и если эта информация предоставила вам некоторое альтернативное представление о вашем вопрос, пожалуйста, голосуйте за мой ответ тоже. Else Я получаю 2-мя очками по какой-то загадочной причине! – user3526204

+0

У меня есть возлюбленный ... Некоторые другие ответили на ваш ответ –