Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá Pessoal.
Estou com um problema com PHP.
Eu possuo um carrinho de compras que recebe variáveis num Input Text onde pega a quantidade de itens e também num type=hidden onde pega o código do registro.
Lembrando que os campos Input Text tem o mesmo "name=quantidade" e o "type=hidden" tb possui o mesmo "name=cod_temp"
No meu código em ASP eu recebo os valores separados por vírgula, e no PHP não quer funcionar como deveria.
Exemplo em ASP:
quantidade = request.form("quantidade")
cod_temp = request.form("cod_temp")
response.write quantidade
response.write "<br>"
response.write cod_temp
O Resultado em ASP em tela.
3, 5, 5 = quantidades
728038, 728037, 728036 = Código dos produtos
Já no PHP só está passando o valor do último registros, exemplo:
$quantidade = $_POST['quantidade'];
$cod_temp = $_POST['cod_temp'];
echo $quantidade;
echo "<br>";
echo $cod_temp;
Resultado:
5 = quantidades
728036 = Código do produto
Por que será que pelo PHP não pega os valores por completo com todos entre as virgulas?
Assim não consigo atualizar como deveria, pois só aparece o resultado da ultima linha.
Se alguém souber, agradeço.
Obrigado!Olá Amigo. Funcionou. Obrigado
Agora preciso gravar no Banco, estou usando PDO no PHP.
Preciso de uma rotina que faça a contagem dos valores separador por virgula e um Loop né?
No ASP fica assim:
'Inicia atualização
'Pega o valor do cod_temp e separa as virgulas
cod_temp = split(cod_temp,",")
'Conta quantos valores foram separados pela virtula
max = ubound(cod_temp)
'Pega o valor da quantidade e separa pelas virgulas
nova_quantidade = split(quantidade ,",")
' Faz um LOOP enquanto o valor de i não for igual a quantidade dos valores separados das virgulas no max
for i = 0 to max
'Enquanto o cod_temp for direfrente de branco, ele se atualiza
'if trim(cod_temp(i)) <> "" then
SQL_new = "UPDATE loja_virtual SET quantidade_temp = "& trim(nova_quantidade(i)) &" where cod_temp = "& trim(cod_temp(i)) &" "
db.Execute(SQL_new)Por acaso você tem algo pronto por ai em PHP?
Obrigado!
Você precisa fazer algo assim:
foreach ( $_POST[ 'quantidade' ] as $i => $valor ) {
//logica para UPDATE... $i é a chave do array, $valor é a qtd de cada item iterado
}Obrigado a ajuda, deu certo. Segue o resultado.
foreach (array_combine($quantidade, $cod_temp) as $value1 => $value2 ) {
$atualiza_carrinho=$pdo->prepare("UPDATE loja_virtual SET quantidade_temp=:nova_quantidade where cod_temp=:cod_temp");
$atualiza_carrinho->bindValue(":nova_quantidade",$value1);
$atualiza_carrinho->bindValue(":cod_temp",$value2);
$atualiza_carrinho->execute();
}
Obrigado!
Como você está enviando mais de um campo, você precisa definir que ele é um array e recebê-lo como tal no PHP.
1 - Primeiro você acrescenta em todos os "name" repetidos do seu formulário isso: "[]". Exemplo: