2016-11-28 17 views
10

Okulda PHP üzerinden son kullanıcılara bir veritabanından ürünleri gönderen bir web perakende mağazasını simüle etmemiz gereken bir ödev yapıyorum. Kullanıcı daha sonra ürünleri bir onay kutusuyla sepete ekleyebilmeli ve onları yalnızca ürün tablosundan seçilen öğelerin gösterilmesi gereken sepete götüren bir düğmeye basmalıdır.Başka bir PHP sayfasındaki değişkenleri bir tablodan diğerine geçirme

Bazı büyük ilerlemeler kaydettim, ancak bu küçük küçük sorun üzerinde sıkışıp kaldım: Tablodaki seçili öğeleri nasıl sunacağımı anlayamıyorum. Bu götüren kullanıcı onay kutusu ile ürünlerini seçer ve düğmeye basan

<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 product table

Ve kod: benim ürün tablosu şu anda nasıl göründüğünü göstereyim

The selected products

Ve c: şu şekilde görünecektir selected_products.php sayfasına gazel:

<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>"; 
    } 
} 
?> 

Yani, benim sorum edilir

: nasıl seçilen ürünler yerine şimdi olduğu gibi tek bir sütunda yukarı mushed olma, tüm tabloyu doldurun yapabilirsiniz? value='$id&$name&$price' ile iletiyorum, ancak bu değer dizesini selected_products.php sayfasındaki ilgili girdiye koymak için nasıl yapabilirim?

+0

Sönüm işlevini kullanarak dizgeyi ayırmanız gerekir, ancak ürün adınız "L & T" veya "H & P" ise ne olur? – C2486

+0

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

+0

" & "kullanmak yerine, tıpkı @mplungjan'ın dediği gibi," | " çarpma değerleri kümesi için. –

cevap

5

Farklı gidin.

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>"; 
} 

Ancak bu oldukça kötü bir fikir çünkü herkesin istediği her şeyi doldurmasına izin veriyor. Bunun nedeni herkesin istedikleri içerikle posta isteği gönderebilmeleridir. Daha iyi bir yol, öğenin kimliğine göre seçilip, daha sonra, öğenin kimliğini kullanarak veri tabanından ihtiyaç duyduğunuz verileri okur. Bu şekilde sadece veritabanında bulunan öğeler gösterilebilir.

+1

verdiğim yorumdaki bağlantıyı çoğaltın olarak işaretleyin Herkese teşekkürler! Daha önce patlatmayı okudum, ama nasıl kullanacağımdan emin değildim ya da projemde işe yarayacaktı. Hepinize tekrar teşekkürler! – tobulos1

3

Dize, & adresinde bölünmüş.

explode("&",$selected); 

Bu, değerleri ayrı ayrı tutan bir dizi oluşturur. Projenizle

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

İyi görünüm;)

GÜNCELLEME: @mplungjan gibi söyledi: değerlerini ayıran için kullanılması boru. Sonra zaten bu sorunu çözmek için explode() kullanabilirsiniz yorumlarla cevap

explode("|", $selected);

+0

için '&', '|' vb. Gibi tek karakterler yerine özel bir sınırlayıcı kullanılmasını öneririm. Bunu 10 dakika önce açıklamıştım. – mplungjan

+0

Bu doğru. Bunu önemsemeli - ama istediği şeyin cevabı bu. – m1crdy

+1

Yani – mplungjan