Ir para conteúdo
Fórum Script Brasil

Carlos Rocha

Membros
  • Total de itens

    1.300
  • Registro em

  • Última visita

Tudo que Carlos Rocha postou

  1. Entendi, só que, quando eu redireciono, eu redireciona para cadastros.php e não para cadastros.php?acao=envia. Porque está esta executando o script de novo? A pergunta é porque com o redirect do javascript, isso não ocorre.
  2. Vou tentar. mas antes, duas perguntas: 1) Se o script já rodou o if, porque esta rodando o else mesmo que a condição já foi satisfeita. Obs.: o $acao do action do form é envia e o location do header é só a pagina sem $acao. 2) Será que essa forma de redirecionamento é mesmo melhor que usar o alert do javascript?
  3. Serra, tentei da forma abaixo mas o script grava no banco normal e depois continua executando a linha do else tambem dando a mensagem de erro na consulta. primeiro da mensage de enviado ok, redireciona, mas, como o redirect é para a mesma pagina, o script lê o else e da a mensagem de erro de gravaçao. <? if ($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){ echo " <table align=\"center\" width=\"300\"> <tr bgcolor=\"#6666FF\"> <td align=\"center\" valign=\"middle\" colspan=\"3\"> <font color=\"#FFFFFF\">Enviado OK!</font><br /> </td> </tr> </table> "; header("refresh: 5; cadastros.php"); break; } else { echo " <table align=\"center\" width=\"300\"> <tr bgcolor=\"#6666FF\"> <td align=\"center\" valign=\"middle\" colspan=\"3\"> <font color=\"#FFFFFF\">Erro no envi!</font><br /> </td> </tr> </table> "; header("refresh: 5; cadastros.php"); break; } } ?>
  4. pessoal. Bom dia! Gostaria de aposentar o alert javascript. Então, queria saber se existe, em php, alguma função que mostra o echo (ou print) e, dentro de um tempo predefinido na função passe para a proxima linha do codigo que será header location. Existe uma funçao que faça isso?
  5. Painel diferente. O problema era o nome do host do servidor. Resolvido. Grato.
  6. Ola pessoal. Bom dia! Vejam esse erro de conexão: http://www.gapde.com.br erro mysqli_set_charset() Local, não da esse erro. O Mysql do servidor é 5.1. Será que não vou poder usar classe para conectar? Eis minha classe: <? class TMySQL { var $soquete; function connect($host,$db,$user,$pass) { $this->host = "localhost"; $this->db = "xxxxxx"; $this->user = "xxxxxx"; $this->pass = "xxxxxx"; $this->soquete=mysql_connect($this->host,$this->user,$this->pass); mysql_set_charset("utf8", $this->soquete); if (!$this->soquete) { echo "Não foi possível conectar-se ao Bando de Dados MySQL"; } else { if (!mysql_select_db($this->db,$this->soquete)) { echo "Banco de dados não encontrado"; } } } function query ($string) { $myquery = mysql_query($string,$this->soquete); if (!$myquery) { echo "Erro na consulta da query!<br>" . $string; } else { return $myquery; } } function num_rows(){ return mysql_num_rows( $this->query ); } } ?> <? $MySQL = new TMySQL(); $MySQL->connect($host, $db, $user, $pass); ?>
  7. Pois é: Estive pensando.: Como existe o campo data_fin na tabela, resolvi fazer fazer direto: select f.id as Fornecedor_id, f.nome as Fornecedor_nome, f.razaosocial as Fornecedor_razao, pl.id_lista as Lista from produtos_lista pl inner join (produtos p inner join fornecedores f on p.fornecedor=f.id) on pl.id_produto = p.id where pl.data_fim >= CURRENT_DATE order by f.id Mas gostei muito de aprender a clausula IN. O que vocês acharam da sql que criei?
  8. Pessoal. Preciso fazer essa consulta: select f.id as Fornecedor_id, f.nome as Fornecedor_nome, f.razaosocial as Fornecedor_razao, pl.id_lista as Lista from produtos_lista pl inner join (produtos p inner join fornecedores f on p.fornecedor=f.id) on pl.id_produto = p.id where pl.id_lista == (select id_lista from produtos_lista WHERE data_fim > CURRENT_DATE) A parte, (select id_lista from produtos_lista WHERE data_fim > CURRENT_DATE) Nesse momento esta me retornando 3 dias Mas não da pra fazer: pl.id_lista == 1,2,3 Como posso fazer isso?
  9. Pessoal. Há um bom tempo programo php com a ajuda de vocês aqui do fórum. Porem, tem um coisa que, não somente eu mas, muita gente tem dúvida. A bendita session. Pois programo no estilo de includes. Onde tenho na pagina index.php, 5 chamadas de paginas por include as quais são: A propria index.php. topo.php. menu.php, base.php e paginhas_conteudo.php. O que esta acontecendo: Na pagina topo.php eu destruo a sessão criada e em uma pagina logon.php eu crio. Mas, na primeira linha da pagina index.php eu coloco o session_star(); E, quando rodo o topo.php para destruir a sessão, me deparo com uma nova chamada a session_start(); lá e o script exclui a sessão. Porem, em tempo de execução e muito rapido, diz que há erro na linha 3 do topo.php. Como eu podria de vez, resolver isso? Segue, os arquvos. logar.php <? session_start(); include("global/funcoes_php/conexao.php"); ?> <?php //////////////////////////////////CASO DE ADMINISTRADOR LOGAR/////////////////////////////// if ($acao=="admin") { $usuario = $_POST['usuario']; $senha = $_POST['senha']; $sql = $MySQL->query("select id, nome from admin where usuario='$usuario' and senha='$senha'"); $num = mysql_num_rows($sql); if ($num==0) { echo "<script>document.location='index.php?erroadmin=invalido'</script>"; } else { $sql = $MySQL->query("select id, nome, bloqueio from admin where usuario='$usuario'"); $bloqueio = mysql_result($sql,0,"bloqueio"); $name = mysql_result($sql,0,"nome"); $sessaologinadmin = mysql_result($sql,0,"id"); if ($bloqueio == "s") { echo "<script>document.location='index.php?erroadmin=bloqueado'</script>"; } else { session_register("bloqueio"); session_register("name"); session_register("sessaologinadmin"); echo "<script>document.location='admin'</script>"; } } } ?> index.php <?php session_start(); header('Content-Type: text/html; charset=utf-8'); include("../global/funcoes_php/var.php"); include("../global/funcoes_php/conexao.php"); ?> <html> <head> <title><?php echo $title2; ?></title> <link href="../global/stilo.css" rel="stylesheet" type="text/css"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> </head> <table width="1000" border="0" cellspacing="0" cellpadding="0" align="center"> <tr> <td colspan="2"><? include("global/topo.php"); ?></td> </tr> <tr valign="top"> <td width="15%"><?php include("global/menu.php"); ?></td> <td width="85%" valign="middle" bgcolor="#FFFFFF"><? include("index_conteudo.php"); ?></td> </tr> <tr> <td colspan="2"><?php include("global/base.php"); ?></td> </tr> </table> </body> </html> topo.php <?php if ($acao =="logout"){ session_start(); session_unset(); session_destroy(); echo "<script>document.location='../index.php?erroadmin=deslogado'</script>"; } ?> <?php if ($sessaologinadmin) { $nome_admin = split(' ',$name); echo "<font color='#FFFFFF'><H1>Administrador $nome_admin[0]!</H1></font>"; } else { echo "<script>document.location='../index.php?erroadmin=deslogado'</script>"; } ?> <table border="0" cellpadding="0" cellspacing="0" width="708"> <tr> <td colspan="2" rowspan="3" align="right"><img src="figuras/logo_administracao.png" border="0" width="200"></td> </tr> </table> menu.php <table border="1"> <tr> <td><a href="global/topo.php?acao=logout"><font color="#FFFFFF">Sair</font></a></td> </tr> <tr> <td width=162><p><a href="index.php"><font color="#FFFFFF">P&aacute;gina Principal</font></a> </p></td> </tr> <tr> <td width=162><p><a href="email.php?acao=VerEmail"><font color="#FFFFFF">Email</font></a> </p></td> </tr> <tr> <td width=162><b><font color="#FFFFFF">* Administradores </font></b><br> <a href="administrador_cadastrar.php?acao=cadastro"><font color="#FFFFFF">Cadastrar</font></a><br> <a href="administrador_alterar.php?acao=editar"><font color="#FFFFFF">Alterar</font></a> </td> </tr> <tr> <td width=162><b><font color="#FFFFFF">* Clientes </font></b><br> <a href="cliente_cadastrar.php?acao=cadastro"><font color="#FFFFFF">Cadastrar</font></a><br> <a href="cliente_alterar.php?acao=editar"><font color="#FFFFFF">Alterar</font></a> </td> </tr> <tr> <td width=162><b><font color="#FFFFFF">* Fornecedores </font></b><br> <a href="fornecedor_cadastrar.php?acao=cadastro"><font color="#FFFFFF">Cadastrar</font></a><br> <a href="fornecedor_alterar.php?acao=editar"><font color="#FFFFFF">Alterar</font></a> </td> </tr> <tr> <td width=162><b><font color="#FFFFFF">* Grupos </font></b><br> <a href="grupo_cadastrar.php?acao=cadastro"><font color="#FFFFFF">Cadastrar</font></a><br> <a href="grupo_alterar.php?acao=editar"><font color="#FFFFFF">Alterar</font></a> </td> </tr> <tr> <td width=162><b><font color="#FFFFFF">* Listas de Produtos </font></b><br> <a href="produto_lista_cadastrar.php?acao=mostra_fornecedores"><font color="#FFFFFF">Cadastrar</font></a><br> <a href="produto_lista_ver.php?acao=listar"><font color="#FFFFFF">Ver/Excluir</font></a> </td> </tr> <tr> <td width=162><b><font color="#FFFFFF">* Pedidos </font></b><br> <a href="pedidos_atender.php?acao=atender"><font color="#FFFFFF">Atender</font></a><br> </td> </tr> <tr> <td width=162><b><font color="#FFFFFF">* Produtos </font></b><br> <a href="produto_cadastrar.php?acao=cadastro"><font color="#FFFFFF">Cadastrar</font></a><br> <a href="produto_alterar.php?acao=listar"><font color="#FFFFFF">Alterar</font></a> </td> </tr> </table> base.php <table border="0" cellpadding="0" cellspacing="0" width="708"> <tr> <td colspan="2" rowspan="3" align="right"><img src="figuras/logo_administracao.png" border="0" width="200"></td> </tr> </table> index_conteudo.php <table align="center"> <tr> <td align=center>:::::: AMBIENTE ADMINISTRATIVO ::::::</td> </tr> </table> Grato à aquem puder ajudar
  10. Ola pessoal. Gostaria de passar o nome de um formulario por parametro para uma funçao de validação. Como faço isso? Eis a função: <script> function validaprodutoadcionado(form) { if(document.form.novo_preco.value=="") { alert("Preencha o campo Preço: campo obrigatório!!!"); document.form.novo_preco.focus(); return (false); } if(document.form.imposto.value=="") { alert("Preencha o campo Imposto: campo obrigatório!!!"); document.form.imposto.focus(); return (false); } document.form.submit(); } </script>
  11. Pessoal. Estou precisando da ajuda de voces pra criar uma função, em js, que faça o seguinte. Não permita letras, só numeros e ponto, e, a medida que o usuario for digitando os numeros, após o usuario digitat o primeiro ponto, permitir apenes as digitação de mais dois numeros e não permitir um segundo ponto. Fico grato a quem puder ajudar. Puxa pessoal. ninguém passou por isso ainda?
  12. Descobri o problema. Se observarem na minha classe TCarrinho.php, na função remover item 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); array_splice($this->item_imposto, $posicao, 1); array_splice($this->item_novopreco, $posicao, 1); } } /* RemoveItem() */ Coloquei os itens todos na função: $this->item_codigo, $this->item_quantidade, $this->item_imposto, $this->item_novopreco. Na verdade, a unica função onde os 4 devem ser inseridos, é na função de adicionar item por ser usada apenas na primeira vez que o item entra no carrinho. Após isso, só as funções de atualizar e concluir o carrinho, e, nessas funções, apenas precisamos do $this->item_quantidade. Colocando os outros $this->, o script, não me perguntem o porque, entra em conflito. Vale lembrar que esse script é para o caso de apenas um unidade de cada mercadoria no carrinho. Segue a classe novamente: <?php /* Classe TCarrinho */ class TCarrinho { var $item_codigo = array(); var $item_quantidade = array(); var $item_imposto = array(); var $item_novopreco = array(); /* AdicinarItem Este metodo adiciona um item no carrinho */ function AdicionarItem($codigo,$quantidade,$imposto,$novo_preco) { //Inicializando parametro $posicao = -1; $achou = $this->ObtemPosicao($codigo,$posicao); if (!$achou){ $this->item_codigo[] = $codigo; $this->item_quantidade[] = $quantidade; $this->item_imposto[] = $imposto; $this->item_novopreco[] = $novo_preco; } } /* AdicionarItem() */ /* 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() */ /* 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_quantidade, $posicao, 1); } } /* RemoveItem() */ /* 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() */ /* 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() */ /* ObtemNovoPrecoItem Este metodo obtem o novo preço do ítem baseado no preço calculado antes do carrinho */ function ObtemNovoPrecoItem($codigo){ $posicao = -1; $achou = $this->ObtemPosicao($codigo,$posicao); if ($achou) { return $this->item_novopreco[$posicao]; }else{ return "erro ao obter Novo Preço do item"; } } /* ObtemNovoPrecoItem() */ /* ObtemImpostoItem Este metodo o imposto do ítem baseado no id */ function ObtemImpostoItem($codigo){ $posicao = -1; $achou = $this->ObtemPosicao($codigo,$posicao); if ($achou) { return $this->item_imposto[$posicao]; }else{ return "erro ao obter o imposto do item"; } } /* ObtemImpostoItem() */ /* QuantosItens Este metodo retorna a quantidade de itens incluidas no carrinho de compras */ function QuantosItens() { return count($this->item_quantidade); } /* QuantosItens() */ /* 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() */ } /* Classe TCarrinho */ ?>
  13. Outra observação: Esse código esta dentro de um while: <? while(list($id, $foto, $nome, $preço, $quantidadecaixa, $grupo, $nome_grupo, $fornecedor) = mysql_fetch_row($Resultado)) { if($foto==""){ $foto2 = "<img src='figuras/Next.png' alt='Sem foto' border=0 width=35>"; } else { if(file_exists("../img/foto_produto/mini/$foto")) { $foto1 = "<img src='../img/foto_produto/mini/$foto' alt='Foto' border=0 width=35>"; list($width,$height) = getimagesize("../img/foto_produto/normal/$foto"); $foto2 = "<a href=java script:AbreImagemGrande('produtos_conteudo_foto.php?foto_url=$foto','ImpNot','$width','$height')> $foto1</a>"; } else { $foto2 = "<img src='figuras/Next.png' alt='Sem foto' border=0 width=35>"; } } echo " <tr> <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$ <input type=\"texto\" name=\"$id\" value=". number_format($MeuCarrinho->ObtemNovoPrecoItem($id), 2, '.', '') ."> </td> <td align='center'><input type=\"texto\" name=\"$id\" value=". $MeuCarrinho->ObtemImpostoItem($id) ."> %</td> <td align='center'><b><font face=Tahoma><font size=-2><a href=carrinho.php?op=excluir&id_prod=$id&id_fornece=$fornecedor>Excluir</a></font></font></b></td> </tr> "; } ?>
  14. O Caps Look não estaria ativado não? Login na admin: usuario: caca (minusculo) senha: aa (minusculo)
  15. Bom, descobri que, quando coloco a função para trabalhar dentreo de um input type=text e dou um name para ele igual ao id do produto em questão, a função funciona. O problema é que preciso fazer isso com 2 campos, o novo_preco e o imposto e ambos vão ganhar o mesmo name. Daí, da conflito os dois recebem o mesmo valor. <td align='center'>R$ <input type=\"texto\" name=\"$id\" value=". number_format($MeuCarrinho->ObtemNovoPrecoItem($id), 2, '.', '') ."> </td> <td align='center'><input type=\"texto\" name=\"$id\" value=". $MeuCarrinho->ObtemImpostoItem($id) ."> %</td> Como contornar isso agora?
  16. Pessoal, resolvi colocar os calculos no form da pagina anterior para que os valores cheguem limpos à pagina do carrinho. Só que eu mexi tanto que agora, quando eu adiciono um item ao carrinho, ou volto e pego outro, ou ainda excluo um item, funciona certo. Porem, quando eu cliko no botão atualizar, ai os valores das funções não são executados e zero os campos que chamam as funções. Segue meu carrinho.php <?php $id_fornece=$_POST['id_fornece']; $novopreco=$_POST['novo_preco']; $imposto=$_POST['imposto']; $novo_preco=(($novopreco * $imposto)/100) + $novopreco; //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){ $MeuCarrinho->AdicionarItem($id_prod,1,$imposto,$novo_preco); } } break; case "excluir": $id_fornece=$_GET['id_fornece']; $MeuCarrinho->RemoverItem($id_prod); break; case "atualizar": $id_fornece=$_GET['id_fornece']; $MeuCarrinho->AtualizarCarrinho($_POST); break; case "finalizar": if ($MeuCarrinho->QuantosItens()>0) { echo "<script>document.location='CarrinhoFinal.php?acao=gravar'</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=produto_lista_cadastrar.php?acao=mostra_fornecedores><h2>Mostrar Fornecedores</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&id_fornece=<?=$id_fornece;?>"> <table BORDER=0 CELLSPACING=2 CELLPADDING=4 WIDTH="100%"> <tr BGCOLOR="#0080C0"><td align="center" colspan="8"><b><font color="#FFFFFF">Lista</font></b></td></tr> <tr BGCOLOR="#004080"> <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">Imposto já<br />Aplicado (%)</font></b></td> <td align="center"><b><font color="#FFFF99">Exluir</font></b></td> </tr> <? while(list($id, $foto, $nome, $preço, $quantidadecaixa, $grupo, $nome_grupo, $fornecedor) = mysql_fetch_row($Resultado)) { if($foto==""){ $foto2 = "<img src='figuras/Next.png' alt='Sem foto' border=0 width=35>"; } else { if(file_exists("../img/foto_produto/mini/$foto")) { $foto1 = "<img src='../img/foto_produto/mini/$foto' alt='Foto' border=0 width=35>"; list($width,$height) = getimagesize("../img/foto_produto/normal/$foto"); $foto2 = "<a href=java script:AbreImagemGrande('produtos_conteudo_foto.php?foto_url=$foto','ImpNot','$width','$height')> $foto1</a>"; } else { $foto2 = "<img src='figuras/Next.png' alt='Sem foto' border=0 width=35>"; } } echo " <tr> <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='right'><font size=-1>R$ ". number_format($MeuCarrinho->ObtemNovoPrecoItem($id), 2, '.', '') ."</font></td> <td align='center'>". $MeuCarrinho->ObtemImpostoItem($id) ." % </td> <td align='center'><b><font face=Tahoma><font size=-2><a href=carrinho.php?op=excluir&id_prod=$id&id_fornece=$fornecedor>Excluir</a></font></font></b></td> </tr> "; } ?> <tr><td align="center" colspan="8"> <input type="hidden" value="<?=$id_fornece;?>" name="id_fornece"/> <input type="hidden" value="<?=$MeuCarrinho->ObtemQuantidadeItem($id);?>" name="<?=$id;?>"/> <input type="submit" value="Atualizar" name="Atualizar" WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)"> </td></tr> </table> </form> <TABLE align="center"> <TR> <TD align="center"> <form method="post" action="produto_lista_cadastrar.php?acao=mostra_produtos&id_fornece=<?=$id_fornece;?>"> <input type="submit" name="Atualizar" value="<< Voltar as Compras" WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)"> </form> </TD> <TD> <form method="post" action="carrinho.php?op=finalizar"> <input type="submit" name="Atualizar" value="Finalizar Compra >>" WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)"> </form> </TD> </TR> </TABLE> <? } ?> e, a classe TMysql.php <?php /* Classe TCarrinho */ class TCarrinho { var $item_codigo = array(); var $item_quantidade = array(); var $item_imposto = array(); var $item_novopreco = array(); /* AdicinarItem Este metodo adiciona um item no carrinho */ function AdicionarItem($codigo,$quantidade,$imposto,$novo_preco) { //Inicializando parametro $posicao = -1; $achou = $this->ObtemPosicao($codigo,$posicao); if (!$achou){ $this->item_codigo[] = $codigo; $this->item_quantidade[] = $quantidade; $this->item_imposto[] = $imposto; $this->item_novopreco[] = $novo_preco; } } /* AdicionarItem() */ /* 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() */ /* 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); array_splice($this->item_imposto, $posicao, 1); array_splice($this->item_novopreco, $posicao, 1); } } /* RemoveItem() */ /* 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]]; $this->item_imposto[$i] = $VAR_ENVIADAS_PELO_BROWSER[$this->item_codigo[$i]]; $this->item_novopreco[$i] = $VAR_ENVIADAS_PELO_BROWSER[$this->item_codigo[$i]]; } } /* AtualizarCarrinho() */ /* 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() */ /* ObtemNovoPrecoItem Este metodo obtem o novo preço do ítem baseado no preço calculado antes do carrinho */ function ObtemNovoPrecoItem($codigo){ $posicao = -1; $achou = $this->ObtemPosicao($codigo,$posicao); if ($achou) { return $this->item_novopreco[$posicao]; }else{ return "erro ao obter Novo Preço do item"; } } /* ObtemNovoPrecoItem() */ /* ObtemImpostoItem Este metodo o imposto do ítem baseado no id */ function ObtemImpostoItem($codigo){ $posicao = -1; $achou = $this->ObtemPosicao($codigo,$posicao); if ($achou) { return $this->item_imposto[$posicao]; }else{ return "erro ao obter o imposto do item"; } } /* ObtemImpostoItem() */ /* QuantosItens Este metodo retorna a quantidade de itens incluidas no carrinho de compras */ function QuantosItens() { return count($this->item_quantidade); count($this->item_imposto); count($this->item_novopreco); } /* QuantosItens() */ /* 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]; $this->item_imposto[$posicao]; $this->item_novopreco[$posicao]; }else{ return "erro ao obter quantidade do item"; } } /* ObtemQuantidaItem() */ } /* Classe TCarrinho */ ?> Onde será que estará esse erro?
  17. Alterar preço no carrinho. Ola pessoal. Gostaria que voces entrassem nesse link: http://www.carcleo.com/sistema/ admin usuario: caca senha:aa No menu listas de produtos -> cadastrar, vai aparecer uma lista de fornecedores e opçao para lista de seus produtos e a opção de adiciona-los ao carrinho. Tudo funciona bem. Porem, há a nescessidade de que, no carrinho, eu possa alterar o preço do produto. Eu criei um campo texto, porem, quando altero e volto para pegar outro produto, ou atualizo, o preço volta ao que era antes. alguém tem alguma ideia de como fazer isso? Segue 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){ $MeuCarrinho->AdicionarItem($id_prod,1,0); } } break; case "excluir": $id_fornece=$_GET['id_fornece']; $MeuCarrinho->RemoverItem($id_prod); break; case "atualizar": $id_fornece=$_GET['id_fornece']; $MeuCarrinho->AtualizarCarrinho($_POST); break; case "finalizar": if ($MeuCarrinho->QuantosItens()>0) { echo "<script>document.location='CarrinhoFinal.php?acao=gravar'</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=produto_lista_cadastrar.php?acao=mostra_fornecedores><h2>Mostrar Fornecedores</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&id_fornece=<?=$id_fornece;?>"> <table BORDER=0 CELLSPACING=2 CELLPADDING=4 WIDTH="100%"> <tr BGCOLOR="#0080C0"><td align="center" colspan="8"><b><font color="#FFFFFF">Lista</font></b></td></tr> <tr BGCOLOR="#004080"> <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&Ccedil;O UNIT&Aacute;RIO</font></b></td> <td align="center"><b><font color="#FFFF99">% Desconto</font></b></td> <td align="center"><b><font color="#FFFF99">PRE&Ccedil;O Alterado</font></b></td> <td align="center"><b><font color="#FFFF99">Exluir</font></b></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->ObtemPrecoAlteradoDeUmItem($id,$preço); $peso_medio = $peso_medio + $MeuCarrinho->ObtemSubTotalDeUmItem($id,$peso); session_register("preco_total"); session_register("peso_medio"); if($foto==""){ $foto2 = "<img src='figuras/Next.png' alt='Sem foto' border=0 width=35>"; } else { if(file_exists("../img/foto_produto/mini/$foto")) { $foto1 = "<img src='../img/foto_produto/mini/$foto' alt='Foto' border=0 width=35>"; list($width,$height) = getimagesize("../img/foto_produto/normal/$foto"); $foto2 = "<a href=java script:AbreImagemGrande('produtos_conteudo_foto.php?foto_url=$foto','ImpNot','$width','$height')> $foto1</a>"; } else { $foto2 = "<img src='figuras/Next.png' alt='Sem foto' border=0 width=35>"; } } echo " <tr> <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='right'><font size=-1>". $preço ."</font></td> <td align='center'>% <input type=TEXT name=". $id ." size='2' value=". $MeuCarrinho->ObtemPorcentagemItem($id) ." onkeypress='BloqueiaLetras();' ></td> <td align='center'><b>R$ <input type='text' name='preco_alter' size='5' readonly='readonly' value=". number_format($MeuCarrinho->ObtemPrecoAlteradoDeUmItem($id,$preço), 2, '.', '') ."></b> </td> <td align='center'><b><font face=Tahoma><font size=-2><a href=carrinho.php?op=excluir&id_prod=$id&id_fornece=$fornecedor>Excluir</a></font></font></b></td> </tr> "; } ?> <tr><td align="center" colspan="8"> <input type="hidden" value="<?=$id_fornece;?>" name="id_fornece"/> <input type="submit" value="Atualizar" name="Atualizar" WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)"> </td></tr> </table> </form> <TABLE align="center"> <TR> <TD align="center"> <form method="post" action="produto_lista_cadastrar.php?acao=mostra_produtos&id_fornece=<?=$id_fornece;?>"> <input type="submit" name="Atualizar" value="<< Voltar as Compras" WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)"> </form> </TD> <TD> <form method="post" action="carrinho.php?op=finalizar"> <input type="hidden" name="preco_total" value="<?=number_format($preco_total, 2, '.', ''); ?>"> <input type="hidden" name="peso_medio" value="<?=number_format($peso_medio, 2, '.', ''); ?>"> <input type="submit" name="Atualizar" value="Finalizar Compra >>" WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)"> </form> </TD> </TR> </TABLE> <? } ?>
  18. Consegui! Ficou assim: $sql_fornecedor= " select f.id as Fornecedor_id, f.nome as Fornecedor_nome, f.razaosocial as Fornecedor_razao, pl.id_lista as Lista from produtos_lista pl inner join (produtos p inner join fornecedores f on p.fornecedor=f.id) on pl.id_produto = p.id where pl.id_lista=(select max(pl.id_lista) from produtos_lista pl) GROUP by f.id "; Grato a todos!
  19. Consegui! Ficou assim: $sql_fornecedor= " select f.id as Fornecedor_id, f.nome as Fornecedor_nome, f.razaosocial as Fornecedor_razao, pl.id_lista as Lista from produtos_lista pl inner join (produtos p inner join fornecedores f on p.fornecedor=f.id) on pl.id_produto = p.id where pl.id_lista=(select max(pl.id_lista) from produtos_lista pl) GROUP by f.id "; Grato a todos!
  20. Tentei assim tambem, da certo, mas não consigo fazer apenas com a última lista. Ola pessoal. Tenho 3 tabelas 1) Fornecedores 2) Produtos 3) Produtos_Lista Bom, nessa Produtos_Lista, eu gravo os dados dos produtos que vão preencher minha lista de produtos que vou por a disposição de clientes. O problema é que eu não tenho um campo fornecedor na tabela Produtos_Lista e todo produto tem um fornecedor. Dai, eu queria saber, qual os nomes dos fornecedores que tem seus produtos registrados na tabela de de Produtos_lisa. Outra por menor é que só me interessa a ultima lista. Dai fiz a seguinte consulta que deu certo: select f.id as Fornecedor_id, f.nome as Fornecedor_nome, f.razaosocial as Fornecedor_razao from fornecedores f inner join (produtos p inner join produtos_lista pl on pl.id_produto = p.id) on p.fornecedor=f.id where pl.id_lista=3 Como só preciso da última lista daí fiz assim: select f.id as Fornecedor_id, f.nome as Fornecedor_nome, f.razaosocial as Fornecedor_razao from fornecedores f inner join (produtos p inner join produtos_lista pl on pl.id_produto = p.id) on p.fornecedor=f.id where pl.id_lista=max(pl.lista_id) Só que aí, quando troquei o 7 por max(pl.lista_id), da erro de uso indevido da group função. Como posso contornar esse problema? Tambem tentei assim, deu certo, mas ainda não consigo fazer o max(id) no fim da query. select f.id as Fornecedor_id, f.nome as Fornecedor_nome, f.razaosocial as Fornecedor_razao from /*fornecedores f inner join (produtos p inner join produtos_lista pl on pl.id_produto = p.id) on p.fornecedor=f.id */ produtos_lista pl inner join ( produtos p inner join fornecedores f on p.fornecedor=f.id ) on pl.id_produto = p.id where pl.id_lista=3 (Aqui eu tenho que pegar o id da última lista)
  21. Tentei assim tambem, da certo, mas não consigo fazer apenas com a última lista. select f.id as Fornecedor_id, f.nome as Fornecedor_nome, f.razaosocial as Fornecedor_razao from /*fornecedores f inner join (produtos p inner join produtos_lista pl on pl.id_produto = p.id) on p.fornecedor=f.id */ produtos_lista pl inner join ( produtos p inner join fornecedores f on p.fornecedor=f.id ) on pl.id_produto = p.id where pl.id_lista=3 (Aqui eu tenho que pegar o id da última lista
  22. Ola pessoal. Tenho 3 tabelas 1) Fornecedores 2) Produtos 3) Produtos_Lista Bom, nessa Produtos_Lista, eu gravo os dados dos produtos que vão preencher minha lista de produtos que vou por a disposição de clientes. O problema é que eu não tenho um campo fornecedor na tabela Produtos_Lista e todo produto tem um fornecedor. Dai, eu queria saber, qual os nomes dos fornecedores que tem seus produtos registrados na tabela de de Produtos_lisa. Outra por menor é que só me interessa a ultima lista. Dai fiz a seguinte consulta que deu certo: select f.id as Fornecedor_id, f.nome as Fornecedor_nome, f.razaosocial as Fornecedor_razao from fornecedores f inner join (produtos p inner join produtos_lista pl on pl.id_produto = p.id) on p.fornecedor=f.id where pl.id_lista=3 Como só preciso da última lista daí fiz assim: select f.id as Fornecedor_id, f.nome as Fornecedor_nome, f.razaosocial as Fornecedor_razao from fornecedores f inner join (produtos p inner join produtos_lista pl on pl.id_produto = p.id) on p.fornecedor=f.id where pl.id_lista=max(pl.lista_id) Só que aí, quando troquei o 7 por max(pl.lista_id), da erro de uso indevido da group função. Como posso contornar esse problema?
  23. ESerrra, obrigado e me desculpe por isso. Mas, você tem como me ajiudar nessa dúvida?
  24. Pessoal. Estou fazendo um projeto de carrinho de compras com arquivos copiados daqui mesmo. O problema é que, nesses carrinhos, o usuario não pode alterar o preço produto. Vou explicar; a ideia é criar uma lista com os produtos que estão cadastrados no banco, porem, é o administrador quem vai criar essa lista que depois de pronta, os produtos que estão na lista, ficarao à diposição dos clientes para compra. Mas, o diferencial aqui, é o motivo que esta me tirando o sono. Carrinho com alteração de preço. Aqui, o administrador tem que ter a opção de alterar o preço do produto e gravar a lista. Não estou conseguindo. Alguma ajuda?
  25. Achei uma saida mas preciso da ajuda de vocês. Nesse código cada produto adicionado ao carrinho, é claro que a quantidade inicial que é colocada é de uma unidada e depois você tem a opçao de aumentar a quantidade e aumentar igualmente o valor a pagar com esse aumento. Certo? Pois é, preciso arranjar uma forma de esse valor começar de 0. Estou fazendo assim: <td align='right'><font size=-1>". $preço ."</font></td> <td align='center'>% <input type=TEXT name=". $id ." size=2 value=". $MeuCarrinho->ObtemQuantidadeItem($id) ."></td> <td align='center'><b>R$ <input type='text' name='preco_alter' value=". number_format($MeuCarrinho->ObtemPrecoAlteradoDeUmItem($id,$preço), 2, '.', '') ."></b> </td> /////////// 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"; } } //////// 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; } } } Tem como fazer o campo % <input type=TEXT name=". $id ." size=2 value=". $MeuCarrinho->ObtemQuantidadeItem($id) ."> Começar de 0 em vez de 1? Pois aproveitei a função para atualizar outro campo.
×
×
  • Criar Novo...