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 violin101
      Caros amigos, saudações.
       
      Por favor, me permita tirar uma dúvida com os amigos.

      Tenho um Formulário onde o Usuário digita todos os Dados necessários.

      Minha dúvida:
      --> como faço após o usuário digitar os dados e salvar, o Sistema chamar uma Modal ou mensagem perguntando se deseja imprimir agora ?

      Grato,
       
      Cesar
    • Por Carcleo
      Tenho uma abela de usuarios e uma tabela de administradores e clientes.
      Gostaria de uma ajuda para implementar um cadastro
       
      users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
      Queria ajuda para extender de user as classes Admin e Client
      Olhem como estáAdmin
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User {     use HasFactory;            protected $fillable = [         'name',         'email',         'password',         'registration'     ];      private string $registration;     public function create(         string $name,          string $email,          string $password,         string $registration     )     {         //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);         parent::$name = $name;         parent::$email = $email;         parent::$password = $password;         $this->registration = $registration;     } } User
      <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable {     /** @use HasFactory<\Database\Factories\UserFactory> */     use HasFactory, Notifiable;     static string $name;     static string $email;     static string $password;     /**      * The attributes that are mass assignable.      *      * @var list<string>      */     protected $fillable = [         'name',         'email',         'password',     ];          /**      * The attributes that should be hidden for serialization.      *      * @var list<string>      */     protected $hidden = [         'remember_token',     ];     /**      * Get the attributes that should be cast.      *      * @return array<string, string>      */     protected function casts(): array     {         return [             'email_verified_at' => 'datetime',             'password' => 'hashed',         ];     }          public function roles() : BelongsToMany {         return $this->belongsToMany(Role::class);     }       public function hasHole(Array $roleName): bool     {                 foreach ($this->roles as $role) {             if ($role->name === $roleName) {                 return true;             }         }         return false;     }         public function hasHoles(Array $rolesName): bool     {                 foreach ($this->roles as $role) {             foreach ($rolesName as $rolee) {             if ($role->name === $rolee) {                 return true;             }          }         }         return false;     }         public function hasAbility(string $ability): bool     {         foreach ($this->roles as $role) {             if ($role->abilities->contains('name', $ability)) {                 return true;             }         }         return false;     }     } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
      Tentei assim mas é claro que está errado...
      public function store(Request $request, Admin $adminModel) {         $dados = $request->validate([             "name" => "required",             "email" => "required|email",             "password" => "required",             "registration" => "required"         ]);         $dados["password"] =  Hash::make($dados["password"]);                  $admin = Admin::where("registration",  $dados["registration"])->first();                  if ($admin)              return                    redirect()->route("admin.new")                             ->withErrors([                                 'fail' => 'Administrador já cadastrados<br>, favor verificar!'                   ]);                            $newAdmin = $adminModel->create(                                    $dados['name'],                                    $dados['email'],                                    $dados['password'],                                    $dados['registration']                                 );         dd($newAdmin);         $adminModel->save();         //$adminModel::create($admin);                  return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');     }  
    • Por violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos, referente a PDV.
       
      Estou escrevendo um Sistema com Ponto de Vendas, a minha dúvida é o seguinte, referente ao procedimento mais correto.

      Conforme o caixa vai efetuando a venda, o Sistema de PDV já realiza:
      a baixa direto dos produtos no estoque
      ou
      somente após concretizar a venda o sistema baixa os produtos do estoque ?
       
      Grato,
       
      Cesar
       
    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por ILR master
      Fala galera, tudo certo?
       
      Seguinte: No servidor A estou tentando fazer uma consulta com o servidor B, mas está dando erro.
      Estou usando o mesmo código de conexão do servidor B que funciona perfeitamente, mas no servidor A, dá erro.
      Segue código:
       
      $host = 'servidor B';
      $user = 'user';
      $pass = '********';
      $db   = 'banco';
       
      // conexão e seleção do banco de dados
      $conexao = mysqlI_connect($host, $user, $pass, $db);
      mysqlI_set_charset($conexao,"utf8");
      //print "Conexão rodando e OK!"; 
      //mysqlI_close($conexao);
       
      Alguém pode me ajudar?
×

Informação importante

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