Ir para conteúdo
Fórum Script Brasil

ikkinet

Membros
  • Total de itens

    435
  • Registro em

  • Última visita

Tudo que ikkinet postou

  1. O algorítmo do negócio é mais ou menos simples. $i = $j = 1; $str = ''; $sql = "SELECT * FROM tabela"; $query = mysql_query($sql); $total = mysql_num_rows($query); while($row = mysql_fetch_array($query)) { $str .= "INSERT INTO tabela VALUES ('".$row[0]."', '".$row[1]."', '".$row[2]."', '".$row[3]."');\n"; $j++; if($j % 100000 === 0 || $j == $total)) { $arquivo = fopen('arquivo'.$i.'.txt', 'a'); fwrite($arquivo, $str, strlen($str)); fclose($arquivo); $i++; $str = ''; } } Bom.. Eu não testei e, claro, devem ser feitas as adaptações necessárias, como os campos e o nome da tabela.. Mas a idéia é mais ou menos esta.. O lance do INSERT INTO no texto é justamente pra funcionar como um backup pra incluir esses valores.. O nome do arquivo ou o diretório em que ele vai ficar também podem ser dinamicos e incluirem a data e tal.. Enfim, como disse, apenas a idéia de quebrar de 100.000 em 100.000..
  2. ikkinet

    Gerá Códigos De Barra

    Acho que o valor está agregado ao código, e não explícito nele... Quando você coloca o valor, coloca o valor naquele determinado código que gera as barras. Pro que você quer, no caso, acho que terá que criar, no sistema que irá ler, também, um código de barras que o identifica como pernsonalizado e que contém o valor em si mesmo. Por exemplo: 1001001001 | 4,58 -> Produto 1 1001001002 | 5,40 -> Produto 2 0000000241 | 2,41 -> Personalizado 0000001327 | 13,27 -> Personalizado Acho que é algo mais ou menos assim que você quer, né?? Se for, é simples. Faz a verificação dos primeiros (no exemplo) 5 dígitos. Se todos forem 0, então o valor é personalizado e está já no código. Se não for, pesquisa num banco pra saber se possui aquele código. Bem por alto, dá pra fazer um monte de outras coisas.. Mas a teoria é mais ou menos por aí.. Espero que dê pra clarear as idéias..
  3. ikkinet

    Arredondar valores

    O único problema aí é que não vai poder considerar como numérico. Se considerar como numérico, e o valor for 23.70, vai ficar 23.7 e depois do ponto ele verificará apenas 7 e não 70, por exemplo.
  4. ikkinet

    ajuda Cronjob

    O PHP só é executado quando alguém (ou alguma coisa) o executa. Então não tem como agendar uma execução do PHP, pelo próprio PHP.. Tem que usar o cron, mesmo.
  5. ikkinet

    Tabela de produtividade

    Cara... Sendo esta a estrutura que eu usei aqui, para fazer testes: CREATE TABLE funcionarios ( id varchar(10) NOT NULL, servico varchar(10) NOT NULL, executado enum('Sim','Não') NOT NULL ); Com, este comando, consegui fazer o que você queria: SELECT tf.id, COUNT(tf.servico) total, func.exec, (func.exec/COUNT(tf.servico)*100) porcent FROM funcionarios tf INNER JOIN (SELECT id , count(executado) exec FROM funcionarios WHERE executado = 'Sim' GROUP BY id) func ON tf.id = func.id GROUP BY id ORDER BY porcent DESC Agora é só adaptar pra sua aplicação.
  6. ikkinet

    ajuda Cronjob

    Primeiro: (...) 3.8 Não é permitida a postagem de mensagens com a finalidade de manter o tópico no início da lista (up), nem de mensagens que não se refiram ao assunto do tópico (flood). Caso isso ocorra, as mensagens serão excluídas e os autores, advertidos. (...) http://scriptbrasil.com.br/forum/index.php?act=boardrules Segundo: Respondendo à sua pergunta, toda tarefa que execute em um determinado horário precisa, sim, de algum agendador de tarefas para que seja automatizado. No caso de ser um servidor linux, tem sim que usar o cron para agendar um determinado script que faça o que você quer. Para a configuração do cron, basta pesquisar sobre no Google ou no fórum de Linux, daqui.
  7. O textarea não possui a propriedade value. Por ser um campo de texto longo, ele possui a tag de abertura <textarea (...)> e a tag de fechamento </textarea>. Tudo o que vier entre estas duas tags será exibido dentro do textarea. Assim, basta que você passe o <?php echo $linha['atividades']; ?> para fora do textarea, antes da tag de fechamento.
  8. ikkinet

    Duvida com banco de dados...

    Vai ter que usar o INNER JOIN. Ou melhor, não vai ter, mas é uma boa opção. SELECT empresa.nome AS nome_empresa, departamento.* FROM departamento INNER JOIN empresa ON departamento.cod_empresa = empresa.cod A idéia básica é fazer uma junção das duas tabelas (INNER JOIN) onde houver referência cruzada. E a referência que vai ser usada para cruzar estas informações está em ON, ou seja, quero que pegue o nome da tabela empresa e renomeie (apenas no SELECT) para nome_empresa (isto evita que, se houver nome na tabela departamento, haja ambiguidade) e todos os campos da tabela departamento, cruzando estas duas tabelas onde o cod_empresa na tabela departamento for igual ao cod da tabela empresa. Deu pra entender??
  9. Esse echo do select, pelo que acho, não está no loop while, né?? Então. Dessa forma, ele não vai pegar o código do produto que você escolheu, e sim, nenhum.. O que você deve fazer é, no lugar de $cod_poduto, utilizar this.value do Javascript. echo "<select name=\"cod_produto\" onchange=\"java script:window.open('combo.php?cod_produto='+this.value, 'TESTE', 'location=yes', 'height = 400, width = 500')\">";
  10. Se você quiser saber, ainda, em que posição (chave do array) o valor está, pode usar o array_search. http://php.net/array_search
  11. ikkinet

    Exibir Imagens do BD MySQL

    Xará, Pelo que pude entender, ele não guarda apenas o caminho da fot no BD, mas sim a foto em um campo BLOB. Se for isso, Sokratis, então você deve criar um script que funcionará como se fosse uma imagem, alterando o header para mostrar a imagem. Essa nova página é que seria usada como SRC na IMG.. mostrar_foto.php $sql = "SELECT * FROM imagestore WHERE image_codigo = ".$_GET['codigo']; $query = mysql_query($sql); $row = mysql_fetch_array($query); header("Content-type: image/jpeg", true); echo $row['image_data']; E pra mostrar <tr> <td><img src="mostrar_foto.php?codigo=<?php echo $row_Recordset1['image_codigo']; ?>" alt="" name="imagem1" width="150" height="150"></td> <td> </td> <td><img src="mostrar_foto.php?codigo=<?php echo $row_Recordset1['image_codigo']; ?>" alt="" name="imagem2" width="150" height="150"></td> <td> </td> <td><img src="mostrar_foto.php?codigo=<?php echo $row_Recordset1['image_codigo']; ?>" alt="" name="imagem3" width="150" height="150"></td> </tr> Bem.. Algo bem parecido com isso.. Só fazer as adaptações necessárias que deve resolver.
  12. Acho que é justamente por causa da variável $tempo.. É ela quem vai fornecer o "mesdia" atual para comparar.. Antes do IF, faz isso: $tempo = date('md');
  13. Eu havia entendido que o campo nome da tabela dele referia-se ao nome de usuário, ou login. Mas se for o nome real, também não aconselho que ele seja definido como primário.
  14. Antes de tudo, coloque o campo nome da tabela login como Chave Primária. Isso fará com que não exista nenhum nome igual ao outro. Depois disso, é só tratar. Há várias maneiras, mais simples ou mais complexas, dependendo do seu nível de conhecimento.. Uma solução mais simples, mas menos otimizada é procurar no banco, antes de incluir, se já existe este usuário, então mostra uma mensagem de erro e não insere. Se inserir, o próprio banco vai dar erro.. Outra solução é tirar o or die do mysql_query. Ao invés disso, coloque @ antes (não sei se, por padrão, ao inserir um registro duplicado ele retorna warning ou error, então é melhor previnir).. Logo depois, teste o mysql_errno(). Essa função retorna o resultado de um consulta do SQL. Aí, é só comparar o código (numérico) pra ver qual foi o erro. Nesse caso, seria o código 1062. Nesse link [http://dev.mysql.com/doc/refman/5.0/en/err...ges-server.html] há uma lista com vários códigos possíveis..
  15. ikkinet

    PORCENTAGEM

    Acho que isso não tem muito a ver com PHP, em si.. O valor com desconto é o próprio valor subtraído do valor multiplicado pela porcentagem. Assim: $preço = 50; $desconto = 30; // em porcentagem $valor = $preço - $preço * $desconto / 100;
  16. ikkinet

    exibir

    Então.. Tem várias maneiras.. Primeiro, todas as entradas (linhas) seguem este mesmo padrão? Se sim, o que se pode fazer é um explode por espaço e pegar os últimos 5. Pode até ter um jeito mais fácil, mas eu faria assim. $array = explode(' ', $linha); for($i = count($array)-1; $i >= count($array)-5; $i--) { $data[] = $array[$i]; } $data = implode(' ', array_reverse($data)); Como disse, deve ter um jeito bem mais fácil, mas esta também é uma solução.
  17. ikkinet

    nota fiscal

    Sá uma olhada se isso aí está habilitado no seu PHP.. Pelo que pude observar na página da documentação, só está disponível por CVS, por enquanto..
  18. Na verdade, não é bem assim.. O que acontece é que, ao fazer uma operação de subtração, o PHP vai interpretar a data como número, até encontrar o -, caractere a partir do qual ele ignorará todo o restante. Desta forma, o que ele faz é apenas um subtração simples do ano, ignorando o mês e o dia. Assim, se você nasceu em 1980-01-28 e a data do servidor Web estiver em 2008-01-01, estas quatro linhas retornarão 28, e não 27 como deveria ser.
  19. E aí?? Como está seu código até agora??
  20. Então.. Essa função só retorna o último ID imediatamente inserido.. Ele não retorna quais é o último Id de uma tabela, entendeu?? Agora, se você vai utilizar igual nesse caso, LOGO DEPOIS de um INSERT, aí sim.. Funciona corretamente.
  21. Entre o INSERT do Usuario e o do Personagem, você pode usar a função do php mysql_insert_id(), que retorna o último Id que foi colocado em uma query. Dessa forma, você pegaria o ID do Usuário que acabou de cadastrar e o colocaria no Usuario do campo Personagens. $query = "INSERT INTO `Usuarios` ( `Id` , `Nome` , `Sobrenome` , `Sexo` , `Email` , `Login` , `Senha` , `Classe` , `IsAdm` ) VALUES ('', '$nome', '$sobrenome', '$sexo', '$email', '$login', '$senha', '$classe', '')"; mysql_query($query,$conexao); $Id_Usuario = mysql_insert_id(); // Pega o Id do Usuário que acabou de cadastrar. $colocar = "INSERT INTO `Personagens` ( `Id` , `Usuario` , `Cidade` , `Arma` , `Classe` , `Nick` , `Foto` , `Bando` , `Lvl` , `Forca` , `Agilidade` , `Inteligencia` , `HpAtu` , `HpTot` , `MpAtu` , `MpTot` , `ExpAtu` , `ExpLvl` , `Berrys` ) VALUES ('', '$Id_Usuario', '', '', '$classe', '$nick', '$foto', '', '$level', '$for', '$agi', '$int', '$hpatu', '$hptot', '$mpatu', '$mptot', '$expatu', '$explvl', '$berrys')"; O restante pode continuar o mesmo.. Vê se isso dá certo.
  22. Uma característica é que, na teoria, não tem como mudar apenas uma linha.. Como o meu xará disse, o que se faz é ler o conteúdo do arquivo para um array, modifica o arquivo e reescreve tudo de novo no arquivo.. Mudar somente determinada linha, até onde sei, não dá..
  23. Para fazer a soma, pode-se usar: SELECT SUM(valor_venda) as valor_venda_total FROM tabela
  24. ikkinet

    problemas com array

    Olá.. Antes de qualquer coisa, você não é esse cara aqui não, né? http://scriptbrasil.com.br/forum/index.php?showuser=8360 Que postou um script parecido com esse seu aí, três vezes, já: Aqui: http://scriptbrasil.com.br/forum/index.php?showtopic=124172 Aqui: http://scriptbrasil.com.br/forum/index.php?showtopic=124301 E aqui: http://scriptbrasil.com.br/forum/index.php?showtopic=124189 Porque, se for, não vai adiantar muito ficar enviando, repetidamente, a mesma pergunta, né? Se ninguém respondeu antes, não vai repsonder agora. Além disso, viola as regras [http://scriptbrasil.com.br/forum/index.php?act=boardrules], cuja norma violada, transcrevo a seguir:
  25. O ideal é definir quais os dados quer mostrar, pra evitar estas "ambiguidades". Quando você coloca só o *, quer dizer que quer que apareça todos os atributos de todas as tabelas que você incluiu na pesquisa.. Logo, se em uma tabela houver codigo e na outra também houver um atributo com o mesmo nome, vai dar este erro.. O melhor é fazer assim: SELECT tb.*, te.estilo FROM bandas tb INNER JOIN estilos te ON ..... O tb e te são apelidos para as tabelas, para ficar mais fácil na codificação.
×
×
  • Criar Novo...