$ _GET updated_value (?) - Другой вопрос редактора на месте (плагин Jquery) - PullRequest
0 голосов
/ 27 марта 2009

Используя PHP и MySql, я пытаюсь реализовать этот довольно привлекательный редактор на месте:

учебник: http://www.davehauenstein.com/code/jquery-edit-in-place/

js файл: http://davehauenstein.com/code/scripts/jquery.inplace.min.js

ОК, что происходит,

  1. Я щелкаю элемент, чтобы редактировать текст.
  2. Я очищаю старый текст и вводю новый.
  3. Я щелкаю за пределами элемента, чтобы запустить Ajax, чтобы сохранить новый текст.
    1. Ajax показывает «Saving ..», который является текстом по умолчанию для обновления элемента.
    2. Новый текст обновляется в базе данных.
  4. Элемент перезагружается, и вместо отображения нового текста внутри элемента отображается элемент (Нажмите здесь, чтобы редактировать текст), который является текстом по умолчанию в файле js для элемента, который возвращает пустой.

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

Элемент с редактированием на месте:

<div class="editme1"><?php
$content = $_GET['update_value'];
// i added this to try and get the updated value but im
// not really sure, just a guess. i have also used $_POST
// in an attempt to catch it....but i feel stupid even
// saying that..lol
if(!empty($content)) { echo "$content"; } else 
{ echo "$row[profilevalue_8]"; }
?></div>

Файл (update.php), который обновляет базу данных:

<?php include('includes/config.php');
include('includes/functions.php');
$name = $_POST[update_value];
$update = mysql_query("UPDATE profilevalues SET profilevalue_8 = '".$name."' 
WHERE profilevalue_user_id = '".uid()."'") or die(mysql_error());
?>

JavaScript

<script type="text/javascript">
    $(document).ready(function(){
        $(".editme1").editInPlace({
            url: "http://www.mysite.com/update.php",
            params: "ajax=yes",
        });
</script>

Думаю, проблема в том, что я не могу отразить изменения в элементе, как ожидалось.

Буду очень признателен за любую помощь.

Спасибо

Ответы [ 2 ]

1 голос
/ 27 марта 2009

Вы что-то забыли в update.php :) Каждый редактор на месте выполняет AJAX-запрос к файлу обновления, а затем помещает в отредактированный элемент то, что он получает в update.php с этим запросом.

Итак, ваш update.php должен быть таким

<?php include('includes/config.php');
include('includes/functions.php');
$name = $_POST[update_value];
$update = mysql_query("UPDATE profilevalues SET profilevalue_8 = '".$name."' 
WHERE profilevalue_user_id = '".uid()."'") or die(mysql_error());

echo $_POST['update_value']; //add this to your file and it should be working now
?>
0 голосов
/ 27 марта 2009

В дополнение к тому, что сказал Богдан Константинеску, я думаю, что стоит отметить, что для защиты от людей, вводящих неприятные данные, вам действительно следует

  • Вызовите htmlspecialchars() для любых ненадежных строк, которые вы отправляете в браузер в формате HTML. Это поможет предотвратить атаки XSS.
  • Вызовите mysql_real_escape_string() для любых строк, которые вы помещаете непосредственно в операторы SQL. Это защитит вас от атак SQL-инъекций.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...