论坛帖子的“编辑”功能等

时间:2010-07-27 09:29:10

标签: php mysql html

我正在网上寻找一个脚本,演示如何让我的网站上的用户能够编辑字段等,但我找不到任何相关内容。所以我想知道是否有人可以向我解释它是如何工作的或只是用脚本演示?为了说清楚,我希望用户只需点击“编辑”并按下按钮即可更新他们提交的内容。

编辑:我忘了提到已经更改的内容应该更新MySQL数据库中的表。

4 个答案:

答案 0 :(得分:1)

如果您只是想知道如何在PhP中创建基本编辑表单,这很容易。当他们单击编辑按钮时,将他们带到一个新表单。使用访问api的任何数据库从数据库中提取内容,然后使用它初始化该字段。例如,$content具有该字段的内容:

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

当他们提交表单时,现在在字段中查看最新内容并使用它来更新表格。它与原始插入脚本相同,只是您使用update语句而不是insert。

答案 1 :(得分:1)

您需要2个PHP文件才能执行此操作。您可以使用单个文件,但这种概念更容易解释。

  1. 一个表单,它将数据库内容加载到用户可以编辑值的字段中,然后通过按一下按钮提交它们进行更改。
  2. 接收更改信息并更新数据库的文件。
  3. 以下是第一个文件的代码示例:

    <?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");
    ?>
    

答案 2 :(得分:0)

我不确定我明白你说了什么。如果你想要一种编辑方法,你可以使用这个jQuery插件:Jeditable(使用Ajax)。

答案 3 :(得分:0)

稍微扩展Daniel的代码

<?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>