Ir para conteúdo
Fórum Script Brasil

laurinha2004

Membros
  • Total de itens

    101
  • Registro em

  • Última visita

Posts postados por laurinha2004

  1. Estou começando a utilizar as classes PDO para conexão ao BD.

    Minha dúvida é a seguinte:

    Essa classe de conexão usa o padrão Singleton?

    Se não, como posso transformá-la em Singleton?

    <?
    class Conexao {
    
        private $con = null;
        private $dbType = "mysql";
        private $host = "localhost";
        private $user = "root";
        private $senha = "root";
        private $db = "meu_banco";
        private $persistent = false;
        
        public function Conexao( $persistent=false ){
            if( $persistent != false){
                $this->persistent = true; 
            }
        }
        
        public function conectar(){
            try{
                $this->con = new PDO($this->dbType.":host=".$this->host.";dbname=".$this->db, $this->user, $this->senha, 
                array( PDO::ATTR_PERSISTENT => $this->persistent ));
                return $this->con;
            } catch ( PDOException $ex ){  
                echo "Erro: ".$ex->getMessage(); 
            }
        }
        
        public function fechar(){
            if( $this->con != null ) {
                $this->con = null;
            }
        }
    }
    ?>

  2. Preciso redirecionar uma página php passando 2 parametros via POST. Como faço? Ouvi dizer que não tem como fazer usando a função header, mas tem como utilizando sockets. Pesquisei na net procurando o redirecionamento via POST com sockets e não encontrei. Alguém pode me dar uma ajuda?

    As variáveis que preciso passar via POST são:

    pagina=1

    produto=20

    e a página será:

    novo_produto.php

  3. Estou usando o comando abaixo para gerar códigos para os nomes das minhas imagens:

    echo md5(uniqid(time()));

    Minha dúvida é a seguinte:

    Qual a possibilidade de se gerar um código repetido com o comando q estou usando?

    Tipo, se eu em algum pc coincidir da hora estar errada e bater c uma hora q eu já utilizei esse comando, vai gerar um repetido?

  4. Olá Romero, eu já tinha utilizado esse comando, mas mesmo assim a sessão continua aberta, ou seja, mostrando os produtos do carrinho.

    minha pagina do carrinho é a seguinte:

    carrinho.php

    <?
    $carrinhoComprasClass = new CarrinhoCompras();
    $carrinhoComprasController = new CarrinhoComprasController();
    
    $midia = $_GET['cod_midia'];
    $acao = $_GET['acao'];
    
    if($acao == "adicionar"){
        $carrinhoComprasClass->setMidia($midia);
        $carrinhoComprasClass->setQuantidade(1);
        $carrinhoComprasController->adicionarItem($carrinhoComprasClass);
    } else if($acao == "alterar"){
        $quantidade = $_GET['quantidade'];
        $carrinhoComprasClass->setMidia($midia);
        $carrinhoComprasClass->setQuantidade($quantidade);
        $carrinhoComprasController->alterarItem($carrinhoComprasClass);
    } 
    else if($acao == "excluir"){
        $carrinhoComprasClass->setMidia($midia);
        $carrinhoComprasController->removerItem($carrinhoComprasClass);
    } else if($acao == "limpar"){
        $carrinhoComprasController->limpar();
    }
    
    foreach($_SESSION["carrinho"] as $midiaCarrinho){
           echo $midiaCarrinho->getMidia()." - ";
           echo $midiaCarrinho->getQuantidade()."<hr size='1'>";
    }
    ?>
    <br><br>
    <a href="?acao=limpar">Limpar carrinho</a>
    CarrinhoComprasController.php
    .....
    function limpar() {
        session_destroy();
    }
    .....

  5. O meu método para limpar o carrinho inteiro não funciona.

    Já tentei usar unset($_SESSION["carrinho"]), $_SESSION["carrinho"] = "", $this->carrinho = "", unset($this->carrinho), e nenhuma dessas ele encerrou a sessão. Alguém pode me dar uma luz?

    <?
    class CarrinhoComprasController {
    
        var $carrinho;
        
        function CarrinhoComprasController() {
        session_start();
        if(empty($_SESSION["carrinho"])){
                $_SESSION["carrinho"] = Array();
        }
        }
        
        function atualizarDados() {
            $_SESSION["carrinho"] = $this->carrinho;
        }
    
        function getCarrinho() {
            $this->carrinho = $_SESSION["carrinho"];
        }
        
        function adicionarItem($carrinhoCompras) {
            $this->getCarrinho();
            $codigo = $carrinhoCompras->getMidia();
            if (!isset($this->carrinho[$codigo])) {
                $this->carrinho[$codigo] = $carrinhoCompras;
            }
            $this->atualizarDados();
        }
        
        function removerItem($carrinhoCompras) {
        $this->getCarrinho();
        $codigo = $carrinhoCompras->getMidia();
        unset($this->carrinho[$codigo]);
        $this->atualizarDados();
        }
        
        function limpar() {
        $this->getCarrinho();
        unset($this->carrinho);
        }
    
    }
    ?>

  6. Ok Romero, funcionou perfeitamente.

    Agora só está c um problema....Essa linha abaixo só exibe os itens do carrinho quando eu adiciono um, ou seja, se eu entrar na página carrinho sem adicionar nenhum item, ele não exibe os que já estão lá. O q pode ser isso?

    foreach($carrinhoComprasClass->carrinho) as $midias){
        echo $midias->getCodigo()." - ";
    }

    Outra coisa. O que posso fazer nessa classe para melhorá-la?

  7. Estou montando um carrinho de compras utilizando PHP5.

    Aparentemente ele está funcionando, somente uma coisa está meio estranha.

    Se eu entrar no carrinho sem adicionar nada, ele mostra o tamanho do carrinho = 0, se eu atualizar a página, ele já coloca o tamanho = 1.

    Do mesmo jeito q se eu adicionar um produto, ele mostra tamanho = 1, se atualizar a página ele mostra tamanho = 2. Onde será q está o problema?

    Como que eu verifico na página carrinho se o tamanho do carrinho = 0? tentei acessar o método getCarrinho() da classe CarrinhoCompras mas n deu certo.

    Classe CarrinhoCompras

    <?
    class CarrinhoCompras {
    
        var $carrinho;
        
        function CarrinhoCompras() {
            session_start();
            if(empty($_SESSION["carrinho"])){
                $_SESSION["carrinho"] = Array();
            }
        }
        
        function atualizarDados() {
            $_SESSION["carrinho"] = $this->carrinho;
        }
    
        function getCarrinho() {
            $this->carrinho = $_SESSION["carrinho"];
        }
        
        function adicionarItem($midia) {
            $this->getCarrinho();
            $codigo = $midia->getCodigo();
            if (!isset($this->carrinho[$codigo])) {
                $this->carrinho[$codigo] = $midia;
            } else {
                /*$quantidade = $midia->getQuantidade() +
                $carrinho[$codigo]->getQuantidade();
                $this->carrinho[$codigo]->setQuantidade($quantidade);*/
            }
            $this->atualizarDados();
        }
        
        function removerItem($midia) {
            $this->getCarrinho();
            $codigo = $midia->getCodigo();
            unset($this->carrinho[$codigo]);
            $this->atualizarDados();
        }
    }
    ?>
    carrinho.php
    <?
    require_once("classes/CarrinhoCompras.php");
    require_once("classes/Midia.php");
    
    $midiaClass = new Midia();
    $carrinhoComprasClass = new CarrinhoCompras();
    
    $midia = $_GET['cod_midia'];
    
    $midiaClass->setCodigo($midia);
    
    echo "Total = ".count($_SESSION["carrinho"])." - ";
    
    $carrinhoComprasClass->adicionarItem($midiaClass);
    foreach($carrinhoComprasClass->carrinho as $midias) {
        echo $midias->getCodigo();
    }
    ?>

  8. Alguém tem um exemplo disso que estou precisando? Creio que deve ser utilizando cookies mesmo.

    Ai como faço akela barra de navegação (paginação) na parte inferior com os produtos visualizados para quando eu clicar na página 2, por exemplo, ele não atualizar a página completa, somente passar para a próxima coluna, ou seja, mostrar de 3 em 3 produtos, como nesses sites de comércio eletrônico.

    Já procurei um script desses e não achei nada. Se alguém souber onde acho ou qual é o nome correto para que eu posso pesquisar com mais detalhes. Obrigado.

  9. Qual a melhor maneira de fazer um histórico de navegação, como a gente vê em alguns sites (Na parte inferior do site mostra os produtos que o cliente visualizou, com a opção de limpar o histórico).

    Se alguém souber onde encontro um script desse jeito ou como fazer, posta ai!!!

  10. Estou montando uma loja online para alugar filmes em DVD e Blu-ray.

    Gostaria que me ajudassem a escolher a melhor estrutura. Fiz as seguintes:

    // 1 - DVD; 2 - Blu-ray
    CREATE TABLE tipo_midia (
        codigo INTEGER NOT NULL AUTO_INCREMENT,
        nome VARCHAR(10) NOT NULL,
        PRIMARY KEY(codigo) 
    );
    
    CREATE TABLE midias (
        codigo INTEGER NOT NULL AUTO_INCREMENT,
        titulo VARCHAR(60) NOT NULL,
        titulo_original VARCHAR(60) DEFAULT NULL,
        ano_lancamento INTEGER DEFAULT NULL,
        sinopse TEXT DEFAULT NULL,
        duracao INTEGER DEFAULT NULL,
        censura INTEGER DEFAULT NULL,
        cor ENUM('Colorido', 'Preto e branco') NOT NULL DEFAULT 'Colorido',
        regiao INTEGER,
        pais VARCHAR(30),
        imagem VARCHAR(40) NOT NULL,
        preço FLOAT(5,2) DEFAULT '0.00',
        quantidade_locacao INTEGER NOT NULL,
        cod_genero INTEGER NOT NULL,
        cod_categoria INTEGER NOT NULL,
        cod_tipo_midia INTEGER NOT NULL,
        PRIMARY KEY(codigo)
    );
    
    CREATE TABLE elenco (
        codigo INTEGER NOT NULL AUTO_INCREMENT,
        nome VARCHAR(30) NOT NULL,
        PRIMARY KEY(codigo)
    );
    
    // 1 - Ator; 2 - Diretor
    CREATE TABLE tipo_elenco (
        codigo INTEGER NOT NULL AUTO_INCREMENT,
        nome VARCHAR(30) NOT NULL,
        PRIMARY KEY(codigo)
    );
    
    CREATE TABLE midias_elenco (
        cod_midia INTEGER NOT NULL,
        cod_elenco INTEGER NOT NULL,
        cod_tipo_elenco INTEGER NOT NULL
    );
    CREATE TABLE midias (
        codigo INTEGER NOT NULL AUTO_INCREMENT,
        titulo VARCHAR(60) NOT NULL,
        titulo_original VARCHAR(60) DEFAULT NULL,
        ano_lancamento INTEGER DEFAULT NULL,
        sinopse TEXT DEFAULT NULL,
        duracao INTEGER DEFAULT NULL,
        censura INTEGER DEFAULT NULL,
        cor ENUM('Colorido', 'Preto e branco') NOT NULL DEFAULT 'Colorido',
        regiao INTEGER,
        pais VARCHAR(30),
        cod_genero INTEGER NOT NULL,
        cod_categoria INTEGER NOT NULL,
        PRIMARY KEY(codigo)
    );
    
    CREATE TABLE tipo_midia (
        codigo INTEGER NOT NULL AUTO_INCREMENT,
        nome VARCHAR(10) NOT NULL,
        PRIMARY KEY(codigo) 
    );
    
    CREATE TABLE midias_aux{
        cod_midia INTEGER NOT NULL,
        cod_tipo_midia INTEGER NOT NULL,
        imagem VARCHAR(40) NOT NULL,
        preço FLOAT(5,2) DEFAULT '0.00',
        quantidade_locacao INTEGER NOT NULL
    }
    
    CREATE TABLE elenco (
        codigo INTEGER NOT NULL AUTO_INCREMENT,
        nome VARCHAR(30) NOT NULL,
        PRIMARY KEY(codigo)
    );
    
    // 1 - Ator; 2 - Diretor
    CREATE TABLE tipo_elenco (
        codigo INTEGER NOT NULL AUTO_INCREMENT,
        nome VARCHAR(30) NOT NULL,
        PRIMARY KEY(codigo)
    );
    
    CREATE TABLE midias_elenco (
        cod_midia INTEGER NOT NULL,
        cod_elenco INTEGER NOT NULL,
        cod_tipo_elenco INTEGER NOT NULL
    );

    Eu fiquei na dúvida pelo seguinte:

    Mantenho uma única tabela para os dados principais do filme, tendo em vista que o DVD e o Blu-ray terão os mesmos dados, somente mudando a imagem, o preço, quantidade de locação.

    Ou então cadastro os dados repetidos somente alterando o tipo de mídia, a imagem e a quantidade de locação

  11. Estou desenvolvendo um site para uma locadora de dvds e me deparei com um problema. É o seguinte:

    Tenho uma tabela "Filmes":

    codigo - auto_increment, primary key
    titulo
    titulo_original
    duracao
    censura
    categoria
    preço
    ano_lancamento
    e uma tabela "Produtos" (produtos que podem ser entregues junto com o filme. Ex.: Coca-cola, pipocas, sorvetes, etc):
    codigo - auto_increment, primary key
    nome
    preço

    O usuário poderá adicionar filmes e produtos ao carrinho de compras.

    Isso não vai gerar um conflito pelo motivo de o codigo de um filme bater com um codigo igual da tabela de produtos?

    É correto fazer esse tipo de coisa ou tem algum jeito melhor de resolver isso? O q vocês me indicam fazer nesse caso?

  12. alterei o codigo da seguinte maneira, mas não escreveu nada dentro da tag span...é preciso colocar um método no javascript e dpois no select usar algum onselect?

    <script>
    var elemento=document.getElementById("resposta")
    switch(document.getElementById("tipo").value){
        case 1:    elemento.value="R$"; break;
        case 2:    elemento.value="Kg"; break;
        default:    elemento.value="Peças";
    }
    </script>
    <select name="tipo" id="tipo">
       <option value="1">Dinheiro</option>
       <option value="2">Alimento</option>
       <option value="3">Roupas</option>
    </select>
    &nbsp;&nbsp;<input type="text" name="valor" size="20">
    &nbsp;
    <span id="resposta"></span>

  13. Tenho o seguinte codigo:

    <select name="tipo" id="tipo">
       <option value="1">Dinheiro</option>
       <option value="2">Alimento</option>
       <option value="3">Roupas</option>
    </select>
    &nbsp;&nbsp;<input type="text" name="valor" size="20">
    &nbsp;

    Gostaria de no final do campo text, em uma div aparecesse o que o usuário escolheu no tipo, da seguinte forma:

    Dinheiro -> aparecer "R$"

    Alimento -> aparecer "Kg"

    Roupas -> aparecer "Peças"

  14. Olá, tenho a seguinte função em js para colocar mascara no campo do CPF:

    <script>
    function mascara(o,f){
        v_obj=o
        v_fun=f
        setTimeout("execmascara()",1)
    }
    
    function execmascara(){
        v_obj.value=v_fun(v_obj.value)
    }
    
    function formatarCpf(v){
        v=v.replace(/\D/g,"")                    //Remove tudo o que não é dígito
        v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
        v=v.replace(/(\d{3})(\d)/,"$1.$2")       //Coloca um ponto entre o terceiro e o quarto dígitos
                                                 //de novo (para o segundo bloco de números)
        v=v.replace(/(\d{3})(\d{1,2})$/,"$1-$2") //Coloca um hífen entre o terceiro e o quarto dígitos
        return v
    }
    </script>
    Teste de máscara de CPF: <input type="text" name="cpf" maxlength="14" size="13" onKeyPress="mascara(this, formatarCpf)">
    Estou fazendo uma busca por nome ou CPF, e queria fazer o seguinte: Se o usuário selecionar o tipo CPF, então no campo pesquisa ele coloca a mascara de CPF no campo. E caso ele selecione o tipo nome, ele retire a mascara de CPF do campo. Minha página de busca tem:
    Buscar por: <select name="tipo">
               <option value="1">Nome</option>
               <option value="2">CPF</option>
          </select>
    &nbsp;
    <input type="text" name="pesquisa">

  15. Qual o melhor jeito de alterar o valor contido em uma sessão?

    Ex: Crio uma sessão com o seguinte conteúdo:

    $_SESSION['usuario_grupo'] = "Admin";
    e quero trocar o Admin por Usuário. Eu posso alterar diretamente?
    $_SESSION['usuario_grupo'] = "Usuário";

  16. Este código que estou usando para formatar campos só está funcionando no internet explorer, no mozilla firefox ele não funciona. Alguém sabe o porque e como corrigir?

    formata_campos.js

    function inserirMascara(formato, keypress, objeto){
        
        campo = eval (objeto);
    
        // cep
        if (formato=='cep'){
            separador = '-';
            conjunto1 = 5;
            if (campo.value.length == conjunto1){
                campo.value = campo.value + separador;
            }
        }
    
        // cpf
        if (formato=='cpf'){
            separador1 = '.'; 
            separador2 = '-'; 
            conjunto1 = 3;
            conjunto2 = 7;
            conjunto3 = 11;
            if (campo.value.length == conjunto1){
                campo.value = campo.value + separador1;
            }
            if (campo.value.length == conjunto2){
                campo.value = campo.value + separador1;
            }
            if (campo.value.length == conjunto3){
                campo.value = campo.value + separador2;
            }
        }
    
        // nascimento
        if (formato=='data_nascimento'){
            separador = '/'; 
            conjunto1 = 2;
            conjunto2 = 5;
            if (campo.value.length == conjunto1){
                campo.value = campo.value + separador;
            }
            if (campo.value.length == conjunto2){
                campo.value = campo.value + separador;
            }
        }
    
        // telefone
        if (formato=='telefone'){
            separador1 = '(';
            separador2 = ')';
            separador3 = '-';
            conjunto1 = 0;
            conjunto2 = 3;
            conjunto3 = 8;
            if (campo.value.length == conjunto1){
                campo.value = campo.value + separador1;
            }
            if (campo.value.length == conjunto2){
                campo.value = campo.value + separador2;
            }
            if (campo.value.length == conjunto3){
                campo.value = campo.value + separador3;
            }
        }
    }
    formulario.html
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml2/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
    <title>Formulário</title>
    </head>
    <body>
    <script src='js/formata_campos.js'></script>
    <form method="post" name="cadastro" onSubmit="bt_incluir.disabled=true;">
    Telefone: <input type="text" name="telefone" maxlength="13" size="13" onKeyPress="inserirMascara('telefone', window.event.keyCode, 'document.cadastro.telefone');"><br>
    CPF: <input type="text" name="cpf" maxlength="14" size="16" onKeyPress="inserirMascara('cpf', window.event.keyCode, 'document.cadastro.cpf');"><br>
    Data de nascimento: <input type="text" name="data_nascimento" maxlength="10" size="13" onKeyPress="inserirMascara('data_nascimento', window.event.keyCode, 'document.cadastro.data_nascimento');"><br>
    <input type="submit" value="Incluir" name="bt_incluir">
    </form>

  17. Possuo uma tabela que contem os seguintes campos:

    codigo, endereco, numero_endereco, bairro
    o conteúdo desta tabela é o seguinte:
    1 - Rua A - 45
    2 - Rua A - 45
    3 - Rua B - 40
    4 - Rua A - 30
    5 - Rua A - 45
    Preciso que o resultado da minha busca retorne o seguinte:
    Rua A - 45 - (total 3)
    Rua B - 40 - (total 1)
    Rua A - 30 - (total 1)
    já consegui ele exibir somente um registro de cada com o distinct, mas n consigo contar quantos ele achou do mesmo
    SELECT DISTINCT endereco, numero_endereco, bairro FROM tabela;

  18. Tenho um método que lista os meus produtos no BD.

    public function listar(){
            try{
                $stmt = $this->conexao->query("SELECT * FROM produtos ORDER BY descricao");
                $this->conexao = null;
                return $stmt;
            }catch ( PDOException $ex ){
                echo "Erro: ".$ex->getMessage(); 
            }    
        }
    Como faço para saber se o método retornou algum resultado? Tentei fazer algo do tipo:
    $obj = new Produto();
    if($obj->listar() == null){
       //
    }

    mas não deu certo....alguém sabe como fazer?

  19. Preciso fazer um codigo funcionar da seguinte forma:

    Tenho uma lista utilizando radio buttons e um botao excluir. Ao clicar em excluir, o sistema deve chamar uma funcao em javascript que saiba qual o radio button escolhido e perguntar se deseja excluir o registro escolhido.

    Consegui fazer ao invés de radio buttons, utilizar link direto. Gostaria que alguém adaptasse para utilizar radio buttons.

    <script>
    function confirmaExclusao(codigo) {   
       if (confirm("Tem certeza que deseja excluir o registro?")) { 
          location.href="?acao=excluir&codigo=" + codigo;
       }
    }
    </script>
    
    <form method="post">
    <input type="radio" name="codigo" value="1"> teste1<br>
    <input type="radio" name="codigo" value="2"> teste2<br>
    <input type="radio" name="codigo" value="3"> teste3<br>
    <input type="radio" name="codigo" value="4"> teste4<br>
    <input type="submit" value="Excluir" onClick="return confirmaExclusao(??codigo???);">
    </form>

×
×
  • Criar Novo...