sql >> データベース >  >> RDS >> Mysql

フォーラム投稿などの「編集」機能

    これを行うには、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);
    ?>
    

    これは、ユーザーが行った変更を受け取り、データベースを更新する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($_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. MySQL:2つのタイムスタンプの差を秒単位で取得する方法

    2. Oracle:関数ベースのインデックス選択的一意性

    3. PHP PDOを使用してデータベースから値を取得し、入力を更新してチェック済み

    4. mysql.sockはOSXで作成されていません