Carlos Rocha
Membros-
Total de itens
1.300 -
Registro em
-
Última visita
Tudo que Carlos Rocha postou
-
Pessoal. Tenho uma lista de produtos paginada. Em cada linha que exibe os produtos, tem lá um input para que o usuario possa digitar a quantidade daquele produto que ele quer. Esse form paginado, pemite ao usuario, navegar entre as paginas e depois, clikar no botão submit e enviar os dados dos produtos que tiveram suas quantidades alteradas do padrão 0 para qualquer valor. O problema é que, estando na primeira pagina e o usuario altera o produto 1, por exemplo de 0 para 5 unidades, dai ele troca de pagina e altera naquela a quantidade de um outro produto. Quando o usuario volta na pagina 1, ele perde quantidade que ele digitou no produto que ele escolheu na pagina 1. Como faço para guardar isso? Tentei com sesões mas não tive sorte. <? if ($acao== "mostra_produtos"){ $sql = mysql_query(" select pl.id_lista, p.foto, pl.id_produto, p.nome, f.nome, f.razaosocial, g.nome, p.quantidadecaixa, p.preço from produtos_lista pl inner join produtos p on pl.id_produto = p.id inner join fornecedores f on f.id = p.fornecedor inner join grupos g on p.grupo = g.id_grupo where pl.data_fim >= CURRENT_DATE order by pl.id_lista desc, f.nome, f.razaosocial, p.nome "); $total = mysql_num_rows($sql); // Esta função irá retornar o total de linhas na tabela $lpp = 2; // Especifique quantos resultados você quer por página $paginas = ceil($total / $lpp); // Retorna o total de páginas if(!isset($pagina)) { $pagina = 0; } // Especifica uma valor para variavel pagina caso a mesma não esteja setada $inicio = $pagina * $lpp; // Retorna qual será a primeira linha a ser mostrada no MySQL $sql = mysql_query(" select pl.id_lista, p.foto, pl.id_produto, p.nome, f.nome, f.razaosocial, g.nome, p.quantidadecaixa, p.preço from produtos_lista pl inner join produtos p on pl.id_produto = p.id inner join fornecedores f on f.id = p.fornecedor inner join grupos g on p.grupo = g.id_grupo where pl.data_fim >= CURRENT_DATE order by pl.id_lista desc, f.nome, f.razaosocial, p.nome LIMIT $inicio, $lpp "); if ($total == "0") { echo "<table border=1 width=800 align=center> <tr><td colspan=11 align=center><h3>Ainda não há produtos cadastrados</h3></td></tr> </table>"; } else{ echo "<table border=1 width=800 align=center> <tr><td colspan=11 align=center><h3>Produtos</h3></td></tr> <tr> <td align=center>Lista</td> <td align=center>Foto</td> <td align=center>Produto</td> <td align=center>Fornecedor</td> <td align=center>Grupo</td> <td align=center>Descrição</td> <td align=center>Qtde. caixa</td> <td align=center>Preço</td> <td align=center>Quantidade</td> <td align=center>Sub Total</td> <td align=center>Adicionar</td> </tr> <form action=\"carrinho.php?op=adicionar\" method=\"post\" name=\"envia_tudo\"> "; $i = 0; while(list($id_lista, $foto, $id_produto, $nome_produto, $nome_fornece, $razao_fornece, $nome_grupo, $quantidadecaixa, $preço) = mysql_fetch_row($sql)){ $quant{$i}[quant] = $_POST["{$i}[quant]"]; session_register("$quant{$i}[quant]"); echo "<input type=\"hidden\" name=\"{$i}[id_prod]\" id=\"{$i}[id_prod]\" value=\"$id_produto\"> <input type=\"hidden\" name=\"{$i}[quan]\" id=\"{$i}[quan]\" value=\"\"> <input type=\"hidden\" name=\"{$i}[id_lista]\" value=\"$id_lista\"> "; include("../global/funcoes_php/foto_ver.php"); $icone = "<img border=0 src='../img/saiba_mais.png' alt='Saiba Mais'>"; echo "<tr> <td align=center>$id_lista</td> <td align=center>$foto2</td> <td align=let>$nome_produto</td> <td align=let>$nome_fornece$razao_fornece</td> <td align=let>$nome_grupo</td> <td align=\"center\" valign=\"middle\"> <a href=\"?acao=saibamais&id_prod=$id_produto&&id_da_lista=$id_lista\">Saiba Mais</a> </td> <td align=center>$quantidadecaixa</td> <td align=right>R$ $preço</td> <td align=right> <input type=text id={$i}[quant] value=\"".$quant{$i}[quant]."\" size=2 style=\"text-align: center;\" onKeyPress=\"BloqueiaLetras();\" onchange=\"calculo(this.value, $preço,'{$i}[quant]','{$i}[quan]','{$i}[label_preco]');\" > </td> <td align=right>R$ <label id=\"{$i}[label_preco]\">0.00</label></td> <td align=center valign=\"middle\"> <a href=\"#\" onclick=\"this.href=' carrinho.php?op=adicionar&id_produto=$id_produto&id_da_lista=$id_lista&quantidade='+document.getElementById('{$i}[quant]').value\" > Enviar </a> </td> </tr>"; $i++; } if($pagina > 0) { $menos = $pagina - 1; $url = "$PHP_SELF?acao=mostra_produtos&pagina=$menos"; echo "<a href=".$url.">Anterior</a>"; // Vai para a página anterior } for($i=0;$i<$paginas;$i++) { // Gera um loop com o link para as páginas $url = "$PHP_SELF?acao=mostra_produtos&pagina=$i"; echo " | <a href=".$url.">$i</a>"; } if($pagina < ($paginas - 1)) { $mais = $pagina + 1; $url = "$PHP_SELF?acao=mostra_produtos&pagina=$mais"; echo " | <a href=".$url.">Próxima</a>"; } echo " <tr> <td align=center valign=\"middle\" colspan=11 height=50> <input type=\"submit\" value=\"Enviar todos os ítens\"> </form> </td> </tr> "; echo "</table>"; } } ?>
-
já achei. Era só trocar o menor for( $i = 0; $i < count( $dados ); $i++ ) por menor/igual for( $i = 0; $i <= count( $dados ); $i++ ) Ficando assim: for( $i = 0; $i <= count( $dados ); $i++ ) { if( !empty( $dados[ $i ] [ 'id_prod' ] ) ) { $Query = sprintf( 'SELECT id FROM produtos WHERE id = %d', $dados[ $i ] [ 'id_prod' ] ); $R_Query = $MySQL->query( $Query ); if( mysql_num_rows( $R_Query ) > 0 ) { $MeuCarrinho->AdicionarItem( $dados[ $i ] [ 'id_prod' ], $dados[ $i ] [ 'quan' ] , $dados[ $i ] [ 'id_lista' ] ); } } } Valeu
-
Observei que, se eu fizer assim: $dados= filtrar_array_por_valor($_POST, 'quan', 1); print_r($dados); Chamando a funçao <? function filtrar_array_por_valor($array, $index, $value) { if(is_array($array) && count($array) > 0) { foreach(array_keys($array) as $key) { $temp[$key] = $array[$key][$index]; if ($temp[$key] >= $value) { $newarray[$key] = $array[$key]; } } } return $newarray; } ?> Terei o que eu preciso e adaptando o código à variavel $dados. O que antes colocava no carrinho todos os ítens inclkusive os com 0 unidades, agora, embrora a matriz esteja retonando mais de um ítem, ele só esta colocando 1. Porque será? Veja a adptaçao Antes for( $i = 0; $i < count( $_POST ); $i++ ) { if( !empty( $_POST[ $i ] [ 'id_prod' ] ) ) { $Query = sprintf( 'SELECT id FROM produtos WHERE id = %d', $_POST[ $i ] [ 'id_prod' ] ); $R_Query = $MySQL->query( $Query ); if( mysql_num_rows( $R_Query ) > 0 ) { $MeuCarrinho->AdicionarItem( $_POST[ $i ] [ 'id_prod' ], $_POST[ $i ] [ 'quan' ] , $_POST[ $i ] [ 'id_lista' ] ); } } } Depois for( $i = 0; $i < count( $dados ); $i++ ) { if( !empty( $dados[ $i ] [ 'id_prod' ] ) ) { $Query = sprintf( 'SELECT id FROM produtos WHERE id = %d', $dados[ $i ] [ 'id_prod' ] ); $R_Query = $MySQL->query( $Query ); if( mysql_num_rows( $R_Query ) > 0 ) { $MeuCarrinho->AdicionarItem( $dados[ $i ] [ 'id_prod' ], $dados[ $i ] [ 'quan' ] , $dados[ $i ] [ 'id_lista' ] ); } } }
-
Ola pessoal. Tenho seguinte array Array ( [0] => Array ( [id_prod] => 1 [quan] => 1 [id_lista] => 13 ) [1] => Array ( [id_prod] => 2 [quan] => 2 [id_lista] => 11 ) [2] => Array ( [id_prod] => 4 [quan] => 3 [id_lista] => 9 ) [3] => Array ( [id_prod] => 3 [quan] => 4 [id_lista] => 2 ) ) Como posso filtrar para saber qual array veio com [quan] maior que 0(zero)? A ideia aqui é fazer filtro de carrinho de compras onde o cliente pode lançar todos os produtos de uma só vez e em um só botão. Porem, só me interessa, aquele produto que sua quanrtidade for maior que 0. É para adptar a esse código; for( $i = 0; $i < count( $_POST ); $i++ ) { if( !empty( $_POST[ $i ] [ 'id_prod' ] ) ) { $Query = sprintf( 'SELECT id FROM produtos WHERE id = %d', $_POST[ $i ] [ 'id_prod' ] ); $R_Query = $MySQL->query( $Query ); if( mysql_num_rows( $R_Query ) > 0 ) { $MeuCarrinho->AdicionarItem( $_POST[ $i ] [ 'id_prod' ], $_POST[ $i ] [ 'quan' ] , $_POST[ $i ] [ 'id_lista' ] ); } } } Como posso fazer isso?
-
Ae doutor. Sem usa funçoes: <a href=\"#\" onclick=\"this.href=' carrinho.php?op=adicionar&id_prod=$id_produto&lista=$id_lista&quantidade='+document.getElementById('quant[$id_produto]').value\" > Enviar </a> Valeu pela força
-
Bom crieu um arquivo com este teu script e puz ele no disco d: Mas, veja o que acontece quando cliko no adicionar: D:\java script:;
-
Ainda não entendi. E o resto da url? entra onde? tentei assim e não deu: <td align=center valign=\"middle\"> <a href=\"java script:;\" onclick=\"retorna_valor('quant[$id_produto]',$id_produto, $id_lista)\">Adicionar</a> </td> </tr>"; } echo " <tr> <td align=center valign=\"middle\" colspan=11 height=50> <input type=\"submit\" value=\"Enviar todos os ítens\"> </form> </td> </tr> "; echo "</table>"; } ?> <script> function retorna_valor(campo, id, lista) { var url= "carrinho.php?op=adicionar&id_prod=+id+&lista=+lista+&quantidade="; var campo2=document.getElementById(campo).value; window.location=url+campo2; } </script> tentei tambem assim e não deu: <a href=\"<script>onclick=retorna_valor('quant[$id_produto]',$id_produto,$id_lista);</script>\">Adicionar</a> </td> </tr>"; } echo " <tr> <td align=center valign=\"middle\" colspan=11 height=50> <input type=\"submit\" value=\"Enviar todos os ítens\"> </form> </td> </tr> "; echo "</table>"; } ?> <script> function retorna_valor(campo, id, lista) { var url= "carrinho.php?op=adicionar&id_prod=+id+&lista=+lista+&quantidade="; var campo2=document.getElementById(campo).value; window.location=url+campo2; } </script>
-
Olha só o que eu fiz e não deu certo: <a href=\"carrinho.php?op=adicionar&id_prod=$id_produto&quantidade=java script:retorna_valor('quant[$id_produto]')&lista=$lista\">Adicionar</a> Eis a a função js <script> function retorna_valor(campo) { var campo2=document.getElementById(campo).value; return campo2; } </script>
-
É, você esta certo. Mas, então, me diz ai: Como posso fazer para, o clickar em um href, um de seus parametros pegar o valor que esta em um outro campo do form? Tipo form input text name=quantidade <a href='?acao=enivar&quantidade= aqui vai o valor que esta digitado no campo quantidade '>Enviar</a> input submit /form Como faz isso?
-
púxa, sera que terei que usar href no lugar de form?
-
Boa Noite Pessoal. Fui tentar fazer isso aqui. Mas, mexendo mexendo, entrei numa situação dificilima que não faço a menoe ideia de como resolver. Para isso, venho pedir a ajuda de vocês: Tenho uma listagem de produtos para fazer carrinho de compras: formwhile{lista | foto | produto | fornecedor | grupo | descriçao | itens na caixa | preço | quantidade | subtotal | adicionar}Botão Submitform Isso é um produto por linha. Esse form tem um botão submit que vai enviar todos os produtos que, no input do item quantidade, o cliente alterou de 0 (padrão) para outro valor, e só os produtos que foram alterados Outro problema é que, no input da descrição, tem um form com um submit indicando o id do produto da linha. Esse form irá abrir uma action para exibir os dados desse produto. No campo adicionar, tem um form com um submit indicando o id do produto da linha e a quantidade digitada no input quantidade. Esse form irá abrir uma action com a finalidade de enviar apenas este produto para o carrinho. Existe tambem o problema de um form dentro do outro. Já não sei mais oque fazer. estou todo perdido.
-
Em parte eu consegui. Porem, agora, esta acontecendo erro de retorno. Tenho a funçao que adiciona os itens ao carrinho if (!empty($op)){ switch ($op) { case "adicionar": foreach($_POST['id_prod'] as $numero=>$arquivo) { if (!empty($arquivo)){ $Query = "select id from produtos where id = $arquivo"; $R_Query = $MySQL->query($Query); if (mysql_num_rows($R_Query)>0) { $MeuCarrinho->AdicionarItem($arquivo,1,$id_lista); } } } break; ... function AdicionarItem($codigo,$quantidade,$lista) { //Inicializando parametro $posicao = -1; $achou = $this->ObtemPosicao($codigo,$posicao); if (!$achou){ $this->item_codigo[] = $codigo; $this->item_quantidade[] = $quantidade; $this->item_lista[] = $lista; } } /* AdicionarItem() */ Esta funcionando normal, mas aqui $MeuCarrinho->AdicionarItem($arquivo,1,$id_lista); Gravo alem da quantidade 1, o numero da lista em cada produto e uso a função que vai atualizar(e mostrar) no carrinho o numero da lista para cada item. function ObtemListaItem($codigo){ $posicao = -1; $achou = $this->ObtemPosicao($codigo,$posicao); if ($achou) { return $this->item_lista[$posicao]; }else{ return "erro ao obter a lista do item"; } function ObtemPosicao($codigo,&$posicao){ //Percorrendo o vetor for($i=0;$i<count($this->item_codigo);$i++) { if ($this->item_codigo[$i] == $codigo) { $posicao = $i; return TRUE; } } }/* ObtemPosicao() */ No carrinho, estou recebendo o valor da lista assim: echo " <tr> <td align='center'>".$MeuCarrinho->ObtemListaItem($id)."</td> ... Acontece, que em vez de vir o valor da lista como acontece com a item quantidade, aparece o numero 3 Onde será que esta o erro?
-
Em parte eu consegui. Porem, agora, esta acontecendo erro de retorno. Tenho a funçao que adiciona os itens ao carrinho if (!empty($op)){ switch ($op) { case "adicionar": foreach($_POST['id_prod'] as $numero=>$arquivo) { if (!empty($arquivo)){ $Query = "select id from produtos where id = $arquivo"; $R_Query = $MySQL->query($Query); if (mysql_num_rows($R_Query)>0) { $MeuCarrinho->AdicionarItem($arquivo,1,$id_lista); } } } break; ... function AdicionarItem($codigo,$quantidade,$lista) { //Inicializando parametro $posicao = -1; $achou = $this->ObtemPosicao($codigo,$posicao); if (!$achou){ $this->item_codigo[] = $codigo; $this->item_quantidade[] = $quantidade; $this->item_lista[] = $lista; } } /* AdicionarItem() */ Esta funcionando normal, mas aqui $MeuCarrinho->AdicionarItem($arquivo,1,$id_lista); Gravo alem da quantidade 1, o numero da lista em cada produto e uso a função que vai atualizar(e mostrar) no carrinho o numero da lista para cada item. function ObtemListaItem($codigo){ $posicao = -1; $achou = $this->ObtemPosicao($codigo,$posicao); if ($achou) { return $this->item_lista[$posicao]; }else{ return "erro ao obter a lista do item"; } function ObtemPosicao($codigo,&$posicao){ //Percorrendo o vetor for($i=0;$i<count($this->item_codigo);$i++) { if ($this->item_codigo[$i] == $codigo) { $posicao = $i; return TRUE; } } }/* ObtemPosicao() */ No carrinho, estou recebendo o valor da lista assim: echo " <tr> <td align='center'>".$MeuCarrinho->ObtemListaItem($id)."</td> ... Acontece, que em vez de vir o valor da lista como acontece com a item quantidade, aparece o numero 3 Onde será que esta o erro?
-
Pessoal. Tenho um carrinho de compras simples. Gostaria de colocar um botão para adicionar uma unidade de todos os produtos de uma só vez no carrinho. CVomo eu faço? carrinho.php <?php //Verificando se a variavel de sessão foi criada if (!session_is_registered("MeuCarrinho")){ session_register("MeuCarrinho"); $MeuCarrinho = new TCarrinho(); $_SESSION[MeuCarrinho] = serialize($MeuCarrinho); $MeuCarrinho = unserialize($_SESSION[MeuCarrinho]); } $_SESSION[MeuCarrinho] = serialize($MeuCarrinho); $MeuCarrinho = unserialize($_SESSION[MeuCarrinho]); if (!empty($op)){ switch ($op) { case "adicionar": if (!empty($id_prod)){ $Query = "select id from produtos where id = $id_prod"; $R_Query = $MySQL->query($Query); if (mysql_num_rows($R_Query)>0) { foreach($_POST['quan'] as $numero=>$arquivo) { $MeuCarrinho->AdicionarItem($id_prod,$arquivo,$id_lista); } } } break; case "excluir": $MeuCarrinho->RemoverItem($id_prod); break; case "atualizar": $MeuCarrinho->AtualizarCarrinho($_POST); break; case "finalizar": if ($MeuCarrinho->QuantosItens()>0) { echo "<script>document.location='CarrinhoFinal.php?acao=gravar_pedido&preco_total=$preco_total'</script>"; } break; } } if ($MeuCarrinho->QuantosItens()==0) { echo "<table align='center'> <tr><td align=center><p><p><h2>Lista Vazia</h2><p><p></td></tr> <tr><td align=center><p><p><a href=pedidos_fazer.php?acao=mostra_produtos><h2>Mostar Produtos</h2></a><p><p></td></tr> </table>"; } else { $QuerySQL = " select p.id, p.foto, p.nome, p.preço, p.quantidadecaixa, p.grupo, g.nome, p.fornecedor from produtos p inner join grupos g on p.grupo = g.id_grupo " . $MeuCarrinho->QuerySQL_ObtemListaDeItens(). ""; $Resultado = $MySQL->query($QuerySQL); ?> <form method="post" action="carrinho.php?op=atualizar"> <table BORDER=0 CELLSPACING=2 CELLPADDING=4 WIDTH="95%" align="center"> <tr BGCOLOR="#0080C0"><td align="center" colspan="9"><b><font color="#FFFFFF">Pedido</font></b></td></tr> <tr BGCOLOR="#004080"> <td align="center"><b><font color="#FFFF99">Lista</font></b></td> <td align="center"><b><font color="#FFFF99">Foto</font></b></td> <td align="center"><b><font color="#FFFF99">Produto</font></b></td> <td align="center"><b><font color="#FFFF99">Grupo</font></b></td> <td align="center"><b><font color="#FFFF99">QTD na Caixa</font></b></td> <td align="center"><b><font color="#FFFF99">PREÇO UNITÁRIO</font></b></td> <td align="center"><b><font color="#FFFF99">Quantidade</font></b></td> <td align="center"><b><font color="#FFFF99">TOTAL</font></b></td> <td align="center"> </td> </tr> <? $preco_total = 0.00; while(list($id, $foto, $nome, $preço, $quantidadecaixa, $grupo, $nome_grupo, $fornecedor) = mysql_fetch_row($Resultado)) { //Computando preço total $preco_total = $preco_total + $MeuCarrinho->ObtemSubTotalDeUmItem($id,$preço); session_register("preco_total"); include("../global/funcoes_php/foto_ver.php"); echo " <tr> <td align='center'>".$MeuCarrinho->ObtemListaItem($id)."</td> <td align='center'><font size=-1>". $foto2 ."</font></td> <td align='left'><font size=-1>". $nome ."</font></td> <td align='left'><font size=-1>". $nome_grupo ."</font></td> <td align='center'><font size=-1>". $quantidadecaixa ."</font></td> <td align='center'>R$ ". number_format($preço, 2, '.', '')." </td> <td align='center'><font size=-1><input type=TEXT name=". $id ." size=2 value=". $MeuCarrinho->ObtemQuantidadeItem($id) ."></font></td> <td align='center'>R$ ". number_format($MeuCarrinho->ObtemSubTotalDeUmItem($id,$preço), 2, '.', '') ."</td> <td align='center'><b><a href=carrinho.php?op=excluir&id_prod=$id&id_fornece=$fornecedor>Excluir</a></b></td> </tr> "; } ?> <tr><td align="center" colspan="9"> <font color="#FF0000"><b>VALOR TOTAL DO PEDIDO R$ <?=number_format($preco_total, 2, '.', '');?></b></font></td> </tr> <tr><td align="center" colspan="9"> <input type="hidden" name="id_prod" value="<?=$id_produto;?>"> <input type="hidden" name="id_fornece" value="<?=$id_fornece;?>"> <input type="hidden" name="id_lista" value="<?=$id_lista;?>"> <input type="submit" value="Atualizar" name="Atualizar" WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)"><br> </td> </tr> </table> </form> <table align="center" width="800"> <tr> <td align="right"> <form method="post" action="pedidos_fazer.php?acao=mostra_produtos"> <input type="hidden" name="id_prod" value="<?=$id_produto;?>"> <input type="hidden" name="id_fornece" value="<?=$id_fornece;?>"> <input type="hidden" name="id_lista" value="<?=$id_lista;?>"> <input type="submit" value="<< Voltar as Compras" name="voltar" WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)"> </form> </td> <td align="left"> <form method="post" action="carrinho.php?op=finalizar" name='FORM'> <input type="hidden" name="id_lista" value="<?=$id_lista;?>"> <input type="hidden" name="preco_total" value="<?=number_format($preco_total, 2, '.', ''); ?>"> <input type="submit" value="Finalizar Compra >>" name="Finalizar" WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)"> </form> </td> </tr> </table> <? } ?> TCarrinho.php <?php /* Classe TCarrinho */ class TCarrinho { var $item_codigo = array(); var $item_quantidade = array(); var $item_lista = array(); /* ObtemPosicao Este metodo obtem a posicao de um item mediante ao seu codigo, retornando um valor booleano e gravando a posicao na variavel de referencia $posicao, caso o codigo do item esteja no carrinho. */ function ObtemPosicao($codigo,&$posicao){ //Percorrendo o vetor for($i=0;$i<count($this->item_codigo);$i++) { if ($this->item_codigo[$i] == $codigo) { $posicao = $i; return TRUE; } } }/* ObtemPosicao() */ /* ObtemPreco Este metodo obtem o preço por unidade do produto tendo em mãos o codigo dele. */ function ObtemPreco($codigo){ $Sql = mysql_query("select preço from produtos where id = $codigo"); list($preco_uni) = mysql_fetch_row($Sql); return $preco_uni; //return mysql_result($sql,0,0); }/* ObtemPreco() * /* AdicinarItem Este metodo adiciona um item no carrinho */ function AdicionarItem($codigo,$quantidade,$lista) { //Inicializando parametro $posicao = -1; $achou = $this->ObtemPosicao($codigo,$posicao); if (!$achou){ $this->item_codigo[] = $codigo; $this->item_quantidade[] = $quantidade; $this->item_lista[] = $lista; } } /* AdicionarItem() */ /* RemoverItem Este metodo remove um item do carrinho de compra, passando o codigo do produto */ function RemoverItem($codigo) { //Inicializando parametro $posicao = -1; $achou = $this->ObtemPosicao($codigo,$posicao); if ($achou){ //Removendo o elemento do vetor array_splice($this->item_codigo, $posicao, 1); array_splice($this->item_quantidade, $posicao, 1); } } /* RemoveItem() */ /* QuantosItens Este metodo retorna a quantidade de itens incluidas no carrinho de compras */ function QuantosItens() { return count($this->item_quantidade); } /* QuantosItens() */ /* ExcluirTodosItens Este metodo retira todos os itens contidos no carrinho de compras */ function ExcluirTodosItens(){ $this->item_quantidade = null; $this->item_codigo = null; } /* ExcluirTodosItens() */ /* QuerySQL_ObtemListaDeItens Este metodo gera uma parte do codigo SQL que sera usado para buscar os dados do carrinho de compra (id, NOME e PREÇO). O comando SQL final tera como finalidade de buscar no banco de dados apenas os dados dos itens incluidos no carrinho. */ function QuerySQL_ObtemListaDeItens(){ $itens = "where "; $STR = ""; if ($this->QuantosItens()>0) { $fixo = " id ="; for ($i=0;$i<$this->QuantosItens();$i++){ $STR = $STR . $fixo . " " . $this->item_codigo[$i]; if ($i+1<$this->QuantosItens()) { $STR = $STR . " or "; } } } if (!$STR == "") { return $itens . $STR; }else{ //Caso não exista nenhum item no carrinho o codigo final SQL, procurara por um item que não existe na tabela de produtos, neste caso -1. return "where id = -1"; } } /* QuerySQL_ObtemListaDeItens() */ /* ObtemNovoPrecoItem Este metodo obtem o novo preço do ítem baseado no preço calculado antes do carrinho */ function ObtemListaItem($codigo){ $posicao = -1; $achou = $this->ObtemPosicao($codigo,$posicao); if ($achou) { return $this->item_lista[$posicao]; }else{ return "erro ao obter Novo Preço do item"; } } /* ObtemNovoPrecoItem() */ /* ObtemQuantidadeItem Este metodo obtem a quantidade de um Item */ function ObtemQuantidadeItem($codigo){ $posicao = -1; $achou = $this->ObtemPosicao($codigo,$posicao); if ($achou) { return $this->item_quantidade[$posicao]; }else{ return "erro ao obter quantidade do item"; } } /* ObtemQuantidaItem() */ /* ObtemSubTotalDeUmItem Este metodo retorna o subtotal de um item (QUANTIDADE * VALOR UNITARIO) */ function ObtemSubTotalDeUmItem($id,$preço){ $posicao = -1; $achou = $this->ObtemPosicao($id,$posicao); if ($achou) { return ($this->item_quantidade[$posicao]*$preço); }else{ return "erro ao obter sub total do item"; } } /* ObtemSubTotalDeUmItem() */ /* AtualizarCarrinho Este metodo coleta todos as variaveis enviadas pelo FORMULARO (method="POST") e atualiza as quantidades dos itens. */ function AtualizarCarrinho(&$VAR_ENVIADAS_PELO_BROWSER){ //Percorrendo a lista de itens e atualizando suas quantidades for ($i=0;$i<$this->QuantosItens();$i++){ $this->item_quantidade[$i] = $VAR_ENVIADAS_PELO_BROWSER[$this->item_codigo[$i]]; } } /* AtualizarCarrinho() */ } /* Classe TCarrinho */ ?>
-
Bom, fiz um foreach no array e deu certo mas não sei se é seguro fazer assim. Já no carrinho, com o array já enviado. fiz assim: if (!empty($op)){ switch ($op) { case "adicionar": if (!empty($id_prod)){ $Query = "select id from produtos where id = $id_prod"; $R_Query = $MySQL->query($Query); if (mysql_num_rows($R_Query)>0) { foreach($_POST['quan'] as $numero=>$arquivo) { $MeuCarrinho->AdicionarItem($id_prod,$arquivo,$id_lista); } } } ..........
-
Ola pessoal. Tenho um loop no meu script que gera o form a cada laço. Acontece, que os campos do form, para serem validades, estou atribuindo a eles, names em arrays: <input type=\"hidden\" name=\"quan[$id_produto]\" id=\"quan[$id_produto]\" value=\"\"> Acontece, que, quando submeto o form, chega la no destino um array. Porem, só chega um índice dessa array. Eu estou querendo saber, qual indice foi submetido. e qual o seu valor. Sei que se eu fizer o print_r(); terei ela, mas saber qual o indice dela que veio via código, não estou sabendo fazer
-
calendario js no ie e chrome
pergunta respondeu ao Carlos Rocha de Carlos Rocha em Ajax, JavaScript, XML, DOM
Pessoal. Ainda não consegui resolver. alguém pode me ajudar nessa? -
Ola pessoal. Boa noite. Tenho um script d eum calendario que peguei na internet que esta tendo dois problemas que já rachei a cabeça para entender e não consegui achar o erro. 1) No internet explorer, quando escolho qualquer data menor 10, ele adiciona um 0 antes do numero e faz, por exemplo, 09. Porem, quanda a data é a data do dia, ele não esta adicionando o 0. Daí, o script barra o prosseguimento do mesmo. 2) No chrome, aontece o seguinte. O script tem um validador para verificar se a data é maior ou menor que a data atual. Se menor que a data atual, ele barra a execução. Se a data foer posterior le deverá prosseguir com o screip. Porem, no chrome, qualquer data esta dando que é maior que a data do dia. Calendario.js // construindo o calendário function popdate(obj,div,tam,ddd) { if (ddd) { day = "" mmonth = "" ano = "" c = 1 char = "" for (s=0;s<parseInt(ddd.length);s++) { char = ddd.substr(s,1) if (char == "/") { c++; s++; char = ddd.substr(s,1); } if (c==1) day += char if (c==2) mmonth += char if (c==3) ano += char } ddd = mmonth + "/" + day + "/" + ano } if(!ddd) {today = new Date()} else {today = new Date(ddd)} date_Form = eval (obj) if (date_Form.value == "") { date_Form = new Date()} else {date_Form = new Date(date_Form.value)} ano = today.getFullYear(); mmonth = today.getMonth (); day = today.toString ().substr (8,2) umonth = new Array ("Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro") days_Feb = (!(ano % 4) ? 29 : 28) days = new Array (31, days_Feb, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) if ((mmonth < 0) || (mmonth > 11)) alert(mmonth) if ((mmonth - 1) == -1) {month_prior = 11; year_prior = ano - 1} else {month_prior = mmonth - 1; year_prior = ano} if ((mmonth + 1) == 12) {month_next = 0; year_next = ano + 1} else {month_next = mmonth + 1; year_next = ano} txt = "<table bgcolor='#efefff' style='border:solid #330099; border-width:2' cellspacing='0' cellpadding='3' border='0' width='"+tam+"' height='"+tam*1.1 +"'>" txt += "<tr bgcolor='#FFFFFF'><td colspan='7' align='center'><table border='0' cellpadding='0' width='100%' bgcolor='#FFFFFF'><tr>" txt += "<td width=20% align=center><a href=java script:popdate('"+obj+"','"+div+"','"+tam+"','"+((mmonth+1).toString() +"/01/"+(ano-1).toString())+"') class='Cabecalho_Calendario' title='Ano Anterior'><<</a></td>" txt += "<td width=20% align=center><a href=java script:popdate('"+obj+"','"+div+"','"+tam+"','"+( "01/" + (month_prior+1).toString() + "/" + year_prior.toString())+"') class='Cabecalho_Calendario' title='Mês Anterior'><</a></td>" txt += "<td width=20% align=center><a href=java script:popdate('"+obj+"','"+div+"','"+tam+"','"+( "01/" + (month_next+1).toString() + "/" + year_next.toString())+"') class='Cabecalho_Calendario' title='Próximo Mês'>></a></td>" txt += "<td width=20% align=center><a href=java script:popdate('"+obj+"','"+div+"','"+tam+"','"+((mmonth+1).toString() +"/01/"+(ano+1).toString())+"') class='Cabecalho_Calendario' title='Próximo Ano'>>></a></td>" txt += "<td width=20% align=right><a href=java script:force_close('"+div+"') class='Cabecalho_Calendario' title='Fechar Calendário'><b>X</b></a></td></tr></table></td></tr>" txt += "<tr><td colspan='7' align='right' bgcolor='#ccccff' class='mes'><a href=java script:pop_year('"+obj+"','"+div+"','"+tam+"','" + (mmonth+1) + "') class='mes'>" + ano.toString() + "</a>" txt += " <a href=java script:pop_month('"+obj+"','"+div+"','"+tam+"','" + ano + "') class='mes'>" + umonth[mmonth] + "</a> <div id='popd' style='position:absolute'></div></td></tr>" txt += "<tr bgcolor='#330099'><td width='14%' class='dia' align=center><b>Dom</b></td><td width='14%' class='dia' align=center><b>Seg</b></td><td width='14%' class='dia' align=center><b>Ter</b></td><td width='14%' class='dia' align=center><b>Qua</b></td><td width='14%' class='dia' align=center><b>Qui</b></td><td width='14%' class='dia' align=center><b>Sex<b></td><td width='14%' class='dia' align=center><b>Sab</b></td></tr>" today1 = new Date((mmonth+1).toString() +"/01/"+ano.toString()); diainicio = today1.getDay () + 1; week = d = 1 start = false; for (n=1;n<= 42;n++) { if (week == 1) txt += "<tr bgcolor='#efefff' align=center>" if (week==diainicio) {start = true} if (d > days[mmonth]) {start=false} if (start) { dat = new Date((mmonth+1).toString() + "/" + d + "/" + ano.toString()) day_dat = dat.toString().substr(0,10) day_today = date_Form.toString().substr(0,10) year_dat = dat.getFullYear () year_today = date_Form.getFullYear () colorcell = ((day_dat == day_today) && (year_dat == year_today) ? " bgcolor='#FFCC00' " : "" ) var m = (mmonth+1).toString(); if( d<9 ) d = '0'+d; if( m<9 ) m = '0'+m; txt += "<td"+colorcell+" align=center><a href=java script:block('"+ d + "/" + m + "/" + ano.toString() +"',"+ obj +",'" + div +"') class='data'>"+ d.toString() + "</a></td>" d ++ } else { txt += "<td class='data' align=center> </td>" } week ++ if (week == 8) { week = 1; txt += "</tr>"} } txt += "</table>" div2 = eval (div) div2.innerHTML = txt } // função para exibir a janela com os meses function pop_month(obj, div, tam, ano) { txt = "<table bgcolor='#CCCCFF' border='0' width=80>" for (n = 0; n < 12; n++) { txt += "<tr><td align=center><a href=java script:popdate('"+obj+"','"+div+"','"+tam+"','"+("01/" + (n+1).toString() + "/" + ano.toString())+"')>" + umonth[n] +"</a></td></tr>" } txt += "</table>" popd.innerHTML = txt } // função para exibir a janela com os anos function pop_year(obj, div, tam, umonth) { txt = "<table bgcolor='#CCCCFF' border='0' width=160>" l = 1 for (n=1991; n<2012; n++) { if (l == 1) txt += "<tr>" txt += "<td align=center><a href=java script:popdate('"+obj+"','"+div+"','"+tam+"','"+(umonth.toString () +"/01/" + n) +"')>" + n + "</a></td>" l++ if (l == 4) {txt += "</tr>"; l = 1 } } txt += "</tr></table>" popd.innerHTML = txt } // função para fechar o calendário function force_close(div) { div2 = eval (div); div2.innerHTML = ''} // função para fechar o calendário e setar a data no campo de data associado function block(data, obj, div) { force_close (div) obj2 = eval(obj) obj2.value = data novadata = data.split('/'); } validador function valida_data(campo_data,formnome) { var expReg = /^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/[1-2][0-9]\d{2})$/; var msgErro = 'Formato inválido de campo_data.'; var vdt = new Date(); var vdia = vdt.getDay(); var vmes = vdt.getMonth(); var vano = vdt.getYear(); if ((campo_data.value.match(expReg)) && (campo_data.value!='')){ var dia = campo_data.value.substring(0,2); var mes = campo_data.value.substring(3,5); var ano = campo_data.value.substring(6,10); if((mes==04 && dia > 30) || (mes==06 && dia > 30) || (mes==09 && dia > 30) || (mes==11 && dia > 30)){ alert("Dia incorreto !!! O mês especificado contém no máximo 30 dias."); campo_data.focus(); return false; } else{ //1 if(ano%4!=0 && mes==2 && dia>28){ alert("campo_data incorreta!! O mês especificado contém no máximo 28 dias."); campo_data.focus(); return false; } else{ //2 if(ano%4==0 && mes==2 && dia>29){ alert("campo_data incorreta!! O mês especificado contém no máximo 29 dias."); campo_data.focus(); return false; } else{ //3 if (ano > vano) { alert("campo_data incorreta!! Ano informado maior que ano atual."); campo_data.focus(); return false; }else{ //4 document.getElementById(formnome).submit(); // Ou dos dois modos abaixo: //document.form_data_final.submit(); //eval( "document." + formnome + ".submit();" ) } //4-else } //3-else }//2-else }//1-else } else { //5 alert(msgErro); campo_data.focus(); return false; } //5-else } Como resolver isso?
-
Bom. Agora entendi. Muito Obrigado. Por min, pode fechar o tópico.
-
Ok. Entendi. Fiz e deu certo grato. Mas, só uma dúvida. É segura fazer o redirect desse jeito. Voce faria assim? Minha intensão é aposentar scripts no cliente (browser). Essa ideia, é boa?
-
inclusive o session_start(); abaixo do ob_start();? Ou no caso do ob_start(); não é necessário usar o session_start();? Se não, quem vem primeiro. O session ou o ob_start?
-
Descobri. O problema era na chamada da funçao Estava fazendo assim: header("refresh: 3; acao=contato"); quando o certo é assim: header("refresh: 3; url='?acao=contato'"); Mas agora esta dando o bendido do erro de header: Warning: Cannot modify header information - headers already sent by (output started at /home/c27202/public_html/gapde/global/config/conexao.php:1) in /home/c27202/public_html/gapde/cadastros_conteudo.php on line 21 tem como resolver isso tambem?
-
Sabe o que estou observando. header("refresh: 3; ?acao=contato"); break; Aqui está dando refresh na pagina, e eu precisava era que redirecionasse. Dai tentei assim: sleep(5); header("location:?acao=contato"); break; Desta forma redireciona correto mas antes dos 5 segundos, só mostra o fundo azul da pagina sem nada nela.
-
Rapaz, fiz do jeito abaixo e ainda continuou dando refresh. direto. <? if ($_GET['acao'] =="ok") { echo " <table align=\"center\"> <tr bgcolor=\"#6666FF\"> <td align=\"center\" valign=\"middle\"> <font color=\"#FFFFFF\">Enviado OK!</font><br /> </td> </tr> </table> "; header("refresh: 5; cadastros.php"); break; } ?> <? if ($_GET['acao'] =="erro") { echo " <table align=\"center\"> <tr bgcolor=\"#6666FF\"> <td align=\"center\" valign=\"middle\"> <font color=\"#FFFFFF\">Erro no envio<br>Por favor, tente novamente!</font><br /> </td> </tr> </table> "; header("refresh: 5; cadastros.php"); break; } ?> <? if ($_GET['acao'] =="envia") { $motivo = $_POST['motivo']; $nome = $_POST['nome']; $email = $_POST['email']; $tel = str_replace( ".", "", $_POST['tel']); $texto = $_POST['texto']; $sql = "INSERT INTO contato(motivo, nome, email, tel, texto) VALUES('$motivo', '$nome', '$email', '$tel', '$texto')"; $consulta = $MySQL->query($sql); if($consulta){ header("location:?acao=ok"); } else { header("location:?acao=erro"); } } ?> <table align="center" width="95%"> <tr bgcolor="#6666FF"> <td align="center" valign="middle" colspan="3"> <font color="#FFFFFF">Cadastros:::::: <?=$titulo_site;?> ::::::</font><br /> </td> </tr> <tr> <td align="left" colspan="2"> Para acessar a nossa área de cadastros, é necessário que você também esteja cadastrado no nosso site. <br /> Então, pedimos que você escolha abaixo a área que representa você e nos passe seus dados de contato que rapidamente, entraremos em contato para coletarmos junto a você, os outros dados necessários ao cadastro.<br /> Feito isso, nós estaremos te encaminhando, através dos meios de contato informados por você abaixo, a senha de acesso, que podera ser alterada posteriormente.<br /> Caso o assunto não seja nenhum dos relacionados abaixo, clique <a href="contato.php?acao=deficiente">AQUI</a> e nos envie um email com outro assunto. </td> </tr> <tr> <td align=center> <table align="center"> <tr><td align="center" colspan="2">dEficiente interessado em obter o cadastro:</td></tr> <form action="?acao=envia" method="post" name="contatodeficiente"> <tr> <td>Nome:</td> <td><input type="text" name="nome" value="" / size="31"></td> </tr> <tr> <td>Email:</td> <td><input type="text" name="email" value="" / size="31"></td> </tr> <tr> <td>Telefone:</td> <td><input type="text" name="tel" onkeypress="return mascara(event,this,'##.####.####');" value="" size="31" maxlength="12"> </td> </tr> <tr> <td>Texto:</td> <td><textarea name="texto" id="texto" style="width:220; height:200"></textarea></td> </tr> <tr> <td align="center" colspan="2"><input type="button" value="Enviar" onclick="validacontatodeficiente();"></td> </tr> <input type="hidden" name="motivo" value="1" /> </form> </table> </td> <td align=center> <table align="center"> <tr><td align="center" colspan="2">Empresários com Interesse em mão de obra dEficiente::</td></tr> <form action="?acao=envia" method="post" name="contatoempresa"> <tr> <td>Nome:</td> <td><input type="text" name="nome" value="" / size="31"></td> </tr> <tr> <td>Email:</td> <td><input type="text" name="email" value="" / size="31"></td> </tr> <tr> <td>Telefone:</td> <td><input type="text" name="tel" onkeypress="return mascara(event,this,'##.####.####');" value="" size="31" maxlength="12"> </td> </tr> <tr> <td>Texto:</td> <td><textarea name="texto" id="texto" style="width:220; height:200"></textarea></td> </tr> <tr> <td align="center" colspan="2"><input type="button" value="Enviar" onclick="validacontatoempresa();"></td> </tr> <input type="hidden" name="motivo" value="2" /> </form> </table> </td> </tr> </table> Tenta ae: http://www.carcleo.com/gapde/cadastros.php Vai na form da esquerda. Deficientes e v~e o que esta acontecendo.
-
É. Acho que estou fazendo errado então. Estou fazendo só assim: <? if ($acao =="envia") { ....... } ?>