How to take to pass the value of an input to the url

Asked

Viewed 1,800 times

1

Good morning to everyone, I’m a beginner in php and I’m setting up a virtual store here in my stage, well it’s next, I can already create the session with the cart and delete it without problems, I’m not able to change the amount that the user informed and he update the cart, follows below the code I use to create the cart

if (isset($_SESSION['carrinho'])){
$_SESSION['carrinho'][base64_decode($_GET['id'])] = $_POST['qtde'];
}else{
     $_SESSION['carrinho'] = array();
     $_SESSION['carrinho'][base64_decode($_GET['id'])] = $_POST['qtde'];
 }

Below is the code of the cart page, I don’t know which way to go

<?php 
include_once './cabecalho.php';
//FAZER BACALHAU PARA MONTAR UMA TABELA COM OS ITENS E TER AS SEGUINTES OPÇÕES:
// =>ALTERAR QUANTIDADE;
// =>EXCLUIR PRODUTO - OK 
// TER UM CAMPO PARA FINALIZAR O PEDIDO
// MONTAR GRID COM OS PRODUTOS - OK
$wLista='';
$wCont=1;
foreach ($_SESSION['carrinho'] as $produto_id => $qtde) {
//AQUI FAZER BACHALHAU PARA PEGAR OS PRODUTOS DO BANCO
$objProduto = new Produtos();
$objProduto->id=$produto_id;
$produto = $objProduto->SelectUm();

$wLista.='<tr>
       <td>'.$wCont.'</td>
       <td><input type="hidden" name="produto_id[]" value="'.$produto_id.'">'.$produto->nome.'</td>
       <td><input type="text" value="'.$qtde.'" name="qtde[]" id="qtde"></td>
       <td>
            <a class="btn btn-primary btn-xs" name="alterar" href="carrinho.php?alterar='.base64_encode($produto_id).'"><i class="fa fa-edit"></i> Atualizar </a>
            <a class="btn btn-danger btn-xs" name="excluir" href="carrinho.php?excluir='.base64_encode($produto_id).'"><i class="fa fa-edit"></i> Excluir </a>
        </td>
     </tr>';
$wCont++;
}
unset($produto);
if ($_GET){
if (isset($_GET['excluir'])){
    $id = intval(base64_decode($_GET['excluir']));
    if(isset($_SESSION['carrinho'][$id])){
        unset($_SESSION['carrinho'][$id]);
        header("Location: carrinho.php");
        exit();
    }
}

if (isset($_GET['alterar'])){
    //PERCORRER OS ITENS DA VARIAVEL SESSION['carrinho']
    //DEPOIS QUE ACHAR O ITEM, ALTERAR A QTDE NA SESSION 
    //E RECARREGAR PÁGINA
    $id = intval(base64_decode($_GET['alterar']));
    foreach ($_SESSION['carrinho'] as $produto_id =>$qtde){
        if ($produto_id===$id){
            $qtde = $_GET['qtde[]'];
            echo '<script>alert("encontrei !!!!!")</script>';
        }   
    }
}
}
if ($_POST){
$wLista='';
foreach ($_SESSION['carrinho'] as $produto_id => $qtde) {
    //AQUI FAZER BACHALHAU PARA PEGAR OS PRODUTOS DO BANCO
    $objProduto = new Produtos();
    $objProduto->id=$produto_id;
    $produto = $objProduto->SelectUm();

$wLista.='<tr>
       <td>'.$wCont.'</td>
       <td><input type="hidden" name="produto_id[]" value="'.$produto_id.'">'.$produto->nome.'</td>
       <td><input type="text" value="'.$qtde.'" name="qtde[]" id="qtde"></td>
       <td>
            <a class="btn btn-primary btn-xs" name="alterar" href="carrinho.php?alterar='.base64_encode($produto_id).'?qtde="><i class="fa fa-edit"></i> Atualizar </a>
            <a class="btn btn-danger btn-xs" name="excluir"  href="carrinho.php?excluir='.base64_encode($produto_id).'"><i class="fa fa-edit"></i> Excluir </a>
        </td>
     </tr>';
$wCont++;
}
unset($produto);
}
?>
<form role="form" action="finalizaCarrinho.php" method="post" >
<div class="section">
  <div class="container">
    <div class="row">
      <div class="col-md-1"></div>
      <div class="col-md-10">
        <table class="table table-bordered table-condensed table-striped">
          <thead>
            <tr>
              <th>Nro Item</th>
              <th>Produto</th>
              <th>Qtde</th>
              <th>Ação</th>
            </tr>
          </thead>
          <tbody>
            <?php echo $wLista;?>
          </tbody>
        </table>
      </div>
      <div class="col-md-1"></div>
    </div>
      <div class="row text-right">
      <div class="col-md-12">
          <input type="submit" value="Finalizar Pedido" class="btn btn-primary">
          <a  href="vitrine.php" class="btn btn-primary">Continuar comprando</a>
      </div>
    </div>
  </div>
</div>
</form>
<?php 
include_once './rodape.php';?>

I can’t get him to update the session with the Qtde that the user informs it in the input, I’m grateful for the help of all.

2 answers

1


The problem is that there is no GET method with the parameter qtde[].

The mistake is:

<a class="btn btn-primary btn-xs" name="alterar" href="carrinho.php?alterar=base?qtde=">

In single line there are several errors, only one ? can be used and the qtde is not qtde[] called in PHP.

Pseudo-Solution:

<a class="btn btn-primary btn-xs" name="alterar" href="carrinho.php?alterar=123456&qtde[]=1">

The & replaced the ? in the second parameter and the name.

Does that solve it? I don’t know!

It is necessary that there is a javascript to take the data from the field qtde[] to be inserted in the URL.

Jquery + HTML to resolve:

<input type="text" value="'.$qtde.'" name="qtde" idproduto="{BASE64}">
<!-- adcionado idproduto e name alterado -->

<a class="btn btn-primary btn-xs" name="alterar" href="carrinho.php?alterar={BASE64}&qtde[]={QUANTIDADE PADRAO}" id="alterar_{BASE64}">
<-- id adicionado com padrão alterar_ -->

<script>

$(document).ready(function() {
  $('input[name=qtde]').change(function() {
  id = $(this).attr(idproduto);
  url = 'carrinho.php?alterar='+id+'&qtde[]='+$(this).val();
  $("#alterar_"+id).attr("href", url);
  });
});

</script>

You’ll need some adaptations and tests.

Idea:

When the input is changed it takes the idproduto (which is equal to the ID of the product! ) and will insert the new URL, with the change of quantity and with the product ID, when you click on the link there will be both attributes.

The ideal is to change all this and make a FORM GET or POST instead of HREF

-2

You can’t use the $_GET when there is the method="post" on your form.

  • In the case is not post, because the GET is embedded in the URL <a href=''></a>

  • 2

    And it’s not true if I make one <form method="POST" action="meu.php?a=10"> the $_GET['a'] will return 10, regardless of the method. I even imagine that you wanted to be specific in the context of the question, but it is good not to leave room for mistakes.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.