Функция 'Редактирования' для сообщений форума и такого

Я онлайн искал сценарий, который демонстрирует, как я пошел бы о позволении пользователям на моем сайте, который в состоянии отредактировать поля и такой, но я ничего не мог найти об этом. Таким образом, я задавался вопросом, мог ли кто-то объяснить мне, как это работает, или просто продемонстрируйте со сценарием? Для прояснения я хочу, чтобы пользователи смогли отредактировать материал, который они отправили путем простого нажатия на 'редактирование' и нажатия кнопки для обновления независимо от того, что это было, они изменились.

Править: Я забыл упоминать, что то, что было изменено, должно обновить таблицу в базе данных MySQL.

1
задан Nisto 27 July 2010 в 09:42
поделиться

4 ответа

Для этого вам понадобятся 2 файла PHP. Вы можете использовать один файл но концепцию проще объяснить это способ.

  1. Форма, которая загружает содержимое базы данных в поля, где пользователи могут затем редактировать значения и затем отправлять их для изменения, нажав кнопку после завершения.
  2. Файл, который получает измененную информацию и обновляет базу данных.

Вот пример кода для первого файла:

<?php 
// connect to SQL
$dbcnx = @mysql_connect("localhost", "db_name", "password");
if (!$dbcnx) {
  echo( "<P>Unable to connect to the database server at this time.</P>" );
  exit();
}
// connect to database
$dbcon = @mysql_select_db("db_table", $dbcnx);
if (!$dbcon) {
  echo( "<P>Unable to locate DB table at this time.</P>" );
  exit();
}

#data preparation for the query
$id = intval($_GET["id"]);

# selects title and description fields from database
$sql = "SELECT * FROM table_name WHERE id=$id";
$result = mysql_query($sql) or die(mysql_error());        
# retrieved by using $row['col_name']
$row = mysql_fetch_array($result);

?>

<h3>Edit</h3>
<form action="save_edit.php" enctype="multipart/form-data" method="post" name="myForm" />
  <table>
    <tr>
      <td><b>Title</b></td>
      <td><input type="text" size="70" maxlength="100" name="title" value="<?php echo $row['title'] ?>"></td>
    </tr>
    <tr>
      <td><b>Description</b></td>
      <td><textarea cols="80" rows="18" name="description"><?php echo $row['description']; ?></textarea></td>
    </tr>
  </table>
  <input type="hidden" name="id" value="<?php echo $id; ?>" />
  <input name="enter" type="submit" value="Edit">
</form>

<?php 
mysql_close($dbcnx);
?>

А вот пример кода для второго файла, где он получает изменения, сделанные пользователем, и обновляет базу данных.

<?php
// connect to SQL
$dbcnx = @mysql_connect("localhost", "db_name", "password");
if (!$dbcnx) {
  echo( "<P>Unable to connect to the database server at this time.</P>" );
  exit();
}
// connect to database
$dbcon = @mysql_select_db("db_table", $dbcnx);
if (!$dbcon) {
  echo( "<P>Unable to locate DB table at this time.</P>" );
  exit();
}

#data preparation for the query
$id = intval($_POST["id"]);
foreach ($_POST as $key => $value) $_POST[$key] = mysql_real_escape_string($value);

$sql = "UPDATE table_name SET 
        title='$_POST[title]', 
        description='$_POST[description]', 
        WHERE id=$id";

if (!mysql_query($sql,$dbcnx)) {
  die('Error: ' . mysql_error());
}

mysql_close($dbcnx);
header ("location: http://www.domain.com/url_to_go_to_after_update");
?>
1
ответ дан 2 September 2019 в 22:42
поделиться

Если вам просто нужна идея, как создать простую форму редактирования в PhP, это достаточно просто. Когда они нажимают кнопку редактирования, они переходят в новую форму. Вытяните контент из базы данных, используя любую базу данных, имеющую доступ к api, а затем инициализируйте поле с ее помощью. Например, где $ content имеет содержимое поля:

echo '<textarea name="content">'.htmlspecialchars($content).'</textarea>';

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

1
ответ дан 2 September 2019 в 22:42
поделиться

Чтобы немного расширить код Дэниела

<?php

$filename = "file.txt";

if ($_SERVER['REQUEST_METHOD'] == 'POST']) {
  file_put_contents($filename, $_POST['content']);
  header("Location: ".$_SERVER['PHP_SELF']);
  exit;
}
$content = htmlspecialchars(file_get_contents($filename));
?>
<form method="POST">
<textarea name="content"><?php echo $content?></textarea><br>
<input type="submit">
</form>
0
ответ дан 2 September 2019 в 22:42
поделиться

Я не конечно я понял, что ты сказал. Если вам нужен способ редактирования на месте, вы можете использовать этот плагин jQuery: Jeditable (с Ajax).

0
ответ дан 2 September 2019 в 22:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: