0

フォームからの$_POSTデータを保存できる必要があり(SESSION変数を使用してこれを行っています)、前のデータを上書きせずに$_POST配列にデータを追加する必要があります。

SESSION変数に関する私の元のスレッドは次のとおりです。PHPを使用したページ更新による配列変数の保存

これが私がする必要があることの例です:

ページには、壁の幅と高さを入力して、壁をペイントするために必要なペイント/作業量を計算できるフォームがあります。最初の壁の寸法を入力したら、ユーザーは[壁を追加]というラベルの付いた送信ボタンをクリックして、注文に別の壁を追加できます。

最初の壁入力の後、POSTデータは次のようなものを返します。

Array ( [wallW] => Array ( [0] => 9 ) [wallL] => Array ( [0] => 10 ) ) 

2番目の壁に入ると、次のようになります。

Array ( [wallW] => Array ( [0] => 9 [1] => 20 ) [wallL] => Array ( [0] => 10 [1] => 15 ) ) 

これは、ユーザーがすべての壁に入るまで続きます。

array_merge、などを試してみましarray_appendたが、どれも機能していないようです。POSTデータを別の配列に持ってきても、POSTデータの内容を上書きし続けます。

そこにjQueryを投入するのは簡単なことですが、これはPHPクラス用です(SQLの使用はまだ許可されていません)ので、PHPだけでこれを理解してみたいと思います。

どんな助けでも素晴らしいでしょう。

ありがとう、

チェルシー

4

2 に答える 2

2

なぜこれが反対票を投じられたのかわかりません。あなたが明らかにphpに慣れていないので、失礼だと思います。ただし、後続のリクエストで投稿変数を再投稿する必要があります。したがって、既存の投稿オブジェクトをおそらく非表示フィールドとしてシリアル化する必要があります。あなたが見逃しているのは、php/httpがステートレスであるということです。したがって、リクエスト間で何も保持されません。別の簡単な解決策は、これらのPOST変数をSESSION変数に移動することです。

POSTデータをセッションに追加したようですが、POSTに戻す理由はありません。セッションに追加し続けて、そこから使用してください。_POSTに何かを追加しても、それを実行しようとしている場合は、次回は強制的に投稿されません。非表示フィールドへのシリアル化に関する部分を参照してください。

頑張って、ウェブのプログラミングへようこそ。

于 2013-02-06T00:12:22.280 に答える
0

あなたが配列を構築している方法は私には少し奇妙に思えます。代わりに私は次のようなことをします。

if(!empty($_POST))
{
    $wall = array('w' => $_POST['w'], 'h' => $_POST['h']);
    $_SESSION['walls'][] = $wall;
}

これを試してみてください。

于 2013-02-06T00:14:57.837 に答える