Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

diegoaugusto

Sistema de prova de laço

Recommended Posts

Boa tarde Pessoal, peguei um trabalho para fazer e falta apenas um detalhe que já quebrei a cabeça.

No meu banco eu cadastro todos os laçadores de cabeça e os laçadores de pez em 2 tabelas distintas:

 

create table lacadores (
id_lacador int(11) not null auto_increment,
id_evento int(11) default null,
nome varchar(255) default null,
valor float(9,2) default null,
primary key(id_lacador)
);

create table pezeros (
id_pezero int(11) not null auto_increment,
id_evento int(11) default null,
nome varchar(255) default null,
valor float(9,2) default null,
primary key(id_pezero)
);

Apos o cadastro todos os laçadores tem que correr "LAÇAR UM BOI" com todos os pezeros. Então criei 2 tabelas para gerar como se fosse as rodadas. O problema que nem pezero nem laçador pode correr mais de uma vez em cada rodada.

 

create table bolao (
id_bolao int(11) not null auto_increment,
id_evento int(11) default null,
rodada varchar(255) default null,
primary key(id_bolao)
);

create table bolao_cruzamentos(
id_bolao_cruzamento int(11) not null auto_increment,
id_bolao int(11) default null,
id_lacador int(11) default null,
id_pezero int(11) default null,
primary key(id_bolao_cruzamento)
);

Fiz de uma maneira aqui puxando pelo while todos cadastros de laçadores e fazendo a rodada de cada laçador gravando com cada pezero.

 

O problema e que na primeira rodada todos os laçadores corre com o mesmo pezero.

 

Como eu faria para fazer corretamente a inserção na tabela?

Compartilhar este post


Link para o post
Compartilhar em outros sites

primeiro de tudo, primeirinho de tudo mesmo, por que duas tabelas para os laçadores? tu pode ter um campo na tabela de nome tipo_lacador por exemplo pra dizer se é cabeçudo ou pezudo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tinha pensado pela forma dos 2 whiles nem me atentei a criar um campo onde 1 poderia ser cabeceiro e 2 pezeiro mais creio que de ambas as formas minha duvida seguira a mesma como fazer para criar a rodada de uma maneira que um cabeceiro e um pezeiro so corra uma vez por rodada

Compartilhar este post


Link para o post
Compartilhar em outros sites

tu pode ter uma tbRodadas e nela meteres os dados da rodada tipo id, data, hora, numero(se for o caso) e demais detalhes concernente a rodada. eu não faço ideia de como funciona essas parada aí de rodeio e tals mas a ideia geral é cada tabela ter somente os dados referentes ao que ela vai guardar. tabela de rodada só com dados da rodada. aí acho que vai precisar de uma outra tabela tbRodadaDetalhes para os detalhes da rodada tipo id da rodada na tbRodadas, id de quem correu, pontuação do corredor e tal. aí na hora de cadastrar o corredor só ver se ele já tem um registro praquela rodada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

na verdade data, hora, pontuação não é necessário, esse cliente precisa apenas gerar a rodada por exemplo:

 

Laçadores:
Diego
Carlos
Henrique
Wesley
Fabio
 
Pezeros:
Lucas
Eduardo
Marcio
Luciano
Vitor
 
ai criar as rodadas de competição assim:
 
1 Rodada:
Diego e Lucas
Carlos e Eduardo
Henrique e Marcio
Wesley e Luciano
Fabio e Vitor
 
2 Rodada 
Diego e Eduardo
Carlos e Lucas
Henrique e Luciano
Wesley e Vitor
Fabio e Marcio 
 
e assim por diante ate todos os Laçadores correrem com os pezeros.
 
Desculpa ate talvez para alguns seja algo simples, mais tem apenas 4 meses que trabaho com programação e estou apanhando d+ nessa tela que preciso criar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

então vamos lembrar das matrizes de nossa querida matematica

 

temos os grupos letras e numeros

ABCDE

12345

 

aí relaciona todos com todos igual o brasileirão

 

A e 1

A e 2

A e 3

A e 4

A e 5

 

B e 1

B e 2

B e 3

B e 4

B e 5

...

 

a mesma coisa na programção tipo

 

$alpha = array('A', 'B', 'C', 'D', 'E'); // array com as letras
$nums = array('1', '2', '3', '4', '5'); // array com os números

$na = count($alpha); // pegamos a quantidade de letras na array $alpha
$nn = count($nums); // pegamos a quantidade de números na array $nums

// agora bora lá distribuir todos com todos
for($l = 0; $l < $na; $l++){
    for($n = 0; $n < $nn; $n++){
        echo $alpha[$l] . ' com ' . $nums[$n] . '<hr>';
    }
}


 

mais ou menos isso aí veja se pega a lógica

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum legal, agora uma duvida relacionada mais ao PHP, como eu colocaria por exemplo 

$alpha tudo que tem no meu banco dentro de um array.

 

Hoje uso assim:
 

