2014-11-21 12 views
1

Я создаю обычную корзину покупок, которая при нажатии на ссылку «добавить в корзину» значение количество, выбранное в меню перетаскивания, и идентификатор продукта перейдет на addCart. У меня нет проблем с передачей идентификатора продукта, но выпадающее меню выбора количества динамически заполняется суммой, доступной на складе. Я не могу захватить выбранное количество и передать его на следующую страницу. Я специально хочу знать, как захватить значение, выбранное из выпадающего меню, на страницу addCart.передать значение выпадающего меню на другую страницу

Торговый страница:

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

} эхо "";

addCart страница:

<?php 
echo "<table class='table10'> 
<tr> 
<td class='td2'><b>Product Name: </b></td> 
<td class='td2'><b>Quantity: </b></td> 
<td class='td2'><b>Price: </b></td> 
</tr>"; 

if (isset($_GET['ip_id'])) {  
    $ip_id = $_GET['ip_id']; 
} elseif (isset($_POST['ip_id'])) {  
    $ip_id = $_POST['ip_id']; 
} 
if (isset($_GET['orderIn_quantity'])) {  
    $orderIn_quantity = $_GET['orderIn_quantity']; 
} elseif (isset($_POST['orderIn_quantity'])) {  
    $orderIn_Quantity = $_POST['orderIn_quantity']; 
} 

$q = "SELECT * 
    FROM in_product WHERE ip_id = '$ip_id'; " ; 
$result = @mysqli_query($dbhandle, $q) 
      or die(mysqli_error($dbhandle)); 
$rows = mysqli_fetch_array($result); 
$total = $rows['ip_price'] * $orderIn_quantity; 

echo "<tr>  
<input type='hidden' name='ip_id' value='" . $rows['ip_id'] . "' /> 
<td class='td2'>" . $rows['ip_name'] . " &nbsp</td> 
<td class='td2'>" . $orderIn_quantity . " &nbsp</td> 
<td class='td2'>$" . $total . ".00 &nbsp</td> 
</tr>"; 
echo"</table>"; 

>

ответ

0

Проблема ваша методика. Поскольку вы пытаетесь использовать ссылку с параметром URL в качестве метода добавления в корзину, количество не может быть известно без изменения URL-адреса ссылки перед отправкой.

Похоже, вы можете немного смутить разницу между $ _GET и $ _POST и когда использовать какой. $ _GET - это когда вы передаете переменные через параметры URL, а $ _POST - это когда вы отправляете данные на страницу через форму.

В текущей реализации, эта строка:

<input type='hidden' id='prod' value='" . $row6['ip_id'] . "' /></td> 

бесполезно, потому что вы не подав форму, так что эта скрытая переменная никогда не будет отправлен в любом месте (кроме того, </тд > тег не как представляется, открывается в любом месте, и если вы собираетесь использовать его в форме, ему нужен атрибут имени).

Аналогичным образом, ваш < выберите > меню бесполезно по той же причине.

Я бы порекомендовал вам изменить свою методологию, чтобы использовать вместо нее. Так что ваш код на странице покупок может выглядеть следующим образом:

echo "<tr> 
<form method='post' action='addcartInstate.php' name='addToCartForm' id='addToCart Form'> 
<input type='hidden' name='ip_id' id='prod' value='" . $row6['ip_id'] . "' /> 
<td class='td2'><input type='submit' name='submit' value='Add To Cart' /></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> 
</form> 
</tr>";  

Затем в addcartInstate.php файле:

$ip_id = $_POST['ip_id']; 
$orderIn_Quantity = $_POST['orderIn_quantity']; 

Вы можете, конечно, стиль кнопку отправки, чтобы сделать его лучше, чем по умолчанию.

Есть и другие способы достижения этого, которые вы узнаете по мере продолжения экспериментов, в том числе с помощью ссылки для запуска формы submit, а не кнопки.

+0

Большое вам спасибо за помощь. Я понимаю вашу методологию и соглашаюсь с требованием формы. Я добавил форму и другие предложения, которые вы сделали, и я чувствую, что приближаюсь. После добавления этого кода. Теперь я получаю эту ошибку. – user3447733

+0

Примечание: Undefined переменной: ip_id в C: \ XAMPP \ HTDOCS \ фейерверк \ addcartInstate.php на линии 24 Примечание: Undefined переменной: ip_id в C: \ XAMPP \ HTDOCS \ фейерверк \ addcartInstate.php на линии 34 Можно не добавлять или обновить дочернюю строку: ограничение внешнего ключа не выполняется ('fireworks'.'order_instate', CONSTRAINT' order_instate_ibfk_2' FOREIGN KEY ('ip_id') ССЫЛКИ' in_product' ('ip_id') ON UPDATE CASCADE) – user3447733

+0

Он по-прежнему не захватывает ip_id. Что-то я не делаю? Я добавил следующий код в addcart, как вы предложили. – user3447733

Смежные вопросы