2016-05-01 5 views
1

ここに学生がいます。私はPHPでクラスを取っているので、jQueryやjavascriptではなく、PHPを使ってすべてをやらなければなりません(クラスにはどういう意味がありますか?とてもクールだし、とても楽しんでいます)。連想配列から作成された入力からsubmit/reloadの入力値を保持します(No Jquery/Javascript)

私はこの週に新しい漫画本リリースにアクセスして連想配列に格納するためにデータスクレイピングを使用する学生PHPアプリケーションに取り組んでいます。連想配列は、一連の入力を作成するためにループします)を使用して、注文したい漫画の数を指定することができます。次に、ユーザーに小計、税金、合計を表示して注文を確認したり変更したりするよう数学を行います。これは学生プロジェクトです、私は学生です。これは実際の使用例ではなく、トレーニングレッスンです。

私が見つけた問題は、提出時に、誰かが注文したものを見ることができるように入力値を入力できないことです。注文値が '修正'したい注文を確認する前に注文してください。

var_dumps私は値を持っていることを示しています、私はちょうど戻ってポストバックを行った後にそれをそれぞれの入力フィールドに再表示/表示する値を取得できません。私の問題は、 "。$ _POST ['valueName']であるようです。"各入力は連想配列から生成されるので、私は "$ _POST ['valueName']"を単純に行うことはできませんので、 "$ _POST ['$ var ']」ですが、これは連結を介して行われるため機能しません。うまくいけば、そこに誰かが私がこれに最善に取り組むことができる方法のアイデアがあります。

もう一度 - 私は学生ですので、私は何も知らないと仮定してください - すべてをお探ししていただきありがとうございます 乾杯!

これは私のテストアレイである:

<?php 
    // My test array 
    $newRelease = [ 
     'All-New Wolverine #7' => '3.99', 
     'Captain America Omnibus Volume 1 HC (New Printing)' => '125.00', 
     'Amazing Spider-Man #11' => '3.99', 
     'Daredevil #6 (David Lopez Story Thus Far Variant Cover)' => 'AR', 
     'Doctor Strange #7 (Chris Bachalo Regular Cover)' => '3.99', 
    ]; 


    /* 
    * Loop thru array, create inputs which populate 
    * when submitted based on post values 
    * PHP course - can't use javascript/jquery - must be PHP 

    foreach ($newRelease as $title => $price) { 
    echo $title . ' - ' . $price . ' (ea.) <input type="text" name="' . $title . '" value="' . $_POST[$title] . '" > <br /> -- ' . $check . ' -- <br/><br />'; 
    } 

答えて

2

問題:

私が見つけてる問題が提出する上で、私は人々のように、入力値を移入することはできませんよということです一度全体を見ると、何を変えたいのかを知ることができます。

溶液:foreachループの各反復において

$_POST['YOUR_FIELD_NAME']が設定されているか否かを確認してください。設定されている場合は、ユーザーが提出した値、つまり$_POST['YOUR_FIELD_NAME']を表示します。そうでない場合は、事前定義の配列値priceを表示します。

<?php 

    $newRelease = [ 
     'All-New Wolverine #7' => '3.99', 
     'Captain America Omnibus Volume 1 HC (New Printing)' => '125.00', 
     'Amazing Spider-Man #11' => '3.99', 
     'Daredevil #6 (David Lopez Story Thus Far Variant Cover)' => 'AR', 
     'Doctor Strange #7 (Chris Bachalo Regular Cover)' => '3.99', 
    ]; 
    ?> 
    <form action="index.php" method="POST"> 
    <?php 
    foreach ($newRelease as $title => $price){ 
     $title = str_replace(' ', '_', $title); 
     ?> 
     <input type="text" name="<?php echo $title; ?>" value="<?php if(isset($_POST[$title])){ echo $_POST[$title]; }else{ echo $price; } ?>" ><br /> 
     <?php 
    } 
    ?> 
    <input type="submit" name="submit" value="submit" /> 
    </form> 
    <?php 

?> 

なぜstr_replace()機能を使用しましたか?

入力フィールド名にドットまたはスペースを使用することはできません。 the documentationから:変数名で

ドットとスペースがをアンダースコアに変換されます。たとえば、$ _REQUEST ["a_b"]になります。

だから$_POSTは、ユーザーが投稿した値を検出することができるようにアンダースコアですべての空白を置き換えるためにstr_replace()機能を使用する必要があります。 $_POST superglobalの内容を表示する場合は、var_dump($_POST);を実行してください。

+0

注記ありがとうございます。彼らは非常に余裕ができていると感じています。私はあなたの提案をプロジェクトに継続することを楽しみにしています。あなたは助けてくれて大変感謝しています - ありがとう! – Chezshire

+0

@Chezshire Glad私は助けることができました。 *乾杯!:-) –

+0

こんにちは私はちょうどこれをテストし、注文した問題の数の値を表示/保持したかったので、私が必要とした答えは「かなり」ではありませんでした。しかし、簡単な調整で、それは私が望むように、プラスそれは私にそれを使用する他の方法を見ることができます。これは本当に本当に教育的な答えだったので、本当にありがとうと思いました。それはとても驚くほど理解でき、私は本当にRajdeepの助けに感謝します! – Chezshire

関連する問題