Ir para conteúdo
Fórum Script Brasil

Markus Magnus

Membros
  • Total de itens

    352
  • Registro em

  • Última visita

Posts postados por Markus Magnus

  1. Esperai, acho que peguei rsrs, você está tentando verificar o status do $id_user, se sim seu SELECT está errado.

    <?
    // 111 É preciso estar logado para acessar essa opção.
    if ($cargo=="") {
    	echo "<center>É preciso estar logado para acessar essa opção.<br><br>Não é cadastrado?<a href='index.php?pag=cadastro'> Clique Aqui</a>.";
    }
    
    $id = $_GET["id"];
    $today = date("d-m-Y");
    
    // VERIFICACAO //
    $result = mysql_query("SELECT status FROM novo_usuarios WHERE id = $id_user");
    $status = mysql_fetch_assoc($result);
    $status = $status[0];
    
    // CONDICOES //
    $verificador = true;
    if($id_user===$id){
    	echo "<center>Erro. Voce não pode confirmar uma vitoria para voce mesmo... <br> <img src='loading.gif'><br> <meta http-equiv='refresh' content='5;URL=acao.php?pag=verificar'>";
    	$verificador = false;
    }
    switch ($status) {
    	case 'pendente':
    		echo "<center>pendente ... <br> <img src='loading.gif'><br> <meta http-equiv='refresh' content='5;URL=acao.php?pag=verificar'> ";
    		$verificador = false;
    	break;
    	case 'espera':
    		echo "<center>Aguarde a confirmação do seu adversario ... <br> <img src='loading.gif'><br> <meta http-equiv='refresh' content='5;URL=acao.php?pag=verificar'> ";
    		$verificador = false;
    	break;
    	case 'aguardando':
    		echo "<center>Seu oponente notificou sua vitoria aguarde para confirmar ... <br> <img src='loading.gif'><br> <meta http-equiv='refresh' content='5;URL=acao.php?pag=verificar'> ";
    		$verificador = false;
    	break;
    	case 'desertor':
    		echo "<center>Desertor ... <br> <img src='loading.gif'><br> <meta http-equiv='refresh' content='5;URL=acao.php?pag=verificar'> ";
    		$verificador = false;
    	break;
    }
     
    if ($verificador) {
    	// INSERTE SE DER TUDO OK //
    	$result = mysql_query("UPDATE novo_usuarios SET status='aguardando' , oponente='$id_user' WHERE ID='$id' ");
    	$result2 = mysql_query("UPDATE novo_usuarios SET status='espera' , oponente='' WHERE ID='$id_user' ");
    	echo " Aguarde a confirmação do seu adversario ... <br> <img src='loading.gif'><br> <meta http-equiv='refresh' content='5;URL=acao.php?pag=verificar'>";
    }
    
  2. Pra ser sincero me perdi um pouco na lógica do sistema, mas vamos lá.

    Acredito que o problema esteja nos SELECTs da função:

    <?php
    $result = mysql_query("SELECT FROM novo_usuarios WHERE status='livre'");
    $livre = mysql_affected_rows();
    $result = mysql_query("SELECT FROM novo_usuarios WHERE status='pendente'");
    $pendente = mysql_affected_rows();
    $result = mysql_query("SELECT FROM novo_usuarios WHERE status='espera'");
    $espera = mysql_affected_rows();
    $result = mysql_query("SELECT FROM novo_usuarios WHERE status='aguardando'");
    $aguardando = mysql_affected_rows();
    $result = mysql_query("SELECT FROM novo_usuarios WHERE status='desertor'");
    $desertor = mysql_affected_rows();
    

    Já deveria retornar um erro por você não estar colocando os campos que os SELECTs irão retornar, coloque um * ou qualquer campo, pois sem campos o MySQL retorna erro.

    O mysql_affected_rows() serve para contar os registros afetados pela última consulta e o SELECT não afeta os registros, apenas UPDATE, DELETE, INSERT ou REPLACE, para contar as linhas retornadas pelo SELECT use o mysql_num_rows(). Porém uma dica, use um COUNT(*) no SELECT, para contar os registros, e um mysql_fetch_array() para pegar o valor que a consulta fica um pouco mais rápida.

    Enfim provavelmente as variáveis $id, $pendente, $espera, $aguardando e $desertor devem estar com o valor -1 que sempre será diferente do $id_user, por isso todos que acessam à página têm acesso a todo script.

    Outra dica seria evitar elses, eles tornam o código mais difícil de ler.

    Enfim como eu disse, me perdi na lógica do seu script então não sei se isso vai funcionar, mas acho que esse seria um primeiro passo pra solução.

    <?
    // 111 É preciso estar logado para acessar essa opção.
    if ($cargo=="") {
    	echo "<center>É preciso estar logado para acessar essa opção.<br><br>Não é cadastrado?<a href='index.php?pag=cadastro'> Clique Aqui</a>.";
    }
    
    $id = $_GET["id"];
    $today = date("d-m-Y");
    
    // VERIFICACAO //
    $result = mysql_query("SELECT COUNT(*) FROM novo_usuarios WHERE status='livre'");
    $livre = mysql_fetch_array($result);
    $livre = $livre[0];
    
    $result = mysql_query("SELECT COUNT(*) FROM novo_usuarios WHERE status='pendente'");
    $pendente = mysql_fetch_array($result);
    $pendente = $pendente[0];
    
    $result = mysql_query("SELECT COUNT(*) FROM novo_usuarios WHERE status='espera'");
    $espera = mysql_fetch_array($result);
    $espera = $espera[0];
    
    $result = mysql_query("SELECT COUNT(*) FROM novo_usuarios WHERE status='aguardando'");
    $aguardando = mysql_fetch_array($result);
    $aguardando = $aguardando[0];
    
    $result = mysql_query("SELECT COUNT(*) FROM novo_usuarios WHERE status='desertor'");
    $desertor = mysql_fetch_array($result);
    $desertor = $desertor[0];
    
    // CONDICOES //
    $verificador = true;
    if($id_user===$id){
    	echo "<center>Erro. Voce não pode confirmar uma vitoria para voce mesmo... <br> <img src='loading.gif'><br> <meta http-equiv='refresh' content='5;URL=acao.php?pag=verificar'>";
    	$verificador = false;
    }
    if($id_user===$pendente){
    	echo "<center>pendente ... <br> <img src='loading.gif'><br> <meta http-equiv='refresh' content='5;URL=acao.php?pag=verificar'> ";
    	$verificador = false;
    }
    if($id_user===$espera){
    	echo "<center>Aguarde a confirmação do seu adversario ... <br> <img src='loading.gif'><br> <meta http-equiv='refresh' content='5;URL=acao.php?pag=verificar'> ";
    	$verificador = false;
    }
    if($id_user===$aguardando){
    	echo "<center>Seu oponente notificou sua vitoria aguarde para confirmar ... <br> <img src='loading.gif'><br> <meta http-equiv='refresh' content='5;URL=acao.php?pag=verificar'> ";
    	$verificador = false;
    }
    if($id_user===$desertor){
    	echo "<center>Desertor ... <br> <img src='loading.gif'><br> <meta http-equiv='refresh' content='5;URL=acao.php?pag=verificar'> ";
    	$verificador = false;
    }
     
    if ($verificador) {
    	// INSERTE SE DER TUDO OK //
    	$result = mysql_query("UPDATE novo_usuarios SET status='aguardando' , oponente='$id_user' WHERE ID='$id' ");
    	$result2 = mysql_query("UPDATE novo_usuarios SET status='espera' , oponente='' WHERE ID='$id_user' ");
    	echo " Aguarde a confirmação do seu adversario ... <br> <img src='loading.gif'><br> <meta http-equiv='refresh' content='5;URL=acao.php?pag=verificar'>";
    }
    
  3. Se você fizer isso:

    <?php
    
    list($ultimo_cartao, $digito) = explode('-',  $row_clientes['ncartao']);
    $ultimo_cartao++;
    if ($ultimo_cartao%1000 == 0) {
        $digito++;
    }
    echo $ultimo_cartao.'-'.$digito;
    

    Isso vai gerar números de cartões nessa sequencia:

    80001-1
    80002-1
    ...
    80999-1
    81000-2
    81001-2
    ...
    81999-2
    82000-3
    ...
    89999-9
    90000-10
    90001-10
    ...

    Era isso mesmo que você tinha em mente?

  4. Essa consulta irá de entregar:

    -------------------
    |loja_cli|count(*)|
    -------------------
    |loja 01 | 2      |
    |loja 02 | 3      |
    |loja 03 | 5      |
    -------------------
    

    A partir dai você faz um loop para escrever os registros:

    <?php
    //To usando um as pra ficar mais amigavel
    $loja_clientes = mysql_query("SELECT loja_cli, count(*) as qtde FROM tb_clientes GROUP BY loja_cli")or die(mysql_error());
    while($row_loja = mysql_fetch_assoc($loja_clientes)){
    	echo $row_loja['loja_cli'].' --> '.$row_loja['qtde'].'<br />';
    }
  5. O foreach

        foreach($data as &$year)
        {
            $year = '[' . implode(',', $year) . ']';
        }
    

    Você pode resumir com:

    $year = '["'.implode('","', array_keys($data)).'"]';
    

    O segundo implode funcionou? Porque pra mim ele só funcionava com matrizes de um nível e no caso $data tem dois:

    $data armazena índices de vários anos e cada ano armazena mais de um valor.

    Mas se deu baum então ta baum

    Abraços.

  6. Você pode simplificar esse script deixando o MySQL fazer o trabalho pesado para você(Assumindo que o campo loja_cli armazene a identificação da loja):

    SELECT loja_cli, count(*) FROM tb_clientes GROUP BY loja_cli
    

    Essa consulta irá retornar exatamente o que você quer, sem precisar de tratamento nenhum no PHP.

    PS.: No lugar de loja_cli deve estar o campo que armazena a identificação da loja se não for esse campo troque pelo correto.

    Espero ter ajudado.

    Tudo de bom.

  7. Isso, assumindo que a página que o usuário está acessando se chama usuariosonline.php e a página que tem o script que seleciona no banco seja atualizausuariosonline.php o JavaScript ficaria mais ou menos assim:

    <script type="text/javascript">
    setInterval( "clickRight()", 5000 );
    function clickRight()
    {
    	//GET para receber os novos dados
    	$.get('atualizausuariosonline.php', function(data) {
    		//Se atualizausuariosonline.php achar algum registro no banco
    		if(data.length > 0) {
    			//Ativa a Janela Modal
    			$('#usuariosonline a').trigger('click');
    		}
    	//Diz para a função $.get que o que vai retornar é um HTML
    	}, 'html');
    };
    </script>
    

    Ai vem o segundo passo que eu acho mais complicado, já que nunca usei uma janela modal, das duas uma, ou você consegue fazer a abertura da janela se comportar como uma função, como um confirm(), onde o click do usuário faz com que a janela retorne um valor para o script acima e se caso voltar true, você pega o valor da variável data e escreve em #usuariosonline, ou você passa o valor de data para a janela modal, por exemplo colocando o valor em uma variável global, para que o script da janela faça essa última parte.

  8. Entendi, bom eu acho que você deveria mandar os dados dessa forma pro Rgraph:

    [[3,0],[0,1],[1,2],[1,0]]
    

    Colocando os 0 onde não há valores, pois não teria como o Rgraph saber se o valor passado é do tipo "Em Aberto" ou "Em Análise". Para mandar os dados dessa forma eu pensei em fazer desse jeito:

    Assumindo que os dados vindos do banco estão dessa forma:

    <?php
    $registros[] = array('ano' => 2000, 'qtde' => 3, 'tipo' => 'Em Análise');
    $registros[] = array('ano' => 2001, 'qtde' => 1, 'tipo' => 'Em Aberto');
    $registros[] = array('ano' => 2010, 'qtde' => 1, 'tipo' => 'Em Análise');
    $registros[] = array('ano' => 2010, 'qtde' => 2, 'tipo' => 'Em Aberto');
    $registros[] = array('ano' => 2011, 'qtde' => 1, 'tipo' => 'Em Análise');
    

    Esse seria um possível script:

    <?php
    foreach($registros as $reg) {
    	$anos[$reg['ano']][$reg['tipo']] = $reg['qtde'];
    }
    $labels = '["'.implode('","', array_keys($anos)).'"]';
    $dados = '[';
    foreach($anos as $tipos) {
    	$aberto = isset($tipos['Em Aberto']) ? $tipos['Em Aberto'] : 0;
    	$analise = isset($tipos['Em Análise']) ? $tipos['Em Análise'] : 0;
    	$dados .= '['.$aberto.','.$analise.'],';
    }
    $dados .= rtrim($dados, ',').']';
    

    Uma variável armazena a string das labels e a outra armazena os dados.

  9. Posta ai todo os script com os parâmetros que você passa para o Rgraph, dados e labels, por que pelo exemplo que você postou ([[3],[1],[1],[1,2],[1]]) eu não consegui entender o que representa cada dado.

    O que você que mostrar no gráfico são os anos no eixo X, sendo que cada ano terá duas barras, uma "Em Análise" e outra "Em Aberto", no eixo Y terão valores inteiros?

    Por que se sim acredito que você deveria passar para o Rgraph dessa forma:

        var bar = new RGraph.Bar('cvs', [[3,0],[0,1],[1,2],[1,0])
            .Set('labels', ['2000','2001','2010','2011'])
            .Set('colors', ['Gradient(#99f:#27afe9:#058DC7:#058DC7)', 'Gradient(#94f776:#50B332:#B1E59F)'])
            .Set('hmargin', 15)
            .Set('strokestyle', 'white')
            .Set('linewidth', 1)
            .Set('shadow', true)
            .Set('shadow.color', '#ccc')
            .Set('shadow.offsetx', 0)
            .Set('shadow.offsety', 0)
            .Set('shadow.blur', 10)
            .Draw();
  10. Entendi, ainda utilize o setInterval(), mas troque a ordem dos acontecimentos na função que ele chama. Primeiro faça o GET para o servidor faça a verificação do resultado e se voltar uma atualização exiba o modal e se voltar um SIM do modal atualiza a DIV.

  11. O que você deveria estar usando é um $.get() em vez de um $.load(). E o $(this) deve estar dentro do evento que dispara a função.

    <script type="text/javascript">
    $(document).ready(function() {
    	//Só Deus sabe quem é o $(this) aqui
    	$("#duel a").click(function(event){
    		#Aqui o $(this) é o <a> que foi clicado
    		event.preventDefault();
    		//O get faz uma requisição de uma url e pode executar funções com o valor de retorno
    		$.get($(this).attr('href'), function(data){
    			//Só oara ver se está funcionando, depois você pôe a sua função normal
    			alert(data);
    			//O append irá escrever o valor de data dentro de #conteudo
    	     		//$("#conteudo").append(data);
         		//Diz que você está esperando um HTML, poderia ser XML, JSON, etc...
    		}, 'html');
    	});
    });
    </script>
    

    Outro problema é a forma como você está esperando os dados do usuário no paginadesafio.php. Lá você espera uma requisição que passe um COOCKIE de sessão para que o PHP identifique o usuário, porém se eu não me engano o $.get() ou o $.load() não vão enviar esse COOCKIE, logo você deve passar esse valor para paginadesafio.php via GET, é só alterar a forma de escrever o valor de href em usuariosonline.php.

    <div id="duel"><a href="desafiar.php?user=<?php echo $_SESSION['userid']; ?>&id=<?php echo $dnn['id']; ?>&nick=<?php echo $dnn['username']; ?>">Duel</a></div>
    

    E acrescentar uma consulta no paginadesafio.php

    <?php
    include('conexao.php');
    ?>
    <?php
    if(isset($_GET['userid'])) {
    	$userid = mysql_query("SELECT nick FROM users WHERE userid = ".$_GET['userid']) or die(mysql_error());
    
    	$userid = mysql_fetch_assoc($userid);
    
    	$userid = $userid['userid'];
    
    	 mysql_query("INSERT INTO duel (id, desafianteid, desafiantenick, status, desafiadoid, desafiadonick, resultadofinal) VALUES ('', '" . $userid . "', '" . $_SESSION['username'] . "', 'pendente', '" . $_GET["id"] . "', '" . $_GET["nick"] . "', '0')") or die(mysql_error());
    
    	echo " Seu desafio foi enviado com sucesso, aguarde a confirmacao do seu oponente ";
    } else {
    	echo 'Voce não esta logado.';
    }
    ?>
    

    Se não for isso é quase isso rsrsrs.

    Espero ter ajudado.

    Tudo de bom.

  12. Sei que é quase chover no molhado, mas só pra explicar o porque...

    Quando o formulário é enviado para o servidor os valores dos campos são indexados em $_(POST|GET|REQUEST) pelo valor do parâmetro name de cada campo e não pelo valor do parâmetro id.

    Abraços.

  13. O while não pode ser concatenado, você deve colocar o texto em uma variável e utiliza-la dentro do while para acrescentar o resto do texto que você quer.

    <?php
    $mensagemHTML = '<table width="100%">
                    <thead>
                      <tr style="text-align:left;">
                        <th style="width:20%">REF</th>
                        <th style="width:20%">QTD</th>
                      </tr>
                    </thead>
                    <tbody>';
    while($row_item = mysql_fetch_assoc($itens_pedido)){ 
    	$mensagemHTML .= '
                      <tr>
                        <td style="text-transform:uppercase;"> '.$row_item['cod_produto'].'</td>
                        <td style="text-transform:uppercase;">'.$row_item['qtd'].'</td>
                      </tr>';
    } 
    $mensagemHTML .= '</tbody>
                  </table>';
    ?>
    

    Espero ter ajudado.

    Tudo de bom.

  14. Para resolver isso você deve verificar no PHP antes de fazer a consulta e exibir o formulário novamente se os campos não forem preenchidos ou verificar com JavaScript mesmo não deixando o usuário dar um submit no formulário sem preenche-lo.

    Só um detalhe, o campo os_codigo é um número inteiro correto? Se sim se imagina usando o formulário. Ex.:

    Eu digito 2 no campo código e clico em pesquisar, ao fazer isso eu quero a OS de código igual a 2 e não todas as OSs que tenham 2 no código.(21, 612, 2495). Sacou? Mas enfim isso vai do que você quer realmente.

    Abraços

  15. Ah sim faça a conexão no banco e a consulta acrescentando esses "or die('...')" porque se o problema for na conexão ou consulta no banco ele vai escrever na tela.

    <?php
    $conexao = mysql_connect('localhost', 'usuario', 'senha') or die('<br />Não foi possível conectar ao servidor: '.mysql_error());
    mysql_select_db('database', $conexao) or die('<br />Não foi possível conectar ao banco de dados: '.mysql_error());
    .
    .
    .
    $resultado = mysql_query('SELECT...', $conexao) or die('<br />Não foi possível fazer a consulta: '.mysql_error().'<br />'.$query);
    .
    .
    .
    ?>
    
  16. Coloca essas três linhas no início do seu código para ele escrever todos os erros:

    <?php
    ini_set('display_errors', 1);
    ini_set('display_startup_erros', 1);
    error_reporting(E_ALL);
    ?>
    

    E antes do loop que escreve os registros de um echo em $result, para ter certeza de quantos resgistros retornaram da consulta.

    Espero ter ajudado.

    Tudo de bom.

  17. Primeiro entenda que não tem como você impedir que os funcionários enviem e-mails para quem quiserem, se você criar algo On-Line eles usarão algum programa Desktop, se você usar um programa eles acessarão a página web do hotmail e afins para enviar o e-mail. Para que isso desse certo deveria ser uma aplicação Desktop e bloqueios no firewall no gateway da rede para que ninguém acesse os sites de e-mail, mas para aplicações em Desktop peça ajuda no fórum de Java ou Delphi, PHP até faz programas Desktop, mas eu nunca vi um rodando, deve ser porque não compensa. Enfim...

    O que da para fazer é uma página web com um formulário pedindo nome do remetente, e-mail do destinatário, assunto e corpo da mensagem, esse form envia um e-mail para o admin@ com essas informações e esse cara faz o que você tinha dito. E orientar a todos na empresa a usarem esse painel.

    Ou mais simples simplesmente oriente a todos fazerem isso com seus Outlooks da vida.

    Se quiser ter alguma certeza instale algum Ardamax para monitorá-los(Obs.: Avise-os que você está instalando, alias faça-os assinarem um termo de ciência, caso contrário é crime, assim você poderá usar esses dados como provas em tribunais e etc)

    Espero ter ajudado.

    Tudo de bom.

  18. Não tem como você fazer isso com PHP, pois só é rodado no servidor, logo não tem como o servidor saber que página está requisitando.

    Mas tem como você fazer isso com JavaScript se as duas páginas estão no mesmo domínio, se elas estiverem em domínios diferentes tem uma parada de permissão (Access-Control-Allow-Origin) que é configurada no Servidor HTTP com o Apache da pra configurar no .htaccess.

    Com o JavaScript depois de pegar a informação você teria que fazer um Ajax ou então recarregar a pagina filha.

    Dependendo do caso acredito ser mais simples usar include/require no PHP mesmo do que iframe.

    Da uma explicada melhor ai do que você quer.

    Espero ter ajudado

    Tudo de bom.

  19. Depois de seguir todos os passos do tutorial e verificar que está tudo funfando, crie mais um campo varchar no banco, um input text no form, arrume o insert para que o valor digitado no campo seja inserido no banco, por fim no loop que escreve as thumbs escreva também a legenda da imagem. Agora para que a legenda apareça no lightbox eu não sei.

    O item 2 eu não entendi o que você quis dizer.

    Espero ter ajudado.

    Tudo de bom.

  20. Na verdade o exemplo deveria ser assim:

    <?php
    $sql = mysql_query("");/// pega os dados da tabela
    $quebra= 3; ///antes da while da select
    $contatdor = 1;
    while(){
    	echo "$campo"; //registros da consulta
    	if($contatdor == $quebra){
    		echo "<div class='quebralinha'></div>";
    		$contatdor = 1;
    	}
    	$contatdor++;
    }
    

    Atribui um para o contador, toda vez que termina o loop acrescenta um para o contador, por isso essa linha deve ficar FORA do if e quando você escrever a quebra de linha o contador deve voltar a zero.

    Espero ter ajudado.

    Tudo de bom.

×
×
  • Criar Novo...