1

現在PHPを勉強中です。管理パネル、セッションなどを含む単純なバケットリストスクリプトをコーディングして、それができるかどうかを確認しました。

私がコーディングしている最後のページは「edit.php」と「editone.php」です。データベース「ID、目標、評価」内のすべてのデータを返すテーブルがあります。4 番目の列はリンクとして「EDIT」を返します。出発地:editone.php?id=xx

editone.php は現在、ページではありません。私の人生では、データを取得してmysqlを更新できるように、editoneをコーディングする方法を理解できません。私はほとんどそこにいるだけで、パズルをつなぎ合わせることができません。

編集ページのコードのコアは次のとおりです。

<?php
    while ($query_row = mysql_fetch_array($query)) 
    { 
        echo "<tr>";
        echo "<td>".$query_row['id']."</td><td>". $query_row['goals']."</td><td><span class='label label-inverse'>". $query_row['rating']."</span></td><td><a href='editone.php?id=".$query_row['id']."'>Edit</a></td>"; 
        echo "<tr>";
    }
?>

どんな援助でも本当に感謝します。

4

4 に答える 4

2

すべてのパラメーターを POST メソッドで editone ページに送信します。つまり、編集ページでは、データベースからすべての変数を取得しています。送信ボタンがあり、タイプが「POST」のフォームでそれらを表示できます。そのため、誰かが送信すると、editone.php ページに移動します。

最初に $_POST メソッドを使用してすべての変数を取得します。次に、更新クエリを記述します。

$sql = "UPDATE tablename SET goals = '$goal', rating='$rating' WHERE id = $id";

コメントで述べたように、投稿変数を必ずエスケープしてください。

これは、PDO Update ステートメントのあり方です。

// database connection
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

// new data
$goals = 'Some goals';
$rating = 'whatever rating';
$id = 3;
// query
$sql = "UPDATE tablename 
        SET goals=?, rating=?
        WHERE id=?";
$q = $conn->prepare($sql);
$q->execute(array($goals,$rating,$id));
于 2012-10-29T20:11:57.627 に答える
0

私があなたを正しく理解していれば、あなたが望むのは、最初に単一の行を表示し(編集できるように)、完了したらそれを保存するページです。したがって、データを含まないHTMLフォームを作成することから始めます。

次に、クエリ文字列からIDを読み取ります。

<?php 
    $rowId = $_GET['id'];

次に、データをクエリします。

// database connection example borrowed from Abhishek
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

$sql = "SELECT goals, rating FROM tablename WHERE id = ?";
$query = $conn->prepare($sql);
$query->execute(array($rowId));
$row = $query->fetch();

これで、データを使用してフォームにデータを入力できます。これで、そこの半分くらいになります。:-)

実際の保存はPOST、ではなく、リクエストに応じて行う必要がありGETます。その理由については長くてやや複雑な説明がありますが、簡略化されたバージョンではPOST、ユーザーに変更を加えるGETときや、データを読み取るときはいつでも使用できます。ブラウザーやプロキシの動作などがたくさんあります。これらの仮定に結びついているので、早い段階で正しい方法で物事を開始することをお勧めします。

リクエストを処理するPOSTと(同じページで実行できます)、グラブのフォーム値が更新され、それらを使用してデータベースを更新できます。

// This can be a hidden field on the form...
$rowId = $_POST['id'];
$goals = $_POST['goals'];
$rating = $_POST['rating'];

// database connection example borrowed from Abhishek
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

$sql = "UPDATE tablename SET goals = ?, rating = ? WHERE id = ?";
$query = $conn->prepare($sql);
$query->execute(array($goals, $rating, $rowId));

この後、データベースを更新する必要があります。最後に、フォームを誤って二重送信しないように、ページにリダイレクトすることをお勧めします。

ここでは、少し意図的に、すべてを網羅しているわけではありません。記入する空白があるともっと楽しいです。:-)

于 2012-10-29T21:21:17.953 に答える
-2

あなたはおそらくあなたの秒<tr>を にしたいでしょう</tr>

于 2012-10-29T20:20:18.517 に答える
-2

最も一般的な解決策は、html フォームを使用することです。このフォームの入力値はselectidクエリ文字列内の です。これを保存するために送信ボタンが押されたら、更新を行います。しかし、Web 2.0 の優れた完全な例を紹介したいと思います。

于 2012-10-29T20:16:32.377 に答える