2014-11-21 1 views
0

Я создал довольно большой динамический сайт в качестве проекта, и все работает, кроме одной функции.захватить значение из базы данных и использовать forloop для заполнения выпадающего меню в php

Я использую PHP для отображения таблицы HTML, которая заполняется из моей базы данных. Я могу захватить значение ip_stock, которое является значением int, я хочу принять это значение и пропустить через него, чтобы заполнить выпадающее меню для каждого элемента, который будет куплен в таблице. Каждый элемент будет иметь другое значение в ['ip_stock']. Вот мой код, минус часть HTML вверху, которая не очень относительна, но соединение выполнено и выполнено успешно, мой forloop не работает и не работает, если я помещаю его в сам код выбора.

<?php 

    $pagerows = 5; 

    if (isset($_GET['p']) && is_numeric($_GET['p'])) { 
     $pages=$_GET['p']; 
    } else { 
     $query = "SELECT COUNT(ip_id) FROM in_product"; 
     $result = mysqli_query($dbhandle, $query); 
     $rows = @mysqli_fetch_array($result, MYSQLI_NUM); 
     $records = $rows[0]; 

    if ($records > $pagerows) { 
     $pages = ceil($records/$pagerows); 
    }else{ 
     $pages = 1; 
     } 
    } 

    if (isset($_GET['s']) && is_numeric ($_GET['s'])) { 
     $start = $_GET['s']; 
    }else{ 
     $start = 0; 
    } 


    echo "<table class='tableadmin2'> 
    <tr> 
    <td class='td2'><b>Add&nbsp;to&nbsp;Cart: </b></td> 
    <td class='td2'><b>Product Information: </b></td> 
    <td class='td2'><b>Product Photo: </b></td> 
    <td class='td2'><b>Select Amount: </b></td> 
    </tr>"; 

    $display6="SELECT * 
     FROM in_product LIMIT $start, $pagerows; " ; 
    $displayResult6 = @mysqli_query($dbhandle, $display6) 
       or die(mysqli_error($dbhandle)); 

    while($row6 = mysqli_fetch_array($displayResult6, MYSQLI_ASSOC)) { 
    $i = 1; 
    $x = $row6['ip_stock']; 
    $y = " "; 
    for($i = 1; $i <= $x; $i++) { 
    $y = "<option value=' . $i . '> $i </option>"; 
    }    
    echo "<tr> 
    <input type='hidden' id='prod' value='" . $row6['ip_id'] . "' /></td> 
    <td class='td2'><a href='addcartInstate.php?ip_id=" . $row6['ip_id'] . "'>Add To Cart&nbsp</a></td> 
    <td class='td2'><strong> " . $row6['ip_name'] . " </strong><br> " . $row6['ip_desc'] . " <br> $" . $row6['ip_price'] . " </td> 
    <td class='td2'><img alt='first' src=" . $row6['ip_image'] . " width='300' height='250'></td> 
    <td class='td2'><br> 
     <b>Quantity:&nbsp;&nbsp;</b><br> 
       <select id='orderIn_quantity' name='orderIn_quantity'> 
        <option value='Select'> Select </option> 
        $y            
       </select> 
    </td> 
    </tr>"; 
    } 
    echo "</table>"; 

    if(isset($_POST['orderIn_quantity'])) { 
     $orderIn_quantity = $_POST['orderIn_quantity']; 
     } 

    if($pages > 1) { 
     echo '<p class="table3">'; 
     $current = ($start/$pagerows) + 1; 
     if ($current != 1) { 
      echo '<a href="instate.php?s=' . ($start - $pagerows) . '&p=' . $pages . '">Previous Page </a>'; 
     } 
     if ($current != $pages) { 
      echo '<a href="instate.php?s=' . ($start + $pagerows) . '&p=' . $pages . '">Next Page </a> '; 
     } 
    } 
?> 
+2

Что вы имеете в виду под «не работает»? Есть ли ошибки? Вы используете проверку ошибок? Вы просмотрели журналы ошибок? –

+0

Забыл добавить это ... Этот код захватывает значение, содержащееся в базе данных, но отображает только это значение, не задерживает это значение, чтобы заполнить множество выборов на основе этого значения. – user3447733

+1

Добро пожаловать в stackoverflow! Одна вещь, которую мы просим, ​​состоит в том, что вы соедините свой код с конкретной проблемой. Как @JayBlanchard сказал, покажите нам, какие у вас ошибки. Определите «не работает» и покажите фрагменты кода, которые релевантны – Cfreak

ответ

2

Насколько я могу видеть, на нем будет отображаться только последнее значение, правильно? Потому что вы переписываете свой предыдущий вариант с новым. Вам нужно использовать string concatenation.

Вам нужно изменить

$y = "<option value=' . $i . '> $i </option>"; 

в

// this will append new string to previous string 
$y .= "<option value=' . $i . '> $i </option>"; 
+0

Это сработало отлично! Не могу поверить, что я был так близок. Отсутствует один – user3447733

+0

Спасибо вам большое за помощь! – user3447733

0

Вам нужно добавить к $ Y не перезаписать. Кроме того, вы, вероятно, следует придерживаться Eiter конкатенации или переменной интерпретации, когда эхо строк, поэтому при выводе $ у делать это с конкатенации:

$y=''; 
for($i = 1; $i <= $x; $i++) { 
    $y =. "<option value='" . $i . "'>". $i ."</option>"; 
}    
echo "<tr> 
<input type='hidden' id='prod' value='" . $row6['ip_id'] . "' /></td> 
<td class='td2'><a href='addcartInstate.php?ip_id=" . $row6['ip_id'] . "'>Add To Cart&nbsp</a></td> 
<td class='td2'><strong> " . $row6['ip_name'] . " </strong><br> " . $row6['ip_desc'] . " <br> $" . $row6['ip_price'] . " </td> 
<td class='td2'><img alt='first' src=" . $row6['ip_image'] . " width='300' height='250'></td> 
<td class='td2'><br> 
    <b>Quantity:&nbsp;&nbsp;</b><br> 
      <select id='orderIn_quantity' name='orderIn_quantity'> 
       <option value='Select'> Select </option> 
       ". $y ."            
      </select> 
</td> 
</tr>"; 
Смежные вопросы