AJAX отображать текст при отправке - PullRequest
0 голосов
/ 23 июня 2011

У меня есть простая форма с кнопкой отправки (ниже). Я пытаюсь позволить пользователю вводить текстовое поле, а затем, когда он / она нажимает, отправить, страница обновится и отобразит то, что они набрали в div. Данные, которые вводит пользователь, сохраняются в базе данных до их отображения. Проблема в том, что когда я нажимаю кнопку отправить, ввод не отображается сразу. Я должен нажать «Обновить», чтобы это отобразилось, и когда я это сделаю, мой браузер выдаст всплывающее окно (сафари) с просьбой повторно отправить данные. Это приведет к дублированию данных, вставленных в БД. У меня такое чувство, что мне нужно использовать javascript, и я мог бы сделать его более элегантным с помощью fadeIn, но я не знаю, как это сделать. Я предполагаю, что спрашиваю, есть ли способ использовать javascript, чтобы взять текст пользователя и вставить его в базу данных mysql, а также отобразить его после нажатия кнопки «Отправить» всего на 1 или 0 (предпочтительно) обновлений. спасибо

Вот мой код:

<form method='POST'  action='index.php'>
<input type='text' name='text' id='text'>
<input type ='submit' value='submit' name='submit'>
</form>

<?php
$input=$_POST['text'];
$put=mysql_query("INSERT INTO table VALUES ('$input')");

echo "<div id='area'>";
//i connect to the DB and echo out the data here

echo "</div>";

?>

Ответы [ 3 ]

0 голосов
/ 23 июня 2011

Нет необходимости использовать AJAX здесь. Просто убедитесь, что вы делаете одно из следующих действий:

  1. Убедитесь, что ВЫ ВЫБИРАЕТЕ из БД после того, как ВСТАВИЛИ данные.
  2. Лучше, если if ($_SERVER['REQUEST_METHOD'] == 'POST'), то вместо выполнения дополнительного запроса SQL просто отобразите значение POSTed, поскольку вы уже знаете его.

Примечание к вашему примеру кода. Если у вас не включен magic_quotes, он подвержен внедрению SQL, поэтому убедитесь, что вы правильно экранировали пользовательский ввод перед использованием его в запросах.

0 голосов
/ 23 июня 2011

Я бы поставил операторы php перед тем, как вы на самом деле HTML-код, и изменил бы ваш код следующим образом

<?php
if (isset($_POST['text']))
{
  $input = mysql_real_escape_string($_POST['text']);

  $put=mysql_query("INSERT INTO table VALUES ('$input')"); //At this point the info has been put inside the DB

  echo "<div id='area'>";
  //i connect to the DB and echo out the data here
  echo mysql_query("SELECT * FROM table");
  echo "</div>";
}
?>

<form method='POST'  action='index.php'>
<input type='text' name='text' id='text'>
<input type ='submit' value='submit' name='submit'>
</form>

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

0 голосов
/ 23 июня 2011

За исключением атак с использованием SQL-инъекций, которыми уязвим ваш код, стандартная практика - отвечать на POST с помощью перенаправления обратно туда, где была форма.В вашем случае это будет страница, которая запускается SELECT from table.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...