0

この質問をご覧いただきありがとうございます。

この状況の前提は、「Spreadsheet」という名前のデータベースのアイテムを表示する PHP と HTML で書かれた「Web サイト」を持っていることです。6 つの列と 4000 以上の行のデータがあります。列は「accountID」、「accountName」、「website」、「rating」、「imageURL」、「comments」です。ウェブサイトの「評価」列はドロップダウン リストです。

現在、すべて正常に動作していますが、質問があります。

  1. PHP を使用して、ドロップダウン リストのオプション (「非常に悪い」など) をクリックしたときにデータをデータベースに送信するにはどうすればよいですか? 現時点では、ユーザーが「送信」ボタンをクリックする必要があります。これにより、ページが完全に更新され、位置が失われます。サイレントに (更新せずに) 送信することは可能ですか?
  2. 2 番目の質問は、ドロップダウン リストに関するものです。データベースの内容をドロップダウン リストに表示するにはどうすればよいですか? たとえば、データベースで評価が「非常に悪い」である場合、ドロップダウン リストには最初の要素ではなく、それが反映されます。

以下は私のコードです。

    <a href =\"". $urlHTTP, $row['website']."\">". $row['website']."</a><br />
  <Form Name =\"rating\" Method =\"POST\" ACTION =\"\" />

  <input type = \"hidden\" name=accountID value=" . $row['accountID'] . ">
    <select name=\"rating\">
    <option value=\"\"></option>
    <option value=\"Very Bad\">Very Bad</option>
    <option value=\"Bad\">Bad</option>
    <option value=\"Average\">Average</option>
    <option value=\"Above Average\">Above Average</option>
  </select>

      <INPUT TYPE =\"Submit\" Name =\"formSubmit\" VALUE =\"Submit\">


if (isset($_POST['formSubmit'])){
    $rating = $_POST['rating'];
    $accountID = $_POST['accountID'];


var_dump($rating);
var_dump($accountID);


if(!mysql_query("UPDATE Spreadsheet SET rating='$rating' WHERE accountID='$accountID'")) {echo 1;}

}    
mysql_close();
?>

本当にありがとう!この質問は私を少し悩ませてきました。私は多くの Google の試みを試みましたが、私が求めているほど具体的な答えを見つけることができませんでした. どうもありがとう。

4

2 に答える 2

0

#1への答え:

実際に送信を押さなくても、Javascript/AJAX を使用してフォームの送信を完了することができます。必要最小限の Javascript、つまり jQuery ( http://jquery.com/ ) よりもはるかに簡単にこれを実現するのに役立つさまざまな JavaScript ライブラリがあります。それほど複雑な作業ではありませんが、基本的な Javascript と jQuery の使用方法を学ぶ必要があります。本質的な流れは、フォームが変更されたとき、 AJAX リクエストを送信してフォームを送信することです。着信 AJAX 要求を取得して保存するには、2 つ目のスクリプトが必要です。いくつかの基本的な jQuery チュートリアルの検索エンジンを試してみてください。基本的な理解ができたら、「ajax submit on form change jquery」のようなものから始めることができます。

#2 への回答:

このようなもの(私のメモを参照してください...)

echo '<select name="rating" id="rating">';
$q = mysql_query("SELECT `option_name` FROM `options`");
while($row = mysql_fetch_assoc($q)) { 
    echo '<option value="' . $row['option_name'] . '">' . $row['option_name'] . '</option>';
}
echo '</select>';

選択を事前に選択したい場合は、それも非常に簡単です! 最後の例から:

$pre_selected = "Very Bad";
echo '<select name="rating" id="rating">';
$q = mysql_query("SELECT `option_name` FROM `options`");
while($row = mysql_fetch_assoc($q)) { 
    echo '<option value="' . $row['option_name'] . '"';
    if($row['option_name'] == $pre_selected) { 
      echo ' selected="selected"';
    }
    echo '>' . $row['option_name'] . '</option>';
}
echo '</select>';

しかし、これは私がいくつかのことを指摘したい部分です:

  • あなたが使用していて、私の例が使用しているように、古い mySQL ライブラリを使用しないでください。PDO、または少なくとも mySQLi を使用してください。使用している関数は非推奨であり、PHP で使用できなくなる可能性があります。
  • データを適切にエスケープしてください。「SQL インジェクション」を検索すると、値をエスケープしなかったため、コード (具体的には UPDATE) がどのように安全でないかに関する大量の情報が見つかります。
  • jQuery を使用する場合、jQuery を使用する場合はid="foo"name="foo".
于 2012-12-06T22:42:44.933 に答える