Ir para conteúdo
Fórum Script Brasil

vini_loock

Membros
  • Total de itens

    1.037
  • Registro em

  • Última visita

Posts postados por vini_loock

  1. (Com jquery)Algo assim:

    // ao clicar no li
    $('li').on('click', function(){
        var $li = $(this);
        
        // chama uma página php que retorne um ul > li
        $.ajax({
            url: 'pegaSubItems.php', // página php a ser chamada
            type: 'POST',
            data: {valor: $li.text()},
            onsuccess: function(response){
                $li.append(response);
            },
            onerror: function(e){
                console.log('error');
                console.log(e);
            }
        });
    });

  2. Salve pessoas,

    Estou precisando de alguma coisa que identifique tags não fechadas.

    A situação é a seguinte:

    Tenho um formulário para adicionar artigos;

    Nesse formulário há um campo "conteudo"(um textarea tiny mce);

    Este campo, poderá receber o famoso "leia mais", que nada mais é que um comentário html no campo conteúdo;

    No banco de dados, existem 2 campos para salvar o conteudo: introtext e fulltext;

    Na hora de salvar, dou um explode no comentário (<!--readmore-->);

    e salvo as partes em seus devidos lugares;

    O problema é que se por exemplo o comentário estiver dentro de uma tag p, quando eu mostrar no site apenas o introtext, terá um p sem fechamento.

    Este é o problema, estou sem nenhuma ideia por enquanto, se alguém tiver sugestões...

    Vlw, Vinicius

    Edit..

    Só afim de exemplificar:

    Supomos que o conteudo que o usuário digitou no campo corresponda a isto:

    <p>primeira parte do texto</p>
    <p><!--readmore--></p>
    <p>segunda parte do texto</p>
    No banco, será salvo assim: introtext
    <p>primeira parte do texto</p>
    <p>
    fulltext
    </p>
    <p>segunda parte do texto</p>

  3. Estou fazendo uma aplicação com o google maps, mas estou com um problema na horade adicionar um evento a um marcador.

    Como são vários marcadores, guardo eles em um array. Os eventos devem ser adicionados(pelo que eu sei) depois de cria-los, então em um for, eu adiciono um evento para cada marcador.

    O problema é que cada marcador tem seu conteúdo, logo tenho que guardar as informações em um array e quando faço isso, não consigo associar o marcador com a informação.

    Mas como tudo está em arrays separados e onde adiciono o evento é em um for, a variavel(no caso "i"), terá sempre o maior valor possível(no caso 2(points.length)) e então , na linha 46 ocorre o problema: info é undefined

    O código:

    (function($, google){
        $(function(){
            
            // dados do mapa
            var points = [
                {
                    title: 'teste title 1',
                    content: '<p><b>teste</b></p>',
                    x: 20,
                    y: 10
                }, {
                    title: 'teste title 2',
                    content: '<p><b>teste</b></p>',
                    x: 0,
                    y: 0
                }
            ];
            
            // posição central do mapa
            var centerPos = new google.maps.LatLng(0, 0);
            
            // cria o mapa
            var mapa = new google.maps.Map(document.getElementById('main-google-maps-map'), {
                zoom: 1,
                center: centerPos,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            });
            
            var infos = [],
                markers = [];
            
            // exibe os marcadores no mapa
            for(i = 0; i < points.length; i++){
                markers.push(new google.maps.Marker({
                    position: new google.maps.LatLng(points[i].x, points[i].y),
                    map: mapa,
                    title: points[i].title
                }));
                
                infos.push(new google.maps.InfoWindow({
                    content: points[i].content
                }));
                
                // Erro aqui:
                google.maps.event.addListener(markers[i], 'click', function(){
                    infos[i].open(mapa, markers[i]);
                });
            }
            
        });
    })(jQuery, google);

  4. Tenho um banco de dados com 3 tabelas, nessa estrutura:

    emissoras{

    id (int)

    }

    fields{

    id (int)

    required (int)

    published (int)

    type (varchar)

    name (varchar)

    value (text)

    label (text)

    }

    values{

    id (int)

    emissora_id (int)

    field_id (int)

    value (text)

    }

    A tabela emissoras vai guardar apenas um id para servir de base na hora de resgatar um registro.

    Esse registro será feito a partir de um formulário, que é gerado conforme os registros na tabela fields. O id é salvo na tabela emissoras e os dados na tabela values, relacionando o valor do campo(field_id) com a emissora(emissora_id)

    Agora é que vem a parte complicada. Preciso formatar a forma que o resultado virá.

    Preciso pega, em uma única query, um array com este formato:

    $items = array(

    array(

    'fields.name' => 'values.value',

    ),

    array(

    'fields.name' => 'values.value',

    )

    )

    Onde o array $item, seria todos os resultados da query e cada um dos arrays dentro dele seriam os registros em sí.

    'fields.name' => 'values.value', representa uma lista onde poderiam ter mais de um indice, mas sempre seguindo o mesmo padrão.

    Resumindo, o que eu preciso é que minha query retorne uma lista agrupando os valores em 'values' de acordo com os id's em 'emissoras' e que o grupo de valores desta lista, seja, na verdade, outra lista onde a key seria o campo name da tabela fields(fields.name) e o valor, o campo value da tabela values(values.value).

    Exemplificando:

    Considere as tabelas com os seguintes dados:

    // Insere dados na tabela fields

    INSERT INTO `fields` (id, name)

    VALUES('1', 'nome'),

    VALUES('2', 'email'),

    VALUES('3', 'telefone'),

    VALUES('4', 'endereco')

    // Insere dados na tabela emissoras

    INSERT INTO `emissoras` (id)

    VALUES(1),

    VALUES(2),

    VALUES(3),

    // Insere dados na tabela values

    INSERT INTO `values` (id, emissora_id, field_id, value)

    // Dados correspondentes à emissora #1

    VALUES('1', '1', '1', 'Joaquim'),

    VALUES('1', '1', '2', 'Joaquim@oSite.com'),

    VALUES('1', '1', '3', '(66) 6666-6666'),

    VALUES('1', '1', '5', 'Rua dos bobos, 0'),

    // Dados correspondentes à emissora #2

    VALUES('1', '1', '1', 'Etevaldo'),

    VALUES('1', '1', '2', 'Etevaldo@marte.com'),

    VALUES('1', '1', '3', '(55) 5555-5555'),

    VALUES('1', '1', '5', 'Marte'),

    // Dados correspondentes à emissora #3

    VALUES('1', '1', '1', 'Felisbina'),

    VALUES('1', '1', '2', 'Felisbina@gugu.com'),

    VALUES('1', '1', '3', '(33) 3333-3333'),

    VALUES('1', '1', '5', 'Blumenau'),

    Quero um resultado assim:
    array(

    array(

    'id' => '1', // id da emissora

    'nome' => 'Joaquim',

    'email' => 'Joaquim@oSite.com',

    'telefone' => '(66) 6666-6666',

    'endereco' => 'Rua dos bobos, 0',

    ),

    array(

    'id' => '2',

    'nome' => 'Etevaldo',

    'email' => 'Etevaldo@marte.com',

    'telefone' => '(55) 5555-5555',

    'endereco' => 'Marte',

    ),

    array(

    'id' => '3',

    'nome' => 'Felisbina',

    'email' => 'Felisbina@gugu.com',

    'telefone' => '(33) 3333-3333',

    'endereco' => 'Blumenau',

    ),

    )

  5. Incrível. Sempre que posto aqui, encontro a solução rapidinho. E olha que eu não fui postando logo de cara, estou com isso desde ontem.

    O problema aparentemente era na função selectSlide, eu não estava deletando o item que eu escondia, então quando juntava uma certa quantia de itens lá, o javascript parava.

    Segue a função:

    function selectSlide(i){
                $links.attr('href', list[i].link);
                $mainList.find('img.slide_'+i).parent().addClass('active');
                
                $title.animate({opacity:0}, function(){
                    $(this).html(list[i].title);
                    $(this).animate({opacity:1});
                });
                
                $text.animate({opacity:0}, function(){
                    $(this).html(list[i].text);
                    $(this).animate({opacity:1});
                });
                
                $imageParent.find('img').before(
                    $('<img />').attr('src', list[i].image).hide().fadeIn()
                ).fadeOut(function(){
                    $(this).remove();
                });
            }

    At, Vinicius

  6. Um script que estou escrevendo está parando de executar depois de algumas repetições devido ao erro descrito no titulo

    Sei o que causa esse erro, porem não sei onde está acontecendo.

    O código é este:

    window.productsList = [
        {
            link: '#link2',
            title: 'Title2',
            text: 'Description2',
            image: 'images/banner2.png',
            thumb: 'images/thumbs/banner2.png'
        },{
            link: '#link',
            title: 'Title',
            text: 'Description',
            image: 'images/banner1.png',
            thumb: 'images/thumbs/banner1.png'
        }
    ];
    
    (function($, list){
        
        $(function(){
            
            var $main = $('#header-banner');
            var $imageParent = $main.find('.the-image');
            var $text = $main.find('p');
            var $title = $main.find('h2');
            var $links = $main.find('a.the-image, a.btn-details, a.btn-buy');
            var $mainList = $main.find('ul');
            var active = 0;
            
            for(i = 0; i < list.length; i++){
                var $_li = $('<li />');
                var $_image = $('<img />');
                var $_title = $('<h3 />');
                
                $_image
                    .attr('src', list[i].thumb)
                    .addClass('slide_'+i)
                    .appendTo($_li);
                
                $_title
                    .html(list[i].title)
                    .appendTo($_li);
                
                $_li.appendTo($mainList);
            }
            
            function selectSlide(i){
                $links.attr('href', list[i].link);
                $mainList.find('img.slide_'+i).parent().addClass('active');
                
                $title.animate({opacity:0}, function(){
                    $(this).html(list[i].title);
                    $(this).animate({opacity:1});
                });
                
                $text.animate({opacity:0}, function(){
                    $(this).html(list[i].text);
                    $(this).animate({opacity:1});
                });
                
                $imageParent.find('img').before(
                    $('<img />').attr('src', list[i].image).hide().fadeIn()
                ).fadeOut();
            }
            
            function slideTimeOut(){
                active++;
                if(active >= list.length){
                    active = 0;
                }
                selectSlide(active);
                slideInterval = window.setTimeout(slideTimeOut, 3000);
            }
            
            function createInterval(){
                slideInterval = window.setTimeout(slideTimeOut, 3000);
            }
            
            selectSlide(active);
            
            createInterval();
            
            $mainList.find('li img').click(function(e){
                var el = e.target;
                $mainList.find('li').removeClass('active');
                var i = el.className.split('_')[1];
                active = i;
                clearTimeout(slideInterval);
                selectSlide(active);
                createInterval();
            });
            
        });
        
    })(jQuery, productsList);
    Mas a parte que está com problemas é bem provavel que seja esta:
    function selectSlide(i){
                $links.attr('href', list[i].link);
                $mainList.find('img.slide_'+i).parent().addClass('active');
                
                $title.animate({opacity:0}, function(){
                    $(this).html(list[i].title);
                    $(this).animate({opacity:1});
                });
                
                $text.animate({opacity:0}, function(){
                    $(this).html(list[i].text);
                    $(this).animate({opacity:1});
                });
                
                $imageParent.find('img').before(
                    $('<img />').attr('src', list[i].image).hide().fadeIn()
                ).fadeOut();
            }
            
            function slideTimeOut(){
                active++;
                if(active >= list.length){
                    active = 0;
                }
                selectSlide(active);
                slideInterval = window.setTimeout(slideTimeOut, 3000);
            }
            
            function createInterval(){
                slideInterval = window.setTimeout(slideTimeOut, 3000);
            }

  7. Um script que estou escrevendo está parando de executar depois de algumas repetições devido ao erro descrito no titulo

    Sei o que causa esse erro, porem não sei onde está acontecendo.

    O código é este:

    window.productsList = [
        {
            link: '#link2',
            title: 'Title2',
            text: 'Description2',
            image: 'images/banner2.png',
            thumb: 'images/thumbs/banner2.png'
        },{
            link: '#link',
            title: 'Title',
            text: 'Description',
            image: 'images/banner1.png',
            thumb: 'images/thumbs/banner1.png'
        }
    ];
    
    (function($, list){
        
        $(function(){
            
            var $main = $('#header-banner');
            var $imageParent = $main.find('.the-image');
            var $text = $main.find('p');
            var $title = $main.find('h2');
            var $links = $main.find('a.the-image, a.btn-details, a.btn-buy');
            var $mainList = $main.find('ul');
            var active = 0;
            
            for(i = 0; i < list.length; i++){
                var $_li = $('<li />');
                var $_image = $('<img />');
                var $_title = $('<h3 />');
                
                $_image
                    .attr('src', list[i].thumb)
                    .addClass('slide_'+i)
                    .appendTo($_li);
                
                $_title
                    .html(list[i].title)
                    .appendTo($_li);
                
                $_li.appendTo($mainList);
            }
            
            function selectSlide(i){
                $links.attr('href', list[i].link);
                $mainList.find('img.slide_'+i).parent().addClass('active');
                
                $title.animate({opacity:0}, function(){
                    $(this).html(list[i].title);
                    $(this).animate({opacity:1});
                });
                
                $text.animate({opacity:0}, function(){
                    $(this).html(list[i].text);
                    $(this).animate({opacity:1});
                });
                
                $imageParent.find('img').before(
                    $('<img />').attr('src', list[i].image).hide().fadeIn()
                ).fadeOut();
            }
            
            function slideTimeOut(){
                active++;
                if(active >= list.length){
                    active = 0;
                }
                selectSlide(active);
                slideInterval = window.setTimeout(slideTimeOut, 3000);
            }
            
            function createInterval(){
                slideInterval = window.setTimeout(slideTimeOut, 3000);
            }
            
            selectSlide(active);
            
            createInterval();
            
            $mainList.find('li img').click(function(e){
                var el = e.target;
                $mainList.find('li').removeClass('active');
                var i = el.className.split('_')[1];
                active = i;
                clearTimeout(slideInterval);
                selectSlide(active);
                createInterval();
            });
            
        });
        
    })(jQuery, productsList);
    Mas a parte que está com problemas é bem provavel que seja esta:
    function selectSlide(i){
                $links.attr('href', list[i].link);
                $mainList.find('img.slide_'+i).parent().addClass('active');
                
                $title.animate({opacity:0}, function(){
                    $(this).html(list[i].title);
                    $(this).animate({opacity:1});
                });
                
                $text.animate({opacity:0}, function(){
                    $(this).html(list[i].text);
                    $(this).animate({opacity:1});
                });
                
                $imageParent.find('img').before(
                    $('<img />').attr('src', list[i].image).hide().fadeIn()
                ).fadeOut();
            }
            
            function slideTimeOut(){
                active++;
                if(active >= list.length){
                    active = 0;
                }
                selectSlide(active);
                slideInterval = window.setTimeout(slideTimeOut, 3000);
            }
            
            function createInterval(){
                slideInterval = window.setTimeout(slideTimeOut, 3000);
            }

  8. Sim, mas o que eu queria, é fazer algo diferente. Além de instanciar, quero poder chamar de imediato um método dessa classe.

    Ex:

    $myString = new String('teste').math();

    Nada de mais, quero apenas instanciar a classe, salvar esta instancia em uma variável, mas já na hora de instanciar, chamar o método math

  9. O erro provavelmente está em um desses arquivos:

    include("inject.php");
    include('page.php');
    include"$classefinal.php";
    include '404.php';
    include "home.php";
    include('pages/status.php');

    E uma dica: da uma identada no seu código, não te custa nada e só vai te ajudar no caso de erros como este

  10. Olá, estou estudando algumas coisas para um projeto que começarei em breve e estou com uma dificuldade, que na verdade não passa de frescura, mas seria legal se eu conseguisse.

    Esse sistema trabalhará com muita manipulação de dados, independente dos tipos. Ai eu tava pensando em fazer algo menos PHP, para ficar mais bonito, amigavel...

    A minha ideia seria criar uma classe para cada tipo(string, int, ..) e trabalhar com elas assim:

    echo new String('myString')->isMail()
    O problema é que o PHP exige que depois de instanciar, eu não chame nenhum metodo do objeto, apenas termine a linha. Para contornar isso, criei uma função com o mesmo nome da classe e nessa função eu instancio a classe, no modo de trabalhar ficou quase igual:
    echo String('myString')->isMail()
    Isso já até me serve, mas agora estou cismado nisso e quero por todo custo fazer da forma que eu tinha pensado no começo, logo, queria saber de vocês: é possivel fazer isso? Caso eu não tenha sido claro, aqui está um exemplo:
    <?php
        
        class String
        {
            protected $_str;
            
            public function __construct($str)
            {
                $this->_str = (string) $str;
            }
            
            public function get()
            {
                return $this->_str;
            }
        }
        
        function String($str)
        {
            return new String($str);
        }
        
        /*
         * O que eu quero é utilizar assim:
         * echo new String('teste')->get();
         */
        
        echo String('teste')->get();
        
    ?>

    At, Vinicius

  11. Olá.

    Estou com um problemão:

    A aplicação em questão está sendo desenvolvida em MVC, a primeira camada a ser carregada, é o controller, porem, na hora de exibição, ele aparecerá dentro de uma outra camada, chamada template, seria como se o template estivesse incluindo o controller, mas não é bem isso que acontece, toda saida do controller, é guardada(ob_get_flush) em uma variável que será chamada no template.

    Até então, estava tudo correto, agora que comecei a desenvolver as views é que apareceram os problemas:

    Quando a saída do controller é muito grande, não funciona direito. O conteúdo até é salvo na variável, mas a saída não é limpa, exibindo assim, o controller duas vezes, uma antes do template e outra onde deveria aparecer(dentro do template).

    O código está exatamente assim:

    ob_start();
    require $file;
    Document::component(ob_get_flush());
    ob_end_clean();
    E o método Document::component()
    class Document
    {
        public static $_component;
        
        public static function component($str)
        {
            self::$_component = $str;
        }
    }
    Exemplo correto de saída:
    <html>
    <head></head>
    <body>
    <!-- Saída do controller -->
    </body>
    </html>
    Exemplo de como está saindo:
    <!-- Saída do controller -->
    <html>
    <head></head>
    <body>
    <!-- Saída do controller -->
    </body>
    </html>

×
×
  • Criar Novo...