2017-06-01 7 views
0

複数の商品が販売されるサイトがあります。これまでの私のリストページには、上記のコードは、データベース内のすべてのコンテンツをループし、画面上に表示し、このhtmlクリックした内容に応じて異なるページコンテンツ

<div class="col-sm-9 padding-right"> 
    <div class="features_items"><!--features_items--> 
     <h2 class="title text-center">My Products</h2> 

     <?php 
     $servername = "server"; 
     $username = "user"; 
     $password = "pass"; 
     $dbname = "dbname"; 

     // Create connection 
     $conn = new mysqli($servername, $username, $password, $dbname); 
     // Check connection 
     if ($conn->connect_error) { 
      die("Connection failed: " . $conn->connect_error); 
     } 


     $sql2 = "SELECT * FROM myproducts WHERE 1 ORDER BY ProductName ASC"; 
     $myresult = $conn->query($sql2); 

     $x = 1; 
     while ($row = $myresult->fetch_assoc()) { 
     ?> 
     <div class="col-sm-4"> 
      <div class="product-image-wrapper"> 
       <div class="single-products"> 
        <div class="productinfo text-center"> 

         <img src="../../images/myImages/<?php echo $row['ProductImage1'];?>_0001_1.jpg" alt="../../images/myImages/<?php echo $row['ProductImage1'];?>_0001_1.jpg" /> 
         <h2><?php echo $row['ProductPrice']; ?></h2> 
         <p><?php echo $row['ProductName']; ?></p> 
         <a href="#" class="btn btn-default add-to-cart"><i class="fa fa-shopping-cart"></i>Add to cart</a> 
        </div> 
        <div class="product-overlay"> 
         <div class="overlay-content"> 
          <h2><?php echo $row['Vendor']; ?></h2> 
          <h2><?php echo $row['ProductName']; ?></h2> 
          <p>$ <?php echo $row['ProductPrice']; ?></p> 
          <a href="#" class="btn btn-default add-to-cart"><i class="fa fa-shopping-cart"></i>Add to cart</a> 
         </div> 
        </div> 
       </div> 
       <div class="choose"> 
        <ul class="nav nav-pills nav-justified"> 
         <li><a href=""><i class="fa fa-plus-square"></i>Add to wishlist</a></li> 
         <li><a href=""><i class="fa fa-plus-square"></i>Add to compare</a></li> 
        </ul> 
       </div> 
      </div> 
     </div> 
     <?php 
     } 
    $conn->close(); 
?> 

ようになります。私が望むのは、製品をクリックすると別のページに行き、特定の製品情報を表示することです。私は何百もの製品が個別に表示されるようにしています.100以上のHTMLファイルを書く必要がない方法があるかどうかを知りたければ、各ページに個別の表示を付けることができます。

理想的には、phpを使用してdbからプルし、画面に表示する必要があるものを表示するような設定になります。しかし、私の質問は、一度商品がクリックされると、どのページがどの製品に合格したのかを新しいページがどのように知っているかということです。

+1

1ワード:テンプレート。 – Tyr

+0

製品の一意の識別子は何ですか?レコードごとに作成するリンクがその識別子を組み込むように見えるので、どの情報を取得してユーザーに表示するかを知ることができます。 – Taplar

+0

JavaScriptまたはjQueryでこれを行う必要はありません。製品IDを渡すことができる1つのPHPページを作成すると、そのページですべての商品詳細を収集して表示することができます。 – Twisty

答えて

0

あなたはidは、各製品のIDになります。この

my-website.com/product.php?id=2 

のようなルートを定義する必要があります。

または

あなたがテーブルの上にslug列を持っている場合は、

my-website.com/product.php?slug=a-nice-product 

slugを行うことができ、各製品用に生成保存スラグとなります。

どちらの場合でも、製品の詳細ページに表示する特定の製品をフェッチするには、製品のidまたはslugを使用できます。

表示形式は、定義済みのテンプレートに基づいています。あなたが製品のリストについては、何をしたかに似 何かが

<?php 
    $servername = "server"; 
    $username = "user"; 
    $password = "pass"; 
    $dbname = "dbname"; 

    // Create connection 
    $conn = new mysqli($servername, $username, $password, $dbname); 
    // Check connection 
    if ($conn->connect_error) { 
     die("Connection failed: " . $conn->connect_error); 
    } 

    $id = $_GET['id']; // in the case of "my-website.com/product.php?id=2" 

    $sql2 = "SELECT * FROM myproducts WHERE id=$id ORDER BY ProductName ASC"; // NOTE:: This is a bad practice 
    $myresult = $conn->query($sql2); 

    if($myresult): 
?> 

<div class="col-sm-9 padding-right"> 
     <h2 class="title text-center">Details about <?= $myresult['ProductName']; ?></h2> 

     <!-- LIST PRODUCT DETAILS BASED ON TEMPLATE DESIGN --> 

</div> 
<?php 
    endif; 
    $conn->close(); 
?> 

更新されます。続きを読むについてSQL injection

ここでも、クリーンなURLはこの

のようになります。

$id = $_GET['id']; // in the case of "my-website.com/product.php?id=2" 

     $sql2 = "SELECT * FROM myproducts WHERE id=$id ORDER BY ProductName ASC"; 
// NOTE:: This is a bad practice as it is open to SQL injection attacks. 

my-website.com/product/2 

または

しかし、これを達成するには、いくつかのhtaccessルールを設定する必要があります。

+1

答えは詳細ですが、以下の点に注意してください.1つの答えは、URL部分を混同しないようにしてください。 2-何かが良い練習でないなら、それは答えに加えられるべきではありません。または、少なくとも、なぜそれが悪い習慣であるかを説明してください。 –

+0

ありがとうございました@MohammedAkhtarZuberi –

関連する問題