while ($vetor=mysql_fetch_array($sql)) {

}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso aí já é um array, olha o nome array depois do fetch. a lógica é a mesma só mudou for por while. for, while e foreach tem a mesma função de iterar sobre arrays com algumas poucas diferenças. se tem duas tabelas como falou vais botar as duas em dois whiles no lugar das letras e números do meu exemplo. só vais mudar isso, for por while e minhas arrays pelas das duas tabelas. agora se vais usar uma tabela só como falei no primeiro comentário aí vai ter que separar cabeças de pés. aí tu pode montar outras duas arrays cada uma com seu tipo. vamos supor que na tabela tem os campos nome com o nome da figura e tipo com o cabeceiro ou pezeiro

$arr_cab = array();
$arr_pez = array();

while ($vetor=mysql_fetch_array($sql)){
    if($vetor['tipo'] == 'cabeceiro'){
        array_push($arr_cab, $vetor['nome']);
    }else{
        array_push($arr_pez, $vetor['nome']);
    }
}

 

array_push é uma função que acrescenta elementos a uma array já existente. agora é só iterar sobre $arr_cab e $arr_pez no lugar das duas que eu dei de exemplo anteriormente

Compartilhar este post


Link para o post
Compartilhar em outros sites

marsolim o problema e que fica em ordem.

se eu tenho 2 cabeceiros e 2 pezeiros por exemplo

 

Cabeceiro:

Bruno

Wesley 

 

Pezeiro:

Vitor

Lorran

 

quando esta gerando as rodadas ta ficando assim:

 

Bruno e Vitor

Wesley e Vitor

Bruno e Lorran

Wesley e Lorran

 

na rodada esta ficando todos cabeceiros com o mesmo pezeiro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

a lógica no caso é formar todas as rodadas nesse loop e fazer o cadastro de todas elas de uma vez só ou seja. seguindo meu exemplo anterior ficaria assim

RODADA 1
A - 1
B - 2
C - 3
D - 4
E - 5

RODADA 2
A - 2
B - 3
C - 4
D - 5
E - 1

RODADA 3
A - 3
B - 4
C - 5
D - 1
E - 2

RODADA 4
A - 4
B - 5
C - 1
D - 2
E - 3

RODADA 5
A - 5
B - 1
C - 2
D - 3
E - 4

 

vamos dar uma incrementada mais ou menos assim

 

$arr_cab = array();
$arr_pez = array();

while ($vetor=mysql_fetch_array($sql)){
    if($vetor['tipo'] == 'cabeceiro'){
        array_push($arr_cab, $vetor['nome']);
    }else{
        array_push($arr_pez, $vetor['nome']);
    }
}

$nc = count($arr_cab); // pegamos a quantidade de letras na array $alpha
$np = count($arr_pez); // pegamos a quantidade de números na array $nums
$i = 0;

// agora bora lá distribuir todos com todos
for($c = 0; $c < $nc; $c++){
    for($p = 0; $p < $np; $p++){
        $i = (($i == $np) ? 0 : $i++);
        echo $arr_cab[$c] . ' com ' . $arr_pez[$i] . '<hr>';
    }
}

ve se desse jeito dá o echoa a lista do jeito que espera. aí a ideia depois disso é formar a query pra cadastrar todas as rodadas de uma vez ou seja já tem os brody tudo cadastrado e agora vai gerar as rodadas pra eles igual o brasileirão mesmo não é?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso e basicamente igual ao brasileirão, mais dessa maneira não funcionou, ate que os cabeceiros ele pegou todos, mais os pezeiros so o primeiro da lista.

 

no meu banco eu possuo 2 cabeceiros e 2 pezeiros

 

 

bolao.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

estou terminando um trabalhinho aqui, já posto a solução

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha tenta adaptar o meu modelo ao seu aí trocando as arrays

$alpha = array('A', 'B', 'C', 'D', 'E'); // array com as letras
$nums = array('1', '2', '3', '4', '5'); // array com os números

$na = count($alpha); // pegamos a quantidade de letras na array $alpha
$nn = count($nums); // pegamos a quantidade de números na array $nums

$i = 0;

// agora bora lá distribuir todos com todos
for($n = 0; $n < $na; $n++){
    for($a = 0; $a < $na; $a++){
        echo $alpha[$a] . ' com ' . $nums[$i] . '<br>';
        $i = (($i == $nn - 1) ? 0 : $i + 1);
    }
    $i += 1;
    echo '<hr>';
}

MEU RESULTADO

 

A com 1
B com 2
C com 3
D com 4
E com 5


A com 2
B com 3
C com 4
D com 5
E com 1


A com 3
B com 4
C com 5
D com 1
E com 2


A com 4
B com 5
C com 1
D com 2
E com 3


A com 5
B com 1
C com 2
D com 3
E com 4

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marsolim funcionou quase que perfeitamente, o unico problema que ainda estou tendo e quando o numero de cabeçeiros e pezeiros não é igual.

 

Por exemplo se eu tiver mais pezeiros ele só cria a primeira rodada, e se eu tiver mais cabeceiros ele cria um monte de rodada sem ninguem como pezeiro, mais no mais e isso mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

e como deve ficar quando assim fores? tipo se tiver mais cabeça ou mais pé?

