2011-12-16 10 views
0

私はphp/mysql eshopのページを構築しています。これは、price []のtextbox、special_offer_price []のもう一つ、チェックボックス(ホームページ[])を押して、ホームページに表示する商品を選択します。このページは、店舗のオーナーが各製品に1つずつ行くのではなく、1つのページを使用してすべての製品の価格を更新できるように、バッチ更新の価格です。PHPのポスト値の制限、私の投稿を制限するために必要な提案

問題は、ストアに約500個の製品があるため、製品をアップデートするページに500x4 = 2000のポスト値をポストしていることです。投稿のPHPの制限は1000ですが、投稿を制限するために使用できるより良い方法はありますか?

+0

は、製品のリストをページングするオプションですので、1ページあたり100個の製品しかないようです。 – codeling

+0

できますが、私はしたくないです。 – bikey77

+0

あなたはまた、変更されたものだけを投稿するためにjavascriptを使用することができます。 –

答えて

0

一般に、すべてのレコードを同じページに表示することは好ましくありません。その製品リストをページで分割し、ページあたり50個の製品を表示するなどfirst/prev/next/last pageなどへのナビゲーションを提供する。

これをテキストフィルタリングと組み合わせることができます。

このようにして、システムのパフォーマンスと動作を予測できます。

+0

上記のように、私はあなたの意見は見ませんが、私は可能であれば元のコンセプトに固執したいとは思いません。 – bikey77

+0

私はちょうどいいと言っています:-) –

0

すべての商品を一度に表示する必要がある場合は、javascriptを使用して必要なときに入力を動的に作成することができます。あなたのデータは、クリックハンドラが添付されている<div>に表示されます。ユーザーがそのdivをクリックすると、divは入力に変換されます。そうすれば、変更されたフィールドだけを送信する必要があります。

ステップ1:そして、あなたは唯一の変更されたデータを送信するためにJavaScriptを使用してについては

+0

それは良いことです。しかし、大量再割り当ての仮説的なケースでは、各divをクリックするだけでタブをクリックするのは面倒です。 –

1

...がありますどのように多くの入力数えると、あなたのPHPのポスト限界までその数を制限することができ、元の値

<input type="hidden" id="price1_original" value="3.5" /> 
<input type="text" id="price1" class="price" value="3.5" /> 
を発します

ステップ2:フォームでハンドラを提出し、

changed = $('.price').filter(function() { 
    var original = $('#' + this.id + '_original').val(); 
    return this.val() != original; 
}); 

ステップ3のみ変更するものを選択:AJAXを準備し、送信要求

$.post('/change_price.php', {prices : data}, function(response) { 
    // handle response 
}); 

ステップ4:PROFIT! :-)

UPD:もう1つの解決策は、ユーザーが値を変更してフォーカスを他の場所に移動したときにすぐに変更を送信することです。

$('.price').change(function() { 
    // validate input 
    // post this single price change to server 
}); 
+0

隠し入力を常に使用できます:-)コードを更新しました。 –

関連する問題