2012-03-05 8 views
2

私は、ユーザが望む特定の製品の数(数量)を保持するダイナミックに生成されたテキストボックスのセットを持っています。私はphp/mysqlを使って正しい番号を反映させるために、ユーザがテキストボックス内の数字を変更できるようにする機能を組み込もうとしています。私は、ユーザーが前のページから入力した現在の数量を引き出すコードを以下に示しますが、現在のページからの量の変更をどのように組み込むかわかりません。私はUPDATEを使用しなければならないと仮定していますが、特定の製品(または行)のみに含める方法はわかりません。動的に生成されたテキストボックスのリストからのデータを使用してmysqlデータベースを更新する正しい方法は何ですか?

@$link = $_GET['link']; 
$price = $_GET['price']; 
$title = $_GET['title']; 
$retailer = $_GET['retailer']; 
$options = $_GET['options']; 
$quantity = $_GET['quantity']; 
$session = session_id(); 
$_SESSION['sess_var'] = $session; 

mysql_query("INSERT INTO sessionid (sessionid, link, retailer, price, title, qt, options) VALUES('$session' , '$link', '$retailer', '$price', '$title', '$quantity', '$options') "); 

       $query = "SELECT * FROM `sessionid` WHERE `sessionid` = '$session' "; 
       $result = mysql_query($query) or die(mysql_error()); 

        echo '<table class="table"><tbody><form action = "viewcart.php" method = "get">'; 

        $subtotal = 0; 
        $i=1; 
        while($row = mysql_fetch_assoc($result)) { 
          echo '<tr><td></td><td><h3>' . $row['title'] . '</h3></td><td>' . $row['options'] . '</td><td><div class="span3 offset1"><input type="text" name="box[' . $i . '] "value="' . $row['qt'] . '" class="span1"> <input type="submit" class="btn" value = "Refresh"> <h4> $' . $row['price'] . '</h4></td></tr>'; 
          $i++; 
          $prodtotal= $row['qt'] * $row['price']; 
          $subtotal= round($subtotal+ $prodtotal, 2); 
          $_SESSION['subtotal']=$subtotal; 
          } 

    echo '</form></tbody></table>'; 
+0

あなたの質問は本当に理解できません。詳しく説明できますか? – MahanGM

+0

私は、ユーザーがテキストボックスにどのような量の製品をそれぞれ指定し、mysqlデータベースを更新してから適切な数量でページを更新するようにしたいと思っています。これは役に立ちますか? – sharataka

+0

私はそれを得た。あなたがこれをやりたいのは、AJAXが必要です。ところで、なぜあなたはページを更新する必要がありますか?あなたが言っているように、これらの種類の行為はすべてのユーザー入力の後に完了するはずです。そのため、MySql表を更新する理由はわかりません。基本的には、ユーザーが数量を変更してからサーバー側のPHPファイルにAJAXリクエストを送信し、各製品価格を返すためのMySqlテーブルを取得してから、結果を取得してリフレッシュせずにページに表示することができます。 'jQuery' JavaScriptライブラリを使ってAJAXを使いやすくすることをお勧めします。 http://api.jquery.com/jQuery.ajax/ – MahanGM

答えて

1

状況に応じてさまざまな方法があります。

  1. ページ上のすべてのアップデートで更新DBセッションを維持したいとあなたは、フォームの送信やページの更新を通じて更新をしたい場合、あなたはどれを認識する必要があります。ここではあなたが考慮するための3つのアプローチがありますフォームは、使用しているスーパー・グローバルを満たしています。前のページのものか、現在のページのものか。私はこれまで、隠しフォームフィールド(例えば、<input type="hidden" name="form_alias" value="update_form" />など)を追加することでこれを行いました。前のページに挿入し、正常に挿入されたときにリダイレクトすることも考えてください。

  2. DBセッションを更新したままにしたい数量更新のためだけにページを更新する必要がない場合は、AJAXを介して更新を提出することができます(MahanGMの注記を参照してください)。

  3. 少量の更新ですべてDBセッションを更新する必要がない場合dbとサーバーに負荷をかけずにクライアント側(JavaScript)の計算をもっと気にしないというアイデアなら、JavaScriptを使ってクライアント側のコンテンツを動的に更新し、フォームの送信時にのみdbを更新することができます。

PS - SQLインジェクションに注意してください。あなたの現在のコードはかなり脆弱です。あなたはユーザーが受け渡したデータに何もしておらず、POSTの代わりにGETを使用しているので、URLを通して簡単に操作できます。余りに遠くない場合は、PDOに切り替えてprepareを使用することをおすすめします。それ以外の場合はmysql_real_escape_stringを使用してください。

関連する問題