2013-03-06 2 views
0

Im в настоящее время работает над университетским проектом по созданию рабочего сайта электронной коммерции с использованием PHP. Хотя я использую HTML на протяжении многих лет, PHP по-прежнему является иностранным языком. Я все еще изучаю самые основы. Я считаю, что лучший способ для меня - это иметь скрипку.PHP Array Blank Выбор опций

У меня проблема с выпадающим списком 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

сколько вариант выйдет в поле выбора? –

+0

Извините за то, что вы не указали это ... Существует 5 возможных вариантов размеров ($ row10 to $ row14) –

+0

Имеет ли ваша строка $ значение? Я думаю, вы смешиваете mysql_query() с mysqli_query(); –

ответ

0

Лучшим вариантом было бы перебрать значения. Если вы уверены, что стартовое значение будет $ row [10], вы можете управлять с циклом for. Что-то вроде этого.

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

Это фантастика. Приветствую вас за помощь! Все работающие, наверняка, в какой-то момент снова столкнутся с большим количеством вопросов. Cheers - Мэтт Кидд сейчас редактирует –

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