tipo mais cabeça
========================
| CABEÇA   | PÉ        |
========================
| batman   | flash     |
|----------+-----------|
| gavião   | superman  |
|----------+-----------|
| dick     |           |
|----------+-----------|
| guy      |           |
|----------+-----------|

tipo mais pé
========================
| CABEÇA    | PÉ       |
========================
| aranha    | ciclope  |
|-----------+----------|
| wolverine | mercurio |
|-----------+----------|
|           | iron man |
|-----------+----------|
|           | tocha    |
|-----------+----------|

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Tudo bem pessoal?
       
      No código abaixo, estou fazendo uma consulta nas tabelas, banners e banners_referencia
      Meu objetivo é trazer resultados com valores iguais ao nome da cidade declarada na $cidade ou resultados com a referencia Total.
      O problema é que está trazendo todos os resultados. Tenho 10 linhas, 1 com o nome da cidade e duas com o valor Total, então o resultado teria que ser de apenas 3 linhas, mas mostra tudo.
       
      $banner = "SELECT A.*, B.* FROM banners A, banners_referencia B WHERE B.cod_referencia = A.cod_referencia AND A.cidade = '$cidade' OR B.referencia = 'Total' ORDER BY RAND()";
      $banner = mysqli_query($conexao, $banner) or die ("Banner não encontrado");
      while($busca= mysqli_fetch_array($banner)){
          print $busca['cidade'].'<br>';
      };
       
      Alguém consegue me ajudar?
    • Por Rafael_Ferreira
      Não consigo carregar a imagem do captcha do meu formulário. Foi testado com o xampp e easyphp. Também não carregou a imagem de outros captcha. 
       
       
    • Por luiz monteiro
      Olá, tudo bem?
       
      Estou melhorando meu conhecimento em php e mysql e, me deparei com o seguinte. A tabela da base de dados tem um campo do tipo varchar(8) o qual armazena números. Eu não posso alterar o tipo desse campo. O que preciso é fazer um select para retornar o números que contenham zeros a direita ou a esquerda.
      O que tentei até agora
       
      Ex1
      $busca = $conexao->prepare("select campo form tabela where (campo = :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form']);
       
      Se a direita da string $_REQUEST['campo_form'] termina ou inicia com zero ou zeros, a busca retorna vazio.
      Inseri dados numéricos, da seguinte maneira para testar: 01234567;  12345670: 12345678: 12340000... entre outros nessa coluna. Todos os valores que não terminam ou não iniciam com zero ou zeros, o select funciona.
       
       
      Ex2
      $busca = $conexao->prepare("select campo form tabela where (campo = 0340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex3
      $busca = $conexao->prepare("select campo form tabela where (campo = '02340001' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex4
      $busca = $conexao->prepare("select campo form tabela where (campo like 2340000) ");
      Esse número está cadastrado, mas não retorna.
       
      Ex5
      $busca = $conexao->prepare("select campo form tabela where (campo like '12340000') ");
      Esse número está cadastrado, mas não retorna.
       
      Ex6
      $busca = $conexao->prepare("select campo form tabela where (campo like '"12340000"' ) ");
      Esse número está cadastrado, mas não retorna.
       
       
      Ex7
      $busca = $conexao->prepare("select campo form tabela where (campo like :campo) ");
      $busca->bindParam('campo', $_REQUEST['campo_form'])
      Não retorna dados.
       
      O  $_REQUEST['campo_form'] é envio via AJAX de um formulário. 
      Usei o gettype para verificar o post, e ele retorna string.
      Fiz uma busca com número 12345678 para verificar o que o select retorna, e também retrona como string.
       
      Esse tipo de varchar foi usado porque os números que serão gravados nesse campo,  terão zeros a direita ou na esquerda. Os tipos number do mysql não gravam zeros, então estou usando esse. O problema é a busca.
      Agradeço desde já.
       
       
    • Por daemon
      Boa tarde,
       
      Eu tenho uma rotina que faz uma leitura do arquivo .xml de vários sites.

      Eu consigo pegar o tópico e a descrição, e mostrar a imagem que esta na pagina do link.
      Para isso utilizo esta função:
      function getPreviewImage($url) { // Obter o conteúdo da página $html = file_get_contents($url); // Criar um novo objeto DOMDocument $doc = new DOMDocument(); @$doc->loadHTML($html); // Procurar pela tag meta og:image $tags = $doc->getElementsByTagName('meta'); foreach ($tags as $tag) { if ($tag->getAttribute('property') == 'og:image') { return $tag->getAttribute('content'); } } // Se não encontrar og:image, procurar pela primeira imagem na página $tags = $doc->getElementsByTagName('img'); if ($tags->length > 0) { return $tags->item(0)->getAttribute('src'); } // Se não encontrar nenhuma imagem, retornar null return null; } // Uso: $url = "https://example.com/article"; $imageUrl = getPreviewImage($url); if ($imageUrl) { echo "<img src='$imageUrl' alt='Preview'>"; } else { echo "Nenhuma imagem encontrada"; }  
      Mas estou com um problema, esta funcão funciona quando coloco em uma pagina de teste.php. Preciso mostrar em uma página inicial diversas fotos de todos os links. (No caso acima só funciona 1).
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.