LINUX.ORG.RU

Как обновить страницу :)


0

0

Здрасте! Сразу прошу не плеватся и не бить ногами за такой ламерский вопрос, просто не догоняю, как лучше сделать. Вот собственно вопрос. Заполняется форма с данными - имя, почта и комментарий. При нажатии на сабмит данные собираются и через РОST-запрос отправляются в MySQL. Чтобы эти данные отобразились на странице, ее нужно обновить. Как реализовать, чтобы при нажатии на кнопку отправлялся запрос и обновлялась страница одновременно?

Ответ на: комментарий от Anoxemian

Ммм... Ну а может пока без этой технологии? Я не опытный веб-программист, только постигаю азы пхп/мускул, ничего в этом зазорного нет, сами такими были:) Потом осваивать буду.

KERNEL_PANIC ★★★
() автор топика

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

а как сделать наоборот? разве при отправке формы страница не обновляется?

Flavio_German_Davino_Rodriguez
()
Ответ на: комментарий от Flavio_German_Davino_Rodriguez

Нет. Заполняем форму, нажимаем сабмит. Чтобы комментарий отобразился на странице, нужно жать F5 :(

KERNEL_PANIC ★★★
() автор топика
Ответ на: комментарий от KERNEL_PANIC

Проверьте скриптом ответ сервера, если все ОК, выполняем window.location.reload() :)

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Flavio_German_Davino_Rodriguez

можешь на простом javascript, через XMLHttpRequest делать, но не желательно.

Да ладно, если от аякса нужны только запросы, проще уж через XMLHttpRequest, чем тащить лишние скрипты. Простенький пример:

function onEX(){
	var d = new Date();
	d.setTime(d.getTime() - 1000);
	var str = "KEY=; expires="+d.toGMTString()+"; path="+document.location.pathname;
	document.cookie = str;
	window.location.reload();
}
function exit(){
	var request = new XMLHttpRequest();
	request.open("POST", EXURL, true);
	request.setRequestHeader("Accept-Charset", "koi8-r");
	request.overrideMimeType("multipart/form-data; charset=koi8-r"); 
	request.onreadystatechange=function(){
		if (request.readyState == 4){
			if (request.status == 200){
				onEX();
			}
			else warn("Ошибка соединения");
		}
	}
	request.send("")
}

Eddy_Em ☆☆☆☆☆
()

> Чтобы эти данные отобразились на странице, ее нужно обновить. Как реализовать, чтобы при нажатии на кнопку отправлялся запрос и обновлялась страница одновременно?

После отправки формы страница и так перезагружается. На самой странице ты скорей всего сначала выполняеш вывод данных, а только потом запись. Надо делать наоборот: если есть POST - записываем, потом выводим. Никакой перезагрузки не надо.
А если уж надо обновить страницу, то header(«Location: куда»);

impr
()
Ответ на: комментарий от KERNEL_PANIC

Просто указываешь для формы action="". Это автоматически после сабмита кидает тебя на эту же страницу.

gnunixon ★★★
()
Ответ на: комментарий от impr

impr дело говорит )
сначала
if($_POST['submit_name'])
INSERT INTO....
потом
SELECT * FROM table...
и вывод

ELF ★★
()
Ответ на: комментарий от KERNEL_PANIC

Алгоритм:

1. Пишешь коммент 2. Нажимаешь сабмит, который идёт на <form action="...«> 3. Там _сначала_ записываешь в БД 4. Если же этот же скрипт отвечает и за отображение, то только после пункта 3 выполняешь выборку комментов из базы, тем самым ты можешь выбрать все комменты, включая последний.

VirRaa ★★★
()
Ответ на: комментарий от VirRaa
<?php
if (isset($_POST['comment'])
{
  // Записываешь в БД
}

$comments = $commentsTable->getAll();
?>

<html>
  <head>
    <title>Comments</title>
  </head>
  <body>
    <?php foreach ($comments as $comment): ?>
      <p><?php echo $comment->getText(); ?></p>
    <?php endforeach; ?>
  </body>
</html>

VirRaa ★★★
()
Ответ на: комментарий от VirRaa

Спасибо, ребята. Буду тестить:) Потом отпишусь

KERNEL_PANIC ★★★
() автор топика

Все таки легче осились javascript чем писать костыли

ClanMax
()
Ответ на: комментарий от urxvt

Я ж так и делаю. Просто у меня есть два скрипта - один для чтения, другой для записи комментов. Их я методом инклюда подключаю в страничку. Данные формы отправляются этой же странице, где и обрабатывается. Вот такая технология:)

KERNEL_PANIC ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.