Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,119
1

При обновлении страницы дублируются комметарии

08.09.2016, 17:53. Показов 1352. Ответов 7
Метки php (Все метки)

Уже обсуждалась эта проблема в одной с моих тем,мне посоветовали создать два файла ,один с формой(у меня он называется--demo php) и второй файл-обработчик (назвал-- coment.php).

Посоветовали использовать header('Location:demo.php') в файле обработчике ,в интернете узнал что эта функция делает редирект. Попробовал эту функцию но выдает ошибку--

Cannot modify header information - headers already sent by (output started at D:\OpenServer\OpenServer\domains\localhost\proba\coment.php: 2)

так выглядят файлы с использованием header()
код файла demo.php

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
<head>
    <title>Demo</title>
    <meta charset="utf-8">
</head>
<body>
    
<form action="coment.php" method="post">
    Name:<input  type="text" name="name"><br>
          <input type="submit" value="Send">
         
</form> 
 
</body>
</html>

код coment.php(обработчик формы)

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
header('Location:http://localhost/proba/demo.php');
$name=$_POST['name'];
$data=date("Y-m-d H:i:s");
 
@$db = new mysqli('localhost','root', '1412','demo');
  if (mysqli_connect_errno()) {
     echo "Ошибка: Не удалось установить соединение" . 
          " с базой данных. Повторите попытку позже.";
     exit;
  }
 
 
if(!empty($name)){
 $query = "INSERT INTO `coment`(`name`,`data`) VALUES ('$name','$data')";
 
  $result = $db->query($query);}
 
 
 
  $query ="select name from coment order by data desc"; 
           
  $result = $db->query($query);
 
  $num_results=$result->num_rows;
 
  echo "Всего коментариев ".$num_results; 
echo '<br>';
   for ($i = 0; $i < $num_results; $i++) {
     $row = $result->fetch_assoc();
       echo htmlspecialchars (stripslashes($row['name'])); echo'<br>';
     
  }
  $result->free();
  $db->close();
  
?>
==========================================

А тут я приведу код начальный-- когда все в одном файле(demo.php) и возникает дублирование комvентов

Можете перейти по ссылке http://www.tvpnero.ho.ua/demo.php и увидеть как при обновлении возникает дублирование
(только нужно ввести что либо в поле и отправить форму и тогда обновлять)
начальный код demo.php


HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
<head>
    <title>Demo</title>
    <meta charset="utf-8">
</head>
<body>
    
<form action="demo.php" method="post">
    Name:<input  type="text" name="name"><br>
          <input type="submit" value="Send">
         
</form> 
 
</body>
</html>
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
$name=$_POST['name'];
$data=date("Y-m-d H:i:s");
 
@$db = new mysqli('localhost','root', '1412','demo');
  if (mysqli_connect_errno()) {
     echo "Ошибка: Не удалось установить соединение" . 
          " с базой данных. Повторите попытку позже.";
     exit;
  }
 
 
if(!empty($name)){
 $query = "INSERT INTO `coment`(`name`,`data`) VALUES ('$name','$data')";
 
  $result = $db->query($query);}
 
 
 
  $query ="select name from coment order by data desc"; 
           
  $result = $db->query($query);
 
  $num_results=$result->num_rows;
 
  echo "Всего коментариев ".$num_results; 
echo '<br>';
   for ($i = 0; $i < $num_results; $i++) {
     $row = $result->fetch_assoc();
       echo htmlspecialchars (stripslashes($row['name'])); echo'<br>';
     
  }
  $result->free();
  $db->close();
  
?>

==========================================


Может я неправильно использую header()?

Как переписать код (но без аякс запросов,только пхп) чтоб не было дублирования коментов?

Добавлено через 6 минут
Можете перейти по ссылке http://www.tvpnero.ho.ua/demo.php и увидеть как при обновлении возникает дублирование
(только нужно ввести что либо в поле и отправить форму и тогда обновлять)
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.09.2016, 17:53
Ответы с готовыми решениями:

Переадресация при обновлении страницы
Добрый день. Есть две страницы. На одной происходит указание имени и e-mail. После нажатия на...

Показать id при обновлении страницы
Есть кнопка, нажимая на неё меняется URl без перезагрузки $('.knopka').click(function(event){...

как сделать чтобы при при обновлении страницы (header('location .');) попадать на ту же позицию
Например у меня есть длинный список записей, под каждой записью кнопка удалить, когда нажимаешь на...

Отправка письма при обновлении страницы
Доброго времени суток. Нашел такую форму отправки номера телефона на почту, добавил маску ввода....

7
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1842 / 1339 / 598
Регистрация: 12.01.2011
Сообщений: 5,410
08.09.2016, 17:56 2
Лучший ответ Сообщение было отмечено TVPNERO как решение

Решение

Цитата Сообщение от TVPNERO Посмотреть сообщение
PHP
1
2
3
if(!empty($name)){
$query = "INSERT INTO `coment`(`name`,`data`) VALUES ('$name','$data')";
$result = $db->query($query);}
PHP
1
2
3
4
5
if(!empty($name)){
 $query = "INSERT INTO `coment`(`name`,`data`) VALUES ('$name','$data')";
  $result = $db->query($query);
 echo "<script>window.location.href='http://www.tvpnero.ho.ua/demo.php'</script>";
}
0
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,119
08.09.2016, 18:17  [ТС] 3
Azdeman, будьте добры.детальней в какой вариант файлов нужно внести изменения, в начальный или в
в одном из двух ?
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1842 / 1339 / 598
Регистрация: 12.01.2011
Сообщений: 5,410
08.09.2016, 18:27 4
При добавлении name
0
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,119
09.09.2016, 12:21  [ТС] 5
Azdeman, спасибо вы мне очень помогли.
0
502 bad gateway
Эксперт PHP
4639 / 3773 / 1572
Регистрация: 24.04.2014
Сообщений: 11,068
09.09.2016, 12:34 6
Лучший ответ Сообщение было отмечено Jewbacabra как решение

Решение

Цитата Сообщение от Azdeman Посмотреть сообщение
echo "<script>window.location.href='http://www.tvpnero.ho.ua/demo.php'</script>";
только редирект делать в данной ситуации надо с помощью заголовков
PHP
1
2
header('Location: http://www.tvpnero.ho.ua/demo.php');
exit();
PS. Кто от SQL инъекций защищаться то будет?
0
9 / 8 / 12
Регистрация: 29.03.2016
Сообщений: 1,119
09.09.2016, 13:09  [ТС] 7
Jewbacabra, а где именно нужно вставить?
я раньше на начале вставлял,но возникала ошибка

header('Location: http://www.tvpnero.ho.ua/demo.php');
exit();
0
502 bad gateway
Эксперт PHP
4639 / 3773 / 1572
Регистрация: 24.04.2014
Сообщений: 11,068
09.09.2016, 13:16 8
Цитата Сообщение от TVPNERO Посмотреть сообщение
а где именно нужно вставить?
После выполнения INSERT запроса
Цитата Сообщение от TVPNERO Посмотреть сообщение
но возникала ошибка
Вероятно эта ошибка Что означает предупреждение "headers already sent"
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.09.2016, 13:16
Помогаю со студенческими работами здесь

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

Сохранение перемнной при обновлении страницы
Есть комбобокс, при выборе значения оно заносится как новый элемент массива(а страница...

Исчезновение полей при обновлении страницы
Всем привет!) Даны 2 кнопки. Каждая из кнопок возвращает заданное количество полей. Как только я...

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

При обновлении страницы слетает фильтрация
Для фильтрации таблицы использую tablefilter. Из за чего при обновлении страницы слетает фильтрация?

При обновлении страницы заносит в БД последнюю запись
Есть определенная таблица в БД. Методом пост записываю в нее записи и отображаю на странице. Вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru