передача входного значения в качестве переменной сеанса

1

У меня есть поле ввода с именем qty значение которого должно быть передано на следующую страницу с именем update_cart для обработки. Я попробовал это с использованием переменных сеанса. Но когда я пытаюсь отправить его через $_Post или $_Get он не работает $_Get образом. Любые предложения, пожалуйста. Код, который я попробовал, приведен ниже:

cart.php

echo "<table class='table table-hover table-responsive table-bordered'>";
echo "<tr>";
echo "<th class='textAlignLeft'>Product Name</th>";
echo "<th>Price (USD)</th>";
echo "<th>Quantity</th>";
echo "<th>Action</th>";
echo "<th>Updated price</th>";
echo "</tr>";
$query = "SELECT * FROM sub_products WHERE sub_p_id IN ({$ids}) ORDER BY name";
$stmt = $con->prepare( $query );
$stmt->execute();

$total_price=0;
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
extract($row);
echo "<tr>";
echo "<td>".$row['name']."</td>";
echo "<td>&#36;".$row['price']."</td>";
echo "<td>";
echo "<input type='number' name='qty' value='' max='10'>";
$_SESSION['qty']=2 ; //here i want to pass value of "qty"
echo "<a href='update_cart.php?id={$id}&name=".$row['name']."&price=".$row['price']."&qty=".$_SESSION['qty']."' class='btn btn-danger'>";
 echo "<span </span> Update Price </a>";
 $total_price+=$price;
  }
echo "<tr>";
echo "<td><b>Total</b></td>";
echo "<td>&#36;{$total_price}</td>";

update_cart.php

session_start();
$id = isset($_GET['id']) ? $_GET['id'] : "";
$name = isset($_GET['name']) ? $_GET['name'] : "";
$qty=$_SESSION['qty'];
$price=isset($_GET['price'])? $_GET['price']: "";
$price=$price*$qty;
echo $qty;
header('Location: cart.php?action=quantity_updated&id=' . $id . '&name=' . $name . '&price='.$price . '&qty='.$qty);
  • 0
    Можете ли вы опубликовать результат update_cart.php?id... из cart.php , пожалуйста? Кроме того, почему вы определяете переменную сеанса, если вы просто отправляете ее по ссылке?
  • 0
    У вас есть session_start (); перед $ _SESSION ['qty'] = 2; в вашем cart.php?
Показать ещё 16 комментариев
Теги:
pdo
session-variables

1 ответ

1
Лучший ответ

Сначала вы начнете получать количество из вашей переменной GET.

$qty = isset($_GET['qty']) ? $_GET['qty'] : 1;
$_SESSION['qty'] = $qty;

Или упрощено:

$_SESSION['qty'] = isset($_GET['qty']) ? $_GET['qty'] : 1;

Вы не можете добавлять значения к переменным без отправки формы, потому что PHP - это серверный язык. Как только страница отображается, PHP работает и не может измениться.

Обновить

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

cart.php

echo "<table class='table table-hover table-responsive table-bordered'>";
echo "<tr>";
echo "<th class='textAlignLeft'>Product Name</th>";
echo "<th>Price (USD)</th>";
echo "<th>Quantity</th>";
echo "<th>Action</th>";
echo "<th>Updated price</th>";
echo "</tr>";
$query = "SELECT * FROM sub_products WHERE sub_p_id IN ({$ids}) ORDER BY name";
$stmt = $con->prepare( $query );
$stmt->execute();

$total_price=0;
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
extract($row);
?>
<tr>
    <form method="POST" action="update_cart.php">
    <td><?= $row['name']; ?></td>
    <td>&#36; <?= $row['price']; ?></td>
    <td>
        <input type='number' name='qty' value='' max='10'>
    </td>
    <td>
        <input type="submit" name="submit" value="Submit">
    </td>
    <input type="hidden" name="id" value="<?= $row['id']; ?>" />
    <input type="hidden" name="name" value="<?= $row['name']; ?>" />
    <input type="hidden" name="price" value="<?= $row['price']; ?>" />
    </form>
</tr>

update_cart.php

Изменить:

$id = isset($_GET['id']) ? $_GET['id'] : "";
$name = isset($_GET['name']) ? $_GET['name'] : "";
$qty=$_SESSION['qty'];
$price=isset($_GET['price'])? $_GET['price']: "";
$price=$price*$qty;

чтобы:

$id = isset($_POST['id']) ? $_POST['id'] : "";
$name = isset($_POST['name']) ? $_POST['name'] : "";
$qty=$_SESSION['qty'];
$price=isset($_POST['price'])? $_POST['price']: "";
$price=$price*$qty;
  • 0
    мне нужно сделать эту работу в update_cart.php ?
  • 0
    @tabia То, как вы пытаетесь использовать сеанс, невозможно. Я отредактирую свой вопрос, чтобы показать вам лучший вариант.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню