2016-09-29 3 views
-1

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

<?php 
session_start(); 
$db = mysqli_connect("localhost", "root", "", "store"); 
if (isset($_POST['button'])) { 
    session_start(); 
    $title= mysqli_real_escape_string($db, $_POST['title']); 
    $body= mysqli_real_escape_string($db, $_POST['body']); 
    $sql = "INSERT INTO content (title,body) VALUES ('$title', '$body')"; 
    mysqli_query($db, $sql); 
    $_SESSION["title"] = $title; 
    header("location: home.php"); 
} 
?> 

А на странице, которую я хочу показать:

<?php 
    session_start(); 
    php echo $_SESSION["title"]; 
?> 
+6

вам нужно перенаправить и перебирают результаты по успешному запросу с SELECT. btw, используйте подготовленное заявление. Даже то, что вы используете, можно вводить. У вас также есть 2x 'session_start();', удалить второй. –

+0

Вопрос слишком широк. Чтобы «научиться чему-то», вам нужно «попробовать что-то». Когда вы написали какой-то код и можете столкнуться с проблемой, только тогда мы поможем. Или, вы можете подождать, когда кто-то придет и «бросит рыбу» на ваши колени. Обучение «как» ловить рыбу действительно окупит большие награды; для тебя". Рестораны в конце концов закрываются, поэтому повар не всегда будет для вас. Узнайте, как приготовить для себя ;-) таким образом вы не застрянете и будете знать, что делать. –

+0

@Fred-ii- я посмотрю на перенаправление и цикл, я даже не знал, что искать ... – OneBeginner

ответ

0

Вы должны перенаправить страницу в home.php на любых условиях, но вы еще не сделали этого.

Если mysqli_query() после выполнения возвращается FALSE или TRUE, то расположение заголовка будет выполнено, и это нецелесообразно. Так как вам нужно echoSESSION variable на странице home.php.

Вы можете проверить состояние, подобное этому, если необходимо.

if(mysqli_query($db, $sql)) 
{ 
// Here you can handle the TRUE loop 
$_SESSION["title"] = $title; 
header("location: home.php"); 
} 
else 
{ 
// Here you can handle the FALSE loop 
} 

И в home.php вы должны внести следующие изменения для того, чтобы отобразить переменную сеанса для печати.

Проверить Очки для печати переменной сессии в другой странице

  1. Убедитесь, что у вас есть session_start() в верхней части страницы, так что вам нужно, чтобы получить супер глобальные переменную к этой странице.
  2. Если вам нужно показать все, что запрашивается из БД, вам необходимо убедиться, что соединение БД с этой страницей.
  3. Если возникла ошибка заголовка, попробуйте перезапустить буферизацию вывода на страницу, где вы начали местоположение заголовка. Вы можете перезапустить буферизацию вывода с помощью ob_start()
  4. ob_start() необходимо использовать, только если вы получили header already sent error в проблемах с перенаправлением.

Использование ob_start():

Думая о ob_start(), как говорят «Start запоминанием все, что, как правило, выводимый, но не совсем ничего сделать с ним еще.»

Пример:

ob_start(); 
echo("Welcome User!"); //would normally get printed to the screen/output to browser 
$output = ob_get_contents(); 
ob_end_clean(); 

ob_start() - Включить буферизацию вывода

Эта функция включит выход буферизацию. В то время как буферизация вывода активна, никакой вывод не отправляется из сценария (кроме заголовков), вместо этого вывод сохраняется во внутреннем буфере.

Содержимое этого внутреннего буфера может быть скопировано в строковую переменную с использованием ob_get_contents(). Чтобы вывести то, что хранится во внутреннем буфере, используйте ob_end_flush(). В качестве альтернативы ob_end_clean() будет молча отбрасывать содержимое буфера.

Возврат TRUE по успеху или FALSE при отказе.

И к вопросу вы сделали вы должны сделать некоторые изменения

Вы запустили session и это хорошо, но вы приложили к php на эхо-заявление и выглядит некорректно.

Заменить:

php echo $_SESSION["title"]; 

с:

echo $_SESSION["title"]; 

Скорее все остальные коды в порядке.

И в целом вся страница будет выглядеть так.

<?php 
session_start(); 
$db = mysqli_connect("localhost", "root", "", "store"); 
if (isset($_POST['button'])) { 
    //session_start(); This is not needed at all already you have started the session. 
    $title= mysqli_real_escape_string($db, $_POST['title']); 
    $body= mysqli_real_escape_string($db, $_POST['body']); 
    $sql = "INSERT INTO content (title,body) VALUES ('$title', '$body')"; 
    mysqli_query($db, $sql); 
    $_SESSION["title"] = $title; 
    header("location: home.php"); 
} 
?> 

home.php

<?php 
    session_start(); 
    echo $_SESSION["title"]; 
?> 

Примечания: Ваш код находится в SQL Injection уязвимости рекомендуется использовать подготовленные заявления наряду с mysqli.*

Подготовленные справки Ссылка f или Mysqli: - http://php.net/manual/en/mysqli.prepare.php.

Я думаю, что мое объяснение будет ясным для вас, чтобы исправить вашу ошибку и код довольно хорошо.

Благодаря & Счастливому кодирование :)

+0

Я переписал код с Подготовленными утверждениями, и он работает, но мне все еще не удалось выполнить петли, которые я только что начал с php несколько дней назад, и я не знаю, как это сделать. – OneBeginner