0

データベースの行を更新するフォームを作成しようとしています。だから、投稿のタイトルなどを作ることができます。

誰でも私を助けることができますか?

4

2 に答える 2

1

更新:あなたが提供したコードの短い文字列を考慮して、回答にマイナーな更新を加えます。

あなたの質問は非常に一般的ですが、開始するためのコードをいくつか提供します。たとえば、投稿 #60 のタイトルを更新したい場合。

HTML

<form action='update.php' method='POST'>
    <label for='title'>Post title:</label>
    <input type='text' id='title' name='title' required>

    <label for='content'>Post body:</label>
    <textarea cols='80' rows='10' id='content' name='content'></textarea>

    <input type='hidden' name='postID' value='60'>
    <button type='submit'>Update</button>
</form>

各投稿には という一意の ID があると想定していますid。繰り返しますが、これは非常に単純な例です。この例では、データベースが MySQL であると仮定します。ここではPDOを使用しますが、必要に応じてmysqliまたはmysqlドライバーを自由に使用してください。

PHP (update.php)

<?php

    // Define your MySQL credentials here
    define('DB_NAME', 'your database name');
    define('DB_HOST', 'localhost'); // usually it's localhost
    define('DB_PORT', 3306) // usually it's 3306
    define('DB_USER' 'username');
    define('DB_PASSWORD', 'password');

    // Check if your HTTP POST parameters are set
    if(!isset($_POST['title']) || !isset($_POST['content']) || !isset($_POST['id'])) {
        die('Missing POST parameters');
    }

    // Create a new PDO instance
    $db = new PDO("mysql:dbname=" . DB_NAME . ";host=" . DB_HOST . ";port=" . DB_PORT, DB_USER, DB_PASSWORD);

    $sql = 'UPDATE `text` SET `title` = :title, `content` = :content WHERE `id` = :id;';

    // Create a new PDOStatement by preparing it
    $statement = $db->prepare($sql);

    // Bind the values to the prepared statement
    // By doing this you don't have to worry about escaping them
    $statement->bindValue(':title', $_POST['title'], PDO::PARAM_STR);
    $statement->bindValue(':content', $_POST['content'], PDO::PARAM_STR);
    $statement->bindValue(':id', $_POST['postID'], PDO::PARAM_INT);

    // Execute the prepared statement
    $statement->execute();

    // Since we're doing an update, it is a good idea to check if the query succeeded.
    // rowCount() should return 1 here
    if($statement->rowCount()) {
        echo 'Post title updated.';
    }
?>

詳細については、UPDATE クエリの MySQL ドキュメント(または RDBMS のドキュメント) を参照してください。

うまくいけば、これで始められるでしょう!

于 2013-01-15T10:11:36.203 に答える
0

コア スクリプト ファイル

<?  
mysql_connect(); 
mysql_select_db("new"); 
$table = "test"; 
if($_SERVER['REQUEST_METHOD']=='POST') { //form handler part: 
  $name = mysql_real_escape_string($_POST['name']); 
  if ($id = intval($_POST['id'])) { 
    $query="UPDATE $table SET name='$name' WHERE id=$id"; 
  } else { 
    $query="INSERT INTO $table SET name='$name'"; 
  } 
  mysql_query($query) or trigger_error(mysql_error()." in ".$query); 
  header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']);  
  exit;  
}  
if (!isset($_GET['id'])) { //listing part: 
  $LIST=array(); 
  $query="SELECT * FROM $table";  
  $res=mysql_query($query); 
  while($row=mysql_fetch_assoc($res)) $LIST[]=$row; 
  include 'list.php'; 
} else { // form displaying part: 
  if ($id=intval($_GET['id'])) { 
    $query="SELECT * FROM $table WHERE id=$id";  
    $res=mysql_query($query); 
    $row=mysql_fetch_assoc($res); 
    foreach ($row as $k => $v) $row[$k]=htmlspecialchars($v); 
  } else { 
    $row['name']=''; 
    $row['id']=0; 
  } 
  include 'form.php'; 
}  
?>

および 2 つのテンプレート ファイル: form.php

<form method="POST">
<input type="text" name="name" value="<?=$row['name']?>"><br>
<input type="hidden" name="id" value="<?=$row['id']?>">
<input type="submit"><br>
<a href="?">Return to the list</a>
</form>

およびlist.php

<a href="?id=0">Add item</a>
<? foreach ($LIST as $row): ?>
<li><a href="?id=<?=$row['id']?>"><?=$row['name']?></a>
<? endforeach ?>
于 2013-01-15T10:11:33.697 に答える