Я смотрел онлайн скрипт, который демонстрирует, как я буду делать, чтобы пользователи на моем сайте могли редактировать поля и т. Д., Но я ничего не мог найти. Поэтому мне было интересно, может ли кто-нибудь объяснить мне, как это работает или просто продемонстрировать со сценарием? Чтобы было ясно, я хочу, чтобы пользователи могли редактировать материалы, которые они отправили, просто нажав «изменить» и нажав кнопку, чтобы обновить все, что они изменили.
Редактирование: я забыл упомянуть, что то, что было изменено, должно обновить таблицу в базе данных MySQL.
Для этого вам нужны 2 файла PHP. Вы можете использовать один файл, но это понятие легче объяснить.
Вот пример кода для первого файла:
<?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"); ?>
Если вам просто нужна идея создания базовой формы редактирования в PhP, это достаточно просто. Когда они нажимают кнопку редактирования, переведите их в новую форму. Извлеките содержимое из базы данных, используя любую доступную базу данных, к которой вы работаете, и затем инициализируйте это поле. Например, где $content
имеет содержимое поля:
echo '<textarea name="content">'.htmlspecialchars($content).'</textarea>';
Когда они отправляют форму, возьмите что-то сейчас в поле и используйте его для обновления таблицы. Это то же самое, что и исходный сценарий вставки, за исключением того, что вы используете операторы обновлений вместо вставки.
Я не уверен, что понял, что ты сказал. Если вы хотите изменить порядок действий , вы можете использовать этот плагин jQuery: Jeditable (с Ajax).
Чтобы немного расширить код Дэниела
<?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>