Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala galera,
Faço um loop para listar os registros de uma tabela no BD e em cada registro, coloco um campo tipo checkbox para gravar somente os que eu selecionei, olhem abaixo (Meu erro e dúvida está na página que grava os checkbox que eu selecionei... >> está mais abaixo <<)
produtos_lista.php
<?php
$query_rs_emb = "Select * from LF005,LF006 where LF005.cod=LF006.cod and LF005.id_prod='$id_prod' and LF006.id_reg='". $_SESSION["id_reg"] ."'";
$rs_emb = mysql_query($query_rs_emb, $link) or die ("ERRO");
$row_rs_emb = mysql_fetch_assoc($rs_emb);
$totalRows_rs_emb = mysql_num_rows($rs_emb);
?>
<form action="produtos_carrinho_grava?acao=add" method="post">
<input name="nome_prod" type="hidden" id="nome_prod" value="<?=$nome?>">
<table>
<?php do { ?>
<tr>
<td>ID_VALOR</td>
<td>CÓD.</td>
<td><strong>CÓD.BARRAS</td>
</tr>
<tr>
<td><?php echo $row_rs_emb['cod']; ?><input name="cod[]" type="hidden" id="cod[]" value="<?php echo $row_rs_emb['cod']; ?>" /></td>
<td><?php echo $row_rs_emb['codbar']; ?><input name="codbar[]" type="hidden" id="codbar[]" value="<?php echo $row_rs_emb['codbar']; ?" /></td>
<td><input name="id_valor[]" type="text" id="id_valor[]" value="<?php echo $row_rs_emb['id_valor']; ?>" />compre <input name="adicionar[]" type="checkbox" id="adicionar[]" value="<?php echo $row_rs_emb['id_valor']; ?>" /></td>
</tr>
<tr>
<td><hr size="1" /></td>
</tr>
<?php }
while ($row_rs_emb = mysql_fetch_assoc($rs_emb));
?>
</table>
<input name="Comprar" type="submit" value="ADICIONAR AO CARRINHO DE COMPRAS" />
</form>
produtos_carrinho_grava.php
OBS: A tabela que grava esses dados é ID, ID_VALOR, COD, CODBAR
<?
if (isset($_GET['acao'])){
if ($_GET['acao'] == "add"){
@extract($_POST);
$valores = $_POST['adicionar'];
for ($i = 0; $i < count ($valores); $i++){
mysql_query("Insert into LF008 values ('','$valores[$i]')",$link) or die("ERRO");
}
}
}
Do jeito que faço está errado, pq pego somente o $_POST[' adicionar'] que é $id_valor ... e somente grava ele no banco...
**Como monto esse for (count) para gravar os checkbox que eu selecionei mas vindo com todos e não somente o $_POST['adicionar'] e depois coloca-los no INSERT ??? **
Emperrei nessa parte e não saio mais daí.
Quem puder me ajudar, agradeço.
Obrigado
Abraços.
Já vi, mas nunca usei foreach.
Alguém teria um exemplo para como aplicar nesse caso?
Abraços.
Procurei sobre o foreach...
Para um campo, funcionou. Campo ID_VALOR gravou. Mas preciso gravar para os demais. Olhem com um:
if (isset($_GET['acao'])){
if(isset($_POST['adicionar'])){
foreach($_POST["adicionar"] as $valor){
$sql = "insert INTO LF008 (id_valor) Values ('$valor')";
$query = mysql_query($sql,$link);
}
}
}
?>
Alguém poderia me ajudar como enviar outros campos, mas os respectivos resultados pertencentes a cada id???Qdo faço um foreach para o CODBAR, por exemplo; ele pega o dado do primeiro array e não daquele junto que eu selecionei com o "compre".
EXEMPLO:
ID_VALOR | COD | CODBAR
1 | 2 | 847
2 | 5 | 125
3 | 8 | 541
Se seleciono o checkbox da ID_VALOR 2... precisaria gravar junto o COD 5 e o CODBAR 125 (respectvos da ID_VALOR 2)... porém, ele grava COD e CODBAR da ID_VALOR='1'
Alguém saberia resolver isso?
Obrgado.
CONSEGUI!
Fiz de outra maneira.
Não usei o foreach.
No checkbox "compre" coloquei os valores de todos os campos: id_valor, cod, codbar e separei eles com uma barra "/", nagravação uso a função explode para separá-los. Tirei o campo quantidade da página, pois achei melhor colocá-lo só quando estiver no carrinho, em todo caso, a quantidade default é sempre 1.
Segue o código abaixo para caso alguém se interessar:
pagina: produtos (apenas parte do checkbox)
<td>compre
<input name="adicionar[]" type="checkbox" id="adicionar[]"
value="
<?php echo $row_rs_emb['id_valor']; ?><?php echo $row_rs_emb['cod']; ?><?php echo $row_rs_emb['codbar']; ?>" />
</td><?
if (isset($_GET['acao'])){
// AÇÃO - ADICIONA PRODUTOS
if ($_GET['acao'] == "add"){
@extract($_POST);
$valores = $_POST['adicionar'];
// CONTA QUANTOS PRODUTOS FORAM SELECIONADOS
for ($i = 0; $i < count ($valores); $i++){
// SEPARA OS CAMPOS SEPARADOS PELA BARRA "/"
$parte = explode("/", $valores[$i]);
// CONTA QUANTOS CAMPOS SEPARADOS PELA BARRA "/" TEM
for($i_a = 0; $i_a < sizeof($parte); $i_a++){
//echo "";
}
// GRAVA NO BANCO OS ARRAYS VINDOS DA SEPARADA DAS BARRAS "/"
mysql_query("Insert into LF007 values ('','$parte[0]','$parte[1]','$parte[2]')",$link) or die("ERRO");
}
}
}
?>Abraços.
não li tudo mas, creio qu e com foreach seja mais viável