2016-11-28 16 views
10

データベースからPHP経由でエンドユーザーに製品を送信するWeb小売店をシミュレートする必要がある、私は学校で課題を行っています。ユーザーはチェックボックスを使用して商品をカートに追加し、商品表の選択された商品のみが表示されるカートにカートを持って行くボタンを押すことができます。別のPHPページのあるテーブルから別のテーブルに変数を渡す

私はいくつかの大きな進歩を遂げましたが、私はこの小さな問題に取り組んでいます。これは、選択したアイテムをテーブルに提示する方法を理解できません。私は私の製品表には、今どのように見えるかをお見せしましょう:

The product table

とコード:

<form action="selected_products.php" method="POST"> 
<table> 
    <tr> 
     <th>Select</th> 
     <th>Product-ID</th> 
     <th>Product Name</th> 
     <th>Price SEK</th> 
    <tr> 

<?php 
// Print out all entries in a table 
foreach ($rows as $value) { 
    extract($value); 

    echo "<tr><td><input type='checkbox' name='SelectedData[]' alt='Checkbox' value='$id&$name&$price'></td>"; 
    echo "</td><td>".$id.''; 
    echo "</td><td>".$name.''; 
    echo "</td><td>".$price.''; 
    echo "</td></tr>"; 
} 
?> 
</table> 
<br> 
<input type="submit" value="Add to cart" /> 
</form> 

ユーザーがチェックボックスで製品を選択し、ボタンを押すと、それはそれらを取ります

The selected products

とC:次のようになりますselected_products.phpページへODE:

だから、
<table> 
    <tr> 
     <th>Product-ID</th> 
     <th>Product Name</th> 
     <th>Price SEK</th> 
    <tr> 
<?php 
if(!empty($_POST['SelectedData'])) { 
    foreach($_POST['SelectedData'] as $selected) { 
      echo "<tr><td>".$selected.''; 
      echo "</td></tr>"; 
    } 
} 
?> 

、私の質問は:どのように私は、選択した製品ではなく、彼らが今のように1列にアップmushedされるので、テーブル全体を記入することができますか?私はvalue='$id&$name&$price'でそれを渡しますが、selected_products.phpページの対応する列にすべての項目を入れるためにこの値の文字列を作成するにはどうすればよいですか?

+0

あなたは分解機能で文字列を分割する必要がありますが、製品名が 'L&T'または' H&P'の場合はどうなりますか? – C2486

+0

'value = '$ id | $ name | $ price'' – mplungjan

+0

@mplungjanと同じように、"& "を使うのではなく、パイプ" | "値のセットを埋め込むためのものです。 –

答えて

5

を行きます。

foreach($_POST['SelectedData'] as $selected) { 
    list($id, $name, $price) = explode("&", $selected); 
    echo "<tr><td>".$id.''; 
    echo "</td><td>".$name.''; 
    echo "</td><td>".$price.''; 
    echo "</td></tr>"; 
} 

しかし、これは誰もが望みどおりに記入することができるので、どちらかといえば悪い考えです。これは、誰もが望むコンテンツを投稿要求に送信できるからです。より良い方法は、アイテムのIDに選択を設定し、アイテムのIDを使用してデータベースから必要なデータを再度読み取ることです。この方法では、データベースにあるアイテムだけを表示できます。

+1

ありがとう皆さん!私は前に爆発について読んだことがありますが、使用方法やプロジェクトでうまくいくかどうかはわかりませんでした。もう一度、ありがとう! – tobulos1

3

文字列を&に分割します。

explode("&",$selected); 

これは、値を別々に保持する配列を作成します。

[0] => 3 
[1] => Samsung 960 Pro 
[2] => 3150 

プロジェクトとの良好な外観;)

UPDATE:@mplungjanよう は言った:値をseperatingためのパイプを使用しています。そして、すでに述べたように、あなたがこの問題を解決するためにexplode()を使用することができ、コメントに答え

explode("|", $selected);

+0

のように使用することをお勧めします。 – mplungjan

+0

そうです。彼はこれについて気にする必要があります - しかし、これは彼が求めたものに対する答えです。 – m1crdy

+1

私は与えたコメントにリンクの重複としてマークします – mplungjan

関連する問題