0

私は現在、PHPを使用して機能するeコマースサイトを作成するための大学プロジェクトに取り組んでいます。私は長年HTMLを使用していますが、PHPはまだ外国語です。私はまだ非常に基本を学んでいます。私が学ぶための最良の方法は、フィドルを持つことです。

MySQLデータベースを介して収集されるPHP配列から値を収集するHTML選択ドロップダウンに問題があります。これが私のコードです:

<?php
session_start();
//Connect to Session
include "conn.php";

//Retrieve Header
include "header.php";

//Query
if (isset($_GET['id'])){
    $product_id = $_GET['id'];
    $q="SELECT ProductName,img,ProductID,Description,p_spec1,p_spec2,p_spec3,p_spec4,p_spec5,Price,size_1,size_2,size_3,size_4,size_5 FROM Products 
                    WHERE ProductID=$product_id";
    $result = mysqli_query($_SESSION['conn'],$q);

//Display
    if ($row = mysqli_fetch_array($result)){

        //DO NOT SHOW BLANK ARRAYS METHOD ONE
        $row = array_filter($row);              
        echo "<div>
        <p><b>Name:</b> $row[0]</p>

        <p><img src=".$row[1]."></p>

        <p><b>Product Code: </b>$row[2]</p>

        <p><b><u>Product Description:</b></u></p>
        <p>$row[3]</p>

        <p><b><u>Product Spec:</b></u> <li>$row[4]</li><li>$row[5]</li><li>$row[6]</li><li>$row[7]</li><li>$row[8]</li></p>

        <p><b>Price:</b> &#163;$row[9]</p>

        <p><b>Quantity:</b>
            <select>
                <option>1</option>
                <option>2</option>
            </select>
        </p>

        <p><b>Size:</b>
            <select>
                <option>$row[10]</option>
                <option>$row[11]</option>
                <option>$row[12]</option>
                <option>$row[13]</option>
                <option>$row[14]</option>
            </select>   
        </p>
        </div>";
    }
    else {
        echo $row="";
    }

//Add Item to basket
    echo "<div><a href=\"cart.php?action=add&product=$product_id\">
                        Add to Bag</a></div>";
}

//Retrieve Footer
include "footer.php";
?>

おそらくすでに解決していると思いますが...問題は、私が5つのオプションを宣言しているという事実にあると思います。1つを宣言する方法はありますか?他の人がデータベース内に値を保持している場合、それらはオプションとして追加されますか?

助けていただければ幸いです!

4

4 に答える 4

0
    //Connect to Session
    include "conn.php";

    //Retrieve Header
    include "header.php";

    //Query
    if (isset($_GET['id'])){
        $product_id = $_GET['id'];
        $q="SELECT ProductName,img,ProductID,Description,p_spec1,p_spec2,p_spec3,p_spec4,p_spec5,Price,size_1,size_2,size_3,size_4,size_5 FROM Products 
                        WHERE ProductID=$product_id";
        $result = mysqli_query($_SESSION['conn'],$q);

    //Display
        if ($row = mysqli_fetch_array($result)){

            //DO NOT SHOW BLANK ARRAYS METHOD ONE
            $row = array_filter($row);     

         $option ='';
for($i=10;$i<15;$i++){
    if(isset($row[$i]) && !empty($row[$i])){
        $option.='<option>'".$row[10]."'</option>';
    }


            echo "<div>
            <p><b>Name:</b> $row[0]</p>

            <p><img src=".$row[1]."></p>

            <p><b>Product Code: </b>$row[2]</p>

            <p><b><u>Product Description:</b></u></p>
            <p>$row[3]</p>

            <p><b><u>Product Spec:</b></u> <li>$row[4]</li><li>$row[5]</li><li>$row[6]</li><li>$row[7]</li><li>$row[8]</li></p>

            <p><b>Price:</b> &#163;$row[9]</p>

            <p><b>Quantity:</b>
                <select>
                    <option>1</option>
                    <option>2</option>
                </select>
            </p>

            <p><b>Size:</b>
                <select>".$option."
                </select>   
            </p>
            </div>";
        }
        else {
            echo $row="";
        }

    //Add Item to basket
        echo "<div><a href=\"cart.php?action=add&product=$product_id\">
                            Add to Bag</a></div>";
    }

    //Retrieve Footer
    include "footer.php";
    ?>
于 2013-03-06T11:31:21.273 に答える
0

最良のオプションは、値をループすることです。開始値が$row[10]であることが確実な場合は、forループで管理できます。以下のようなもの。

for ($i=10;i<lenght_of_array;i++)
{
    <option>$row[i]</option>
}
于 2013-03-06T11:32:36.570 に答える
0

あなたは正確に何を問題にしていますか?$ row [10]-$ row [14]フィールド内に常に値があるとは限らない場合は、ループを実行する必要があります。

   echo "<div>
        <p><b>Name:</b>".$row[0]."</p>

        <p><img src='".$row[1]."'></p>

        <p><b>Product Code: </b>".$row[2]."</p>

        <p><b><u>Product Description:</b></u></p>
        <p>".$row[3]."</p>

        //Do this up to select box and then 

            <select>";

for($i=10;$i<15;$i++) {
  if($row[$i]!='')
  echo "<option>".$row[$i]."</option>";
}

    echo"</select>   
        </p>
        </div>";
于 2013-03-06T11:33:01.263 に答える
0

サイズがnullであると仮定すると、エコーする前にサイズを確認できます。

if (!is_null($row10)) {
    echo "<option>" . $row10 . "</option>";
} 
于 2013-03-06T11:39:17.403 に答える