2013-03-06 143 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>"; 
}