Jump to content

Omar~

Members
  • Content count

    911
  • Joined

  • Last visited

  • Days Won

    15

Everything posted by Omar~

  1. Omar~

    Quanto e como cobrar por um site?

    Olá @GabrielSCastro o que posso dizer é como eu procedo. Independente do quão complexo for a software que irei desenvolver, em negociação com o cliente ele me diz o que quer, vejo as possibilidades para tal e estipulo o tempo que levaria para desenvolver, seja um mês/dois uma semana etc... Eu cobro com base no salário mínimo comercial (o que é muito barato), desde a apresentação do rascunho que seria uma prévia do que ele deseja, assim sendo podendo haver ajustes adesões ou remoções. No caso de manutenções eu dou 2 a 6 meses grátis (conforme for a complexabilidade do website) para afins de correções de bugs que possam surgir. Se caso o cliente queira modificações pós entrega do software a cobrança segue o mesmo padrão de desenvolvimento. No caso de manutenção de website de terceiros (que não foi eu quem desenvolveu) como o dobro do valor, pelo fato que em 99% dos casos foi feito por alguém inexperiente e ele fez "merd....." e na maior parte dos casos é mais rápido refazer do que concertar. Para hospedagem eu só indico para o cliente uma empresa, mas caso ele queira que eu o faça também cobro por fora.
  2. Omar~

    Google Chrome Vs Mozilla

    Rapaz por desconhecer o HTML e CSS, ninguém aqui vai poder ajudar... O que posso dize é que use o console de inspeção no browser para localizar o problema. Ctrl + Shift + I no Chorme ou Ctrl + Shift + C no Mozilla Assim sendo você poderá analisar item por item o porque do vazamento. Sendo leviando posso dizer que o problema é uso da propriedade width que são fixos ao invés de relativos. Mau ou uso indevido de overflow's. Tags não fechadas ou não escapadas. Uso indevido de tags para posicionamento má definição (cada tag tem sua função especifica no documento html).
  3. Omar~

    Favoritar

    Isso é algo muito simples desde que você tenha uma noção nem que seja básica de como manipular dados... A cada upload de imagem ela deve ser registrada em um banco de dados A tabela para esse afim deve possuir uma coluna para identificar-la outra para contagem de votos. CREATE TABLE `imagens` ( `id` int(9) NOT NULL AUTO_INCREMENT COMMENT 'Esse é o identificador da imagem', `nome` varchar(200) NOT NULL DEFAULT '' COMMENT 'Nome do arquivo de imagem', `votos` int(9) NOT NULL DEFAULT '0' COMMENT 'Contador de votos', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; Ao exibir a imagem adicione um botão cujo irá chamar uma função enviando a informação de qual imagem é. <button onclick="votar('<?= $identificar_imagem ?>')">Votar na imagem</button> A função por sua vez irá executar um ajax para que não haja recarregamento passando por um protocolo GET a informação de qual imagem foi votada para um arquivo. function votar(id_da_imagem) { // Execute o ajax informando o arquivo e o identificador da imagem // ('arquivo_de_voto.php?imagem='+ id_da_imagem); } No arquivo que vai receber essa informação faça um SQL SELECT na tabela de imagem selecionado a imagem que tenha o ID da informação GET['imagem'] Com essa informação adicione um variável de contagem. $contagem = ($resultado_de_votos_da_imagem += 1); Então é só fazer o SQL UPDATE nessa mesmo registro atualizando a coluna de votos. Ponderações: Você também deve possuir uma segunda tabela que irá armazenar quem já votou nessa imagem, para que antes de fazer o updade possa checar se aquela pessoa já votou na imagem, do contrário uma pessoa pode clicar milhares de vezes no botão assim votando diversas vezes. Usar-se de manipulador de tempo para que um maldosos não vá ao console ou em outra aplicação http e adicione uma função em micro-segundo para voto (é como se a pessoa clicasse centenas de vezes por segundo) sobre esse botão ou o arquivo que recebe, do contrário seu servidor será sobrecarregado de requisições (isso se a conexão e a máquina dele aguentar).
  4. Omar~

    Como usar o AJAX para dar UNSET?

    Adicione o JS e CSS desse link a sua aplicação: https://github.com/Spell-Master/sm-web/tree/master/min/AjaxRequest Ou pelo código sem minificar: https://github.com/Spell-Master/sm-web/tree/master/javascript/AjaxRequest <a class="link" onclick="finalizar()">finalizar</a> <div id="sair"></div> <script> function finalizar() { finalizar.prototype = new AjaxRequest(); finalizar.prototype.open('sair', 'diretorio/terminar.php'); // Ou use um desses dois métodos abaixo: // finalizar.prototype.send('sair', 'diretorio/terminar.php'); // finalizar.prototype.pop('sair', 'diretorio/terminar.php'); } </script> No arquivo terminar.php <?php unset($_SESSION['prestacao']); unset($_SESSION['nomeproj']); ?> <script>window.location.href = 'areaUsuario.php';</script>
  5. Omar~

    Executar um form assim que o campo for preenchido

    <form id="id_do_formulario"> <input type="file" id="id_do_input" name="alguma_coisa" accept="image/*" /> </form> <script> document.getElementById('id_do_formulario').addEventListener('change', submeterForm, false); function submeterForm(objInput) { document.getElementById('id_do_formulario').submit(); } </script> No entanto requer mais conceitos como uma breve validação para saber se é mesmo imagem que está sendo enviada, qual seu tamanho, dimensões etc... Use o parâmetro objInput para isso.
  6. Omar~

    Inserindo classe em função php

    echo "<img src=\"fotos/" . (empty($row['foto']) ? 'semfoto.jpg' : $row['foto']) . "\" class=\"image_rounded\" alt=\"\" />";
  7. Omar~

    Array Object

    Se eu entendi a dúvida sua.... var users = { id: '', outro: '', maisUm: '' }; users.id = 99; users.outro = 'Um outro valor'; users.maisUm = 'mais alguma coisa';
  8. Omar~

    Dois inputs na mesma linha

    Primeiro corrija os erros em seu html. Segundo só opte em usar style em última alternativa, todo layout deve ser feito em folha de estilo, isso irá poupar muita dor de cabeça durante a criação e manutenções futuras. Se eu entendi a pergunta: <style> .linha:after, .linha:before { content: ""; display: table; clear:both } .coluna { float: left } </style> <div class="linha"> <p>Conta:</p> <div class="coluna"> <input type="text" required="required" size="35" name="conta" onkeypress="formatar('####-#', this)" pattern="[0-9.-]+$" maxlength="9" /> </div> <div class="coluna"> <input type="text" required="required" size="35" name="digito" onkeypress="formatar('####-#', this)" pattern="[0-9.-]+$" maxlength="9" style="width: 39px; height: auto; font-family: Arial; font-size: 16px"> </div> </div>
  9. Omar~

    fazer function aceitar variável externa

    Sabe o que é parâmetro? <?php function cores($parametro) { switch($parametro) { case 'verde': $retorno = 'VERDE'; break; case 'azul': $retorno = 'AZUL'; break; default: $retorno = 'INDEFINIDA'; break; } return ("a cor atual é {$retorno}"); }
  10. Omar~

    Url amigável

    O mais simples o possível para utilização de url amigável: https://github.com/Spell-Master/Get-UrlAmigavel
  11. Omar~

    Redimensionar e excluir foto

    Isso é simples $fotoAntiga = 'nome_da_atual.jpg'; unlink('fotos/' . $fotoAntiga); // apaga um arquivo // A partir daqui você salva a nova Com seu código não dar poque você apenas está pegando o arquivo temporário e movendo ele. Acontece que para redimensionar complica pois requer a que crie um cópia da imagem envia e essa cópia você pode alterar não só tamanho como extensão exif etc... Para eu não ter que reinventar a roda já fiz uma classe para tal afim https://github.com/Spell-Master/sm-web/blob/master/exemplos/corte-e-salvamento-de-imagens/ImageUpload.php Então apenas irei demostrar o uso Formulário: Arquivo que recebe: E você também pode está optando em sistema de corte de imagem que o próprio usuário vei cortar sua imagem como quiser. Para esse afim também já desenvolvi uma base: https://github.com/Spell-Master/sm-web/blob/master/exemplos/corte-e-salvamento-de-imagens/
  12. O alerta que o netbeans aplica sobre super globais é pelo fato que você pode erroneamente alterar um valor que possivelmente não era para ser ou não deveria ser alterado. Exemplo: <?php $_POST['alguma_coisa'] = true; var_dump($_POST); Digamos que o arquivo não recebeu dados de um formulário logo a Super Global POST não deveria existir, mas eu criei um índice. O que pode gerar confusão no tratamento de dados. Ou no pior dos cenários: <?php $_SERVER['REQUEST_METHOD']['PATH'] = 'ferrei com meu servidor ^.^'; // Nunca faça isso!!!! Portanto a melhor alternativa é nunca acessar diretamente, a não ser que saiba exatamente o que está fazendo. Eu pessoalmente optaria assim: <?php $filtro = filter_input_array(INPUT_SERVER, FILTER_DEFAULT); echo $filtro['REQUEST_METHOD']; echo '<pre>'; var_dump($filtro); echo '</pre>';
  13. Omar~

    include - Exibir select correspondente

    <?php class Aprendiz { private $dados; private function definirCores() { $this->dados = ['verde', 'amarelo', 'azul']; } private function definirCarros() { $this->dados = ['gol', 'fiat', 'palio']; } public function verCores() { $this->definirCores(); return ($this->dados); } public function verCarros() { $this->definirCores(); return ($this->dados); } } <?php require ('Aprendiz.php'); $objeto = new Aprendiz(); ?> <p>Cores</p> <select> <?php foreach($objeto->verCores() as $cor) { ?> <option><?= $cor ?></option> <?php } ?> </select> <p>Carros</p> <select> <?php foreach($objeto->verCarros() as $carro) { ?> <option><?= $carro ?></option> <?php } ?> </select>
  14. Omar~

    Abrir e fechar uma div como pou-up?

    https://github.com/Spell-Master/sm-web/tree/master/javascript/ModalShow
  15. Omar~

    Mudança do layout em select e buttons

    Acredito que seja problemas de cache. Tente limpar o histórico e cache.
  16. Simples você precisará adicionar um evento change ao seletor. Esse evento uma função irá ouvir esse evento que por sua vez irá realizar uma checagem do valor selecionado. De acordo com cada valor você irá usar a função createElement e então anexar suas propriedades como class, name e o que for mais necessários para você. Uma vez criado o input injete-o dentro de algum elemento, seja o um form ou um div dentro do formulário usando a função appendChild Veja um exemplo que preparei aqui:
  17. Omar~

    Sistema de mensagens não lidas.

    Além do que foi apresentado pelo @Williams Duarte você pode optar por uma coluna tipo "unread" se o usuário selecionou a mensagem faria um update mudando essa mensagem como lida. Só não apresento uma query por desconhecer a estrutura de sua tabela de mensagens.
  18. Omar~

    Como criar botões extras Tinymce Joomla

    Usei o tinymce por quase 5 anos desenvolvi infinitos plugins e aplicações para o mesmo. Enfim hoje para meus clientes quando necessário aplico o ckEditor (o mesmo aqui do fórum, só que aqui é v4). Cara sobre isso de criar plugin fica complicado te ensinar em um post. Aconselho que apenda primeiro Javascript só então comece a estudar os recursos de plugins do tinymce Independente do joomla ou qualquer a funcionalidade, o mesmo se refere a ele. O que você quer um atalho e atalhos não existem na programação.
  19. Omar~

    mudar imagens em divs

    Opa blz?! Antes de responder a algo tão simples e fácil peço que edite seu tópico. Use a ferramenta code o botão "<>" do editor aqui no fórum. A forma de execução de tal afim pode ser contatado nesse script de desenvolvi: https://github.com/Spell-Master/sm-web/tree/master/javascript/ImageGalery
  20. Se eu entendi, você que linkar o usuário para uma página onde nessa página você quer que seja aberta um tab específica. Foi para isso que criei o método openTab. Nesse caso basta passe essa informação por GET Exemplo (em PHP): Página A que contém o link, <a href="endereco_da_pagina?abrir_tab=1">Ir para outra página mostrando a primeira tab</a> <a href="endereco_da_pagina?abrir_tab=2">Ir para outra página mostrando a segunda tab</a> <a href="endereco_da_pagina?abrir_tab=3">Ir para outra página mostrando a terceira tab</a> Página B que contém as tabs tab.openTab(<?= isset($_GET['abrir_tab']) ? $_GET['abrir_tab'] : 1 ?>); Na página então verificamos a existência dessa informação, se ela existir usamos seu valor, caso não usamos o valor 1.
  21. Omar~

    Impedir download de documentos ou certificação!

    Antes de mais nada s solução apresentada pelo @Jack Oliveira é a única a qual você pode aderir pois desse forma como ele disse será impossível acessar diretamente o arquivo (não quer dizer que não possa baixa-lo). Tenha em mente que uma vez renderizado para o usuário no caso um PDF ele possui o arquivo ele poderá acessá-lo, pois quando você o renderiza o browser dele fará o download dele automaticamente assim como qualquer outro conteúdo presente em um documento html seja texto, video, audio ou qualquer outro arquivo. Já vi scripts no GitHub para impressão com marca baseadas em NodeJS, só que não as encontrei novamente (infelizmente) Mesmo assim como disse: - Se renderizou para o usuário já é dele....
  22. Se te ajuda eu desenvolvi um script para essa finalidade https://github.com/Spell-Master/sm-web/tree/master/javascript/TabPaginator <ul class="tab-menu"> <li><a class="tab-link">London</a></li> <li><a class="tab-link">Paris</a></li> <li><a class="tab-link">Tokyo</a></li> </ul> <div class="tab-body"> <h3>London</h3> <p>London is the capital city of England.</p> </div> <div class="tab-body"> <h3>Paris</h3> <p>Paris is the capital of France.</p> </div> <div class="tab-body"> <h3>Tokyo</h3> <p>Tokyo is the capital of Japan.</p> </div> <script> var tab = new TabPaginator(); tab.openTab(1); // Quer dizer que a primeira tab é o padrão (obs.: nesse caso é desnecessário pois por padrão sempre será a primeira) </script> No mais se quiser vertical basta editar o CSS
  23. Omar~

    Página em Branco no PHP

    Provavelmente você obteve essa aplicação comprando-a ou fazendo o download. Pois bem, a única forma é levar a algum programador (responsável) que irá identificar o que está acontecendo porque como disse sem os arquivos em mãos é impossível de saber o que está de errado. Se você comprou no mínimo é exigir do fornecedor a correção do problema.
  24. Eu nunca fiz isso, mas de uma coisa é certa. Se você que somente a contagem se foi publicado o compartilhamento como no facebook por exemplo, você teria que obter algum retorno da plataforma, e de fato não sei se o facebook fornece esse tipo de serviço. Então aqui eu vou supor que clicou em compartilhar já registro que foi compartilhado. Podemos usar a tabela catalogo para verificar se o usuário já fez esse compartilhamento, desde que adicionemos mais uma coluna para isso, e é até prático pois podemos até saber o que cada usuário compartilhou. A ideia que pensei é executar um ajax em um arquivo, esse arquivo verifica se o usuário já compartilhou, caso não ele registra que foi compartilhado, então acionamos um script que irá abrir uma nova aba e redirecionar para. Obs.: Usei meu script para executar ajax: https://github.com/Spell-Master/sm-web/tree/master/javascript/AjaxRequest <a data-site="<?= ConfigPainel('site_url') ?>" data-slug="<?= $dados['slug'] ?>" class="compartilhar" > Shared Facebook </a> <div id="compartilhamento"></div> <!-- Usando esse elemento para gerenciar conteúdo --> <script> document.querySelectorAll('.compartilhar').forEach(definirEvento); function definirEvento(e) { e.addEventListener('click', compartilharLink, false); } function compartilharLink(e) { var link = e.target; compartilharLink.prototype = new AjaxRequest(); compartilharLink.prototype.open('compartilhamento', 'arquivo.php?site=' + link.dataset.site + '&slug=' + link.dataset.slug); } </script> Simples, temos o link de compartilhamento, mas quando clicado aciona a função que obtem os dados de compartilhamento dos atributos "data", assim sendo carregando um arquivo e enviado esses valores por GET. Então no arquivos que carrega: <?php $usuario = "?????"; $query = "SELECT item, id_user FROM catalogo WHERE item='{$_GET['slug']}' AND id_user='{$usuario}'"; // <<<< execute então a query if (!$resultado_do_banco) { /* Não tem o registro do usuário junto ao registro de compartilhamento * Assim sendo aqui registramos que o compartilhamento disso * E fazemos o updade conforme você está fazendo */ ?> <script> window.open('http://www.facebook.com/sharer.php?u=<?= $_GET['site'] ?>catalogo/<?= $_GET['slug']; ?>', '_blank'); </script> <?php } Na suposta nova coluna "item" armazeno o valor slug, então comparando o id do usuário mais isso podemos saber se ele já compartilhou determinada coisa.
  25. Omar~

    Estilizar TR que tenha checkbox marcado

    Também não consegui só com css acho que não dar mesmo. Que seja JS então: <table width="200" border="1"> <tr> <td>&nbsp;</td> <td><input class="marcar" type="checkbox" /></td> </tr> <tr> <td>&nbsp;</td> <td><input class="marcar" type="checkbox" /></td> </tr> </table> <script> var item = document.querySelectorAll('.marcar'); item.forEach(evento); function evento(e) { e.addEventListener('change', colocarCor, false); } function colocarCor(e) { var cor = 'red'; var definirCor = e.target.parentNode.parentNode; // parentNode [1] <td> // parentNode [2] <tr> if (e.target.checked) { definirCor.setAttribute('style', 'background-color:' + cor); } else { definirCor.removeAttribute('style'); } } </script>
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.