2013-03-06 135 views
0

我目前正在使用PHP創建一個大學項目來創建一個工作的電子商務網站。雖然我多年來一直在使用HTML,但PHP仍然是一門外語。我仍然在學習非常基礎知識。我發現學習最好的方法就是有一把小提琴。PHP Array空白選擇選項

我有一個HTML選擇下拉的問題,它從一個PHP數組中收集它的值,它是通過MySQL數據庫收集的。這裏是我的代碼:

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

正如你可能已經制定出......我認爲問題歸結於我宣佈了五個選項。有沒有辦法讓我聲明一個,如果其他人持有數據庫中的值,他們作爲一個選項添加?

將不勝感激任何幫助!

+0

多少選項會在選擇框? – 2013-03-06 11:24:29

+0

道歉沒有聲明這... 總共有5個可能的選擇大小($ row10到$ row14) – 2013-03-06 11:25:37

+0

您的$行是否包含任何值?我認爲你在mysql_query()和mysqli_query()之間混淆了; – 2013-03-06 11:35:06

回答

0

最好的選擇是循環訪問這些值。如果您確定起始值爲$ row [10],那麼您可以使用for循環進行管理。下面的那種東西。

for ($i=10;i<lenght_of_array;i++) 
{ 
    <option>$row[i]</option> 
} 
+0

這很棒。歡呼你的幫助大家!所有的工作,當然還有一些問題再次出現。乾杯 - 馬特基德剛剛編輯 – 2013-03-06 11:43:21

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

假設你的尺寸是零,否則你可以呼應之前檢查他們:

if (!is_null($row10)) { 
    echo "<option>" . $row10 . "</option>"; 
} 
相關問題