Ir para conteúdo
Augusto Developer

Ajuda em Laço de Repetição com PHP

Recommended Posts

Olá, eu gostaria de uma ajuda, a qual eu não estou conseguindo repetir o laço do PHP para o meu script atual.

 

Bom, eu tenho u script que gera 25 números aleatórios para assim, gerar o jogo desejado e também eu tenho um campo(input) que é minha $qtd['qtd_cartela']; a qual essa é responsável por gerar a quantidade de números desejados.

 

Bom, o que eu preciso é quando alguém escolher mais de 1 jogo(cartela), irão gerar 25 números, aleatórios, pois não estou conseguindo gerar mais de um jogo, e mostrar isso através de um foreach ou outro laços do php.

 

Enfim, quando eu coloco mais de 1 valor, para gerar a combinação, eu  dou um var_dump na minha variável $qtd eu consigo ver que esta mostrando a quantidade desejada, mais nao consigo fazer isso aparecer após escolher o valor desejado.

 

Resumindo, eu preciso colocar um valor que eu quiser, e mostrar varios números apos submeter meu fomulário.

 

Obrigado e aguardo ajuda.

 

 

Meu script:

 

 <?php
                $bingo = filter_input_array(INPUT_POSTFILTER_DEFAULT);
                if(isset($bingo['gerar'])){
                    unset($bingo['gerar']);
 
                    if(!empty($bingo['qtd_cartela'== '')){
                        dialog('<b>Ops... preencha o campo cartela!</b>''warning');
                    }elseif($bingo['qtd_cartela'== 0 ){
                        dialog('<b>Ops... preencha com um valor válido!</b>''warning');
                    }else{
 
                        $totalNumber = 25;
                        $total = ''
                        $qtd = $bingo['qtd_cartela'];
                        
                        for($i = 0; $i < $totalNumber; $i++){
                            $numberGenerator = rand(190);
                            $total .= $numberGenerator;
                        }

                        var_dump($total);
                    
                        //dialog('Sucesso...', 'success'); 
 
                    }
 
                }
 
                ?>
 
                <form action="" enctype="multipart/form-data" method="post">
                    <div class="row">
                        <div class="col-md-3">
                            <div class="form-group">
                                <label class="form-control-label">NOME DO CONCURSO</label>
                                <input type="text" class="form-control is-invalid" placeholder="" disabled>
                            </div>
                        </div>
 
                        <div class="col-md-3">
                            <div class="form-group">
                                <label class="form-control-label">DATA DO PRÓXIMO CONCURSO</label>
                                <input type="text" class="form-control is-invalid" placeholder="" disabled>
                            </div>
                        </div>
 
                        <div class="col-md-3">
                            <div class="form-group">
                                <label class="form-control-label">PRÊMIO DO CURSO</label>
                                <input type="text" class="form-control is-invalid" placeholder="" disabled>
                            </div>
                        </div>
 
                        <div class="col-md-3">
                            <div class="form-group">
                                <label class="form-control-label">QUANTIDADE DE JOGO</label>
                                <input type="text" name="qtd_cartela" class="form-control" placeholder="Escolha a quantidades de cartelas">
                            </div>
                        </div>
 
                        <div class="col-md-12 text-right">
                            <input type="submit" class="btn btn-success btn-sm" name="gerar" value="Gerar Cartela">
                        </div>
                    </div>
                </form>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, se a questão é gerar vários números que seriam cartelas e cada cartela tenha seu número aleatório, é só seguir a mesma lógica usando-se de dois loop's para isso.

Fazendo então que cada cartela seja um índice de array.

<?php
$totalNumber = 25;
$total = '';
//$qtd = $bingo['qtd_cartela'];
$qtd = 3;
$cartela = [];

for ($j = 0; $j < $qtd; $j++) {
    for ($i = 0; $i < $totalNumber; $i++) {
        $numberGenerator = rand(1, 90);
        $total .= $numberGenerator;
    }
    $cartela[$j] = $total;
    $total = '';
}

echo '<pre>';
var_dump($cartela);

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, OMAR eu entendi o que eu você me disse, a única coisa que acabei me esquecendo é que te enviei o código sem o Array a qual ja esta funcionando e recuperando os dados. Pois esses dados já esta cadastrando no banco.

O que eu preciso, é quando eu gerar a cartela pela quantidade é rodar esse script novamente com todos os dados, e assim esse Script vai cadastrar no banco. 

 

Aqui no meu $arr[ ] são todos os dados que vão para o banco, e aonde mostra também, o campo da tabela  'numbers_generators' => $total, é onde vai gravar os 25 números gerados pela minha $total.

 

Bom, eu preciso gravar assim no banco, quando eu escolher a quantidade, ele vai gravar todos os dados do $arr[ ], e aqui também nesse campo  'numbers_generators' => $total, é onde vai gravar os números aleatórios no total de 25.

 

Resumindo, vou escolher a quantidade, e gerar os números aleatorios  'numbers_generators' => $total, e salvar os dados no banco através da quantidade que a pessoa escolher.

Pois, depois de salvo, só vou retornar a ele alguns dados, como cod_reference e os numbers_generators, que seria a cartela de bingo, com os jogos gerados.

 

<?php
                    $playBingo = filter_input_array(INPUT_POSTFILTER_DEFAULT);
                    if(isset($playBingo['gerar'])){
                        unset($playBingo['gerar']);
 
                        $qtd = $playBingo['qtd_cartela'];
                        
                        if(!empty($qtd == '')){
                            dialog('<b>Ops...! Preencha a quantidade desejada de jogo.</b>''warning'); 
                        }else{
 
                            if($qtd <= 0){
                                dialog('<b>Por favor, coloque um valor válido para gerar a cartela.</b>''warning');
                            }else{
                                //dialog('<b>Jogo gerado com sucesso.</b>', 'success');
                                
                                //Total de numeros gerados na cartela.
                                $totalNumbers = 24;
                                $total = '';
                               
                                for($i = 0; $i <= $totalNumbers; $i++){
                                    $numbersGenerate = rand(190);
                                    $total .= $numbersGenerate;   
 
                                    $arr = [
                                    'user_id' =>  $userlogin['user_id'],
                                    'cod_reference' => $userlogin['user_id'].time(),
                                    'numbers_generators' => $total,
                                    'qtd_cartela' => $qtd,
                                    'status_cartela' => 'Aguardando pagamento',
                                    'valor_cartela' => number_format(5.002','' ')
                                    ];
                                }
 
                                var_dump($total);
 
                                echo "<pre>"print_r($arr, true), "</pre>";
 
                            }
                           
                        }
 
                    }
 
                ?>
 
                <form action="" enctype="multipart/form-data" method="post">
                    <div class="row">
                        <div class="col-md-3">
                            <div class="form-group">
                                <label class="form-control-label">NOME DO CONCURSO</label>
                                <input type="text" class="form-control is-invalid" placeholder="" disabled>
                            </div>
                        </div>
 
                        <div class="col-md-3">
                            <div class="form-group">
                                <label class="form-control-label">DATA DO PRÓXIMO CONCURSO</label>
                                <input type="text" class="form-control is-invalid" placeholder="" disabled>
                            </div>
                        </div>
 
                        <div class="col-md-3">
                            <div class="form-group">
                                <label class="form-control-label">PRÊMIO DO CURSO</label>
                                <input type="text" class="form-control is-invalid" placeholder="" disabled>
                            </div>
                        </div>
 
                        <div class="col-md-3">
                            <div class="form-group">
                                <label class="form-control-label">QUANTIDADE DE JOGO</label>
                                <input type="text" name="qtd_cartela" class="form-control" placeholder="Escolha a quantidades de cartelas">
                            </div>
                        </div>
 
                        <div class="col-md-12 text-right">
                            <input type="submit" class="btn btn-success btn-sm" name="gerar" value="Gerar Cartela">
                        </div>
                    </div>
                </form>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hora se você quer registrar cada sorteio em cada tabela basta lançar a query a cada volta do loop.

Porém isso requer uma depuração minuciosa, limitando a quantidade de voltas que o loop vai dar, muita atenção para evitar loop's infinitos.

No caso você pega o valor vindo de POST para delimitar a quantidade de cartelas, esse valor deve ser tratado e limitado para evitar milhares de voltas no loop.

Do contrário poderá causar uma sobrecarga do servidor.

 

As demais questões sobre mostrar o valores nada mais que irá apresentar os dados gerados dentro do loop, o que nos remete a isso:

Você cria o array ARR dentro do loop, de fato ele terá seus dados gravados em memória, porém como no casso $arr só possui um índice a cada volta do loop ele é recriado com novos valores.

Quando temos que resgatar valores abstratos que foram gerados em loops temos que optar o arrays-multi dimensionais para não reescrever dados.

 

$arr[INDICE] = [ ... valores do array nesse índice

 

Com isso pós o loop teremos um array com todas informações geradas pelo loop.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Omar, você poderia me mostrar como faz isso com o exemplo que te mostrei, tentei aqui e nao consegui

Desde, já agradeço sua ajuda e dedicação em ajudar as pessoas.

Bom, eu estou aprendendo PHP e estou estudando muito, consigo fazer bastante coisas mais ainda apanho um pouco, como normal em todas as linguagens...

 

Deus abençoe, e se puder me mostrar agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria bom se eu tivesse/soubesse como é sua estrutura SQL da tabela para dar um exemplo melhor.

Mas seguindo suas informações deduzo aproximadamente como é a tabela, no meu exemplo a criei assim, lógico inserindo o conceito do exemplo:

DROP TABLE IF EXISTS `cartelas`;
CREATE TABLE `cartelas` (
    `c_id` int(9) NOT NULL AUTO_INCREMENT COMMENT 'identificador único',
    `c_user` int(9) COMMENT 'identificador do usuário',
    `c_reference` int(9) COMMENT 'código de referencia',
    -- `c_quantidade` int(9) COMMENT 'quantidade de cartelas', -- Não entendi o porque disso então apenas é comentário
    `c_status` ENUM('0','1') COMMENT '0 = sem paragamento, 1 = pago',
    `c_value` int(2) COMMENT 'valor da cartela',
    `c_numero` int(2) COMMENT 'número da cartela gerada',
    PRIMARY KEY (`c_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

 

No HTML preferir substituir o input por um seletor que dar mais praticidade ao usuário e já de cara podemos fazer um limitação pelo HTML (Lógico que isso pode ser manipulado por pessoas má intencionadas, porém no back-end trataremos disso também) 

<form method="post">

    <p>QUANTIDADE DE JOGO</p>
    <select name="qtd_cartela">
        <option value="">Quantidade de cartelas</option>
        <option value="1">1 cartela</option>
        <option value="2">2 cartelas</option>
        <option value="3">3 cartelas</option>
        <option value="4">4 cartelas</option>
        <option value="5">5 cartelas</option>
        <option value="6">6 cartelas</option>
    </select>

    <input type="submit" value="Gerar Cartela" />

</form>

No caso meu são no máximo seis cartelas, tente limitar ao número mais baixo o possível, pois usaremos um loop para registrar dados, e se o loop for muito extenso pode travar o servidor.

 

Entramos então na parte back-end

Em primeiro eu estabeleci conexão com o banco de dados:

$host = '127.0.0.1'; // IP do banco de dados
$db = 'bingo'; // Nome do banco de dados
$usuario = 'root'; // usuário que tem permissão de manipular o banco
$senha = ''; // senha do usuário que tem permissão ....

try {
    $dsn = "mysql:host={$host}; dbname={$db}";
    $options = [PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8'];

    $con = new PDO($dsn, $usuario, $senha, $options);
} catch (PDOException $erro) {
    die('Erro na conexão: ' . $erro->getMessage());
}

Um ponto que devemos ficar atento é o índice $userlogin['user_id'], ao qual deduzo que seja um índice de cessão, nesse caso devemos ficar atento a esses dados pois eles provém da máquina do usuário, ao qual podem ser manipulados e inserido códigos. Temos que prever o sql injection pois esse é o único dado que vamos registrar ao qual nosso sistema não irá gerar.

$user_id = htmlentities($userlogin['user_id']);

Sobre a parte de gerar o código de cada cartela continua a mesma coisa como disse no outro post.

 

Registamos então os dados varrendo o array $cartela e usando o objeto  de conexão PDO, a cada volta uma query será lançada, por isso a importância de limitar. Infelizmente não consigo pensar em outra alternativa para não ter que fazer o que deseja.

$sql = $con->prepare(
    'INSERT INTO cartelas (
            c_user,
            c_reference,
            c_status,
            c_value,
            c_numero
        )
        VALUES (
            :user,
            :reference,
            :status,
            :value,
            :numero
    )'
);
foreach ($cartela as $value) {
    $sql->execute([
        'user' => $value['user_id'],
        'reference' => $value['cod_reference'],
        'status' => $value['status_cartela'],
        'value' => $value['valor_cartela'],
        'numero' => $value['numero_cartela'],
    ]);
}

 

Para mostrar o dados é simples então, temos o array $cartela ao qual vamos varrer também assim como foi feito para registrar no banco, a única diferença é que vamos mostrar os dados.

 

E aqui todo o código do exemplo junto:

Spoiler

<?php
/*
 * Iniciando conexão com o banco de dados
 * O correto seria uma classe ou função responsável por isso
 */
$host = '127.0.0.1'; // IP do banco de dados
$db = 'bingo'; // Nome do banco de dados
$usuario = 'root'; // usuário que tem permissão de manipular o banco
$senha = ''; // senha do usuário que tem permissão ....

try {
    $dsn = "mysql:host={$host}; dbname={$db}";
    $options = [PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8'];

    $con = new PDO($dsn, $usuario, $senha, $options);
} catch (PDOException $erro) {
    die('Erro na conexão: ' . $erro->getMessage());
}

/* 
 * Apenas criei esse índice aqui para o exemplo,
 * acredito eu que isso seja uma sessão para você aí
 */
$userlogin['user_id'] = 99;
/*
 * Converter para entidades html esse valor,
 * se for um cessão contaminada com código aqui fazemos com que o código deixe de ser perigoso para nosso aplicação.
 */
$user_id = htmlentities($userlogin['user_id']);
/*
 * Aqui seria interessante e crucial que fazesse uma consulta usando "$user_id" para ver se existe esse usuário 
 * porque usaremos isso para gegistrar dados, caso esse usuário não exista você estará a registrar dados
 * e estaria inserindo o SQL dados inúteis, aos quais poderia até dar dor de cabeça no futuro.
 */

$playBingo = filter_input_array(INPUT_POST, FILTER_DEFAULT);
if ($playBingo) {
    $qtd = isset($playBingo['qtd_cartela']) ? (int) $playBingo['qtd_cartela'] : null;

    if (!$qtd || empty($qtd)) {
        /* A quantidade de jogo está vazia ou é nula, ou mesmo o valor é zero */
    } else if ($qtd > 6) {
        /* A quantidade é maior que o permitido.
         * Essa é a limitação que falei
         * No caso aqui o limte máximo de cartelas será seis
         */
    } else {
        $totalNumber = 25;
        $total = '';
        $cartela = [];
        $numero = 0; // Número da cartela gerada

        for ($j = 0; $j < $qtd; $j++) {
            for ($i = 0; $i < $totalNumber; $i++) {
                $numberGenerator = rand(1, 90);
                $total .= $numberGenerator;
            }
            $numero++;
            $cartela[$j]['user_id'] = $user_id;
            $cartela[$j]['cod_reference'] = $user_id . time();
            $cartela[$j]['qtd_cartela'] = $qtd;
            $cartela[$j]['status_cartela'] = 0;
            $cartela[$j]['valor_cartela'] = 5;
            $cartela[$j]['numero_cartela'] = $numero;
            $total = null; // Reiniciar os números do sorteio para outra cartela
        }

        /*
         * Salvando as cartelas no banco de dados
         */
        $sql = $con->prepare(
            'INSERT INTO cartelas (
                c_user,
                c_reference,
                c_status,
                c_value,
                c_numero
            )
            VALUES (
                :user,
                :reference,
                :status,
                :value,
                :numero
            )'
        );
        foreach ($cartela as $value) {
            $sql->execute([
                'user' => $value['user_id'],
                'reference' => $value['cod_reference'],
                'status' => $value['status_cartela'],
                'value' => $value['valor_cartela'],
                'numero' => $value['numero_cartela'],
            ]);
        }

        /*
         * Mostrando todos dados de cada cartela
         * Isso também pode ser mostrado por uma query seletora
         */
        foreach ($cartela as $value) {
            echo ("<p>user_id: {$value['user_id']}</p>
                <p>cod_reference: {$value['cod_reference']}</p>
                <p>qtd_cartela: {$value['qtd_cartela']}</p>
                <p>status_cartela: " . (!$value['status_cartela'] ? 'Aguardando Pagamento' : 'Pago') . " </p>
                <p>valor_cartela: " . number_format($value['valor_cartela'], 2, ',', '.') . "R&#x24;</p>
                <p>numero_cartela: {$value['numero_cartela']}</p>
            <hr />");
        }
    }
}
?>

<form method="post">

    <p>QUANTIDADE DE JOGO</p>
    <select name="qtd_cartela">
        <option value="">Quantidade de cartelas</option>
        <option value="1">1 cartela</option>
        <option value="2">2 cartelas</option>
        <option value="3">3 cartelas</option>
        <option value="4">4 cartelas</option>
        <option value="5">5 cartelas</option>
        <option value="6">6 cartelas</option>
    </select>

    <input type="submit" value="Gerar Cartela" />

</form>

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, td bem Omar.!

Primeiramente agradeço muito a ajuda, seu tempo e tbm por ensinar a maneira mais correta de usar o PHP.

 

Bom, eu gostaria de saber se você pode me mostrar na prática, como eu faço para separar esses números individualmente para apresentar, como bolinha de bingos, dentro de um círculo como exemplo.

Segue um exemplo de como esta mostrando, e tambem estou recuperando do banco, e fazendo a leitura da cartela.

Mais, já tentei *Manipular a String* e não consegui apresentar os números sorteados individuais. 

 

Esta assim no momento:

70, 12, 12, 89, 68, 89, 43, 33, 14, 10, 56, 16, 17, 54, 78, 19, 65, 43, 18, 11, 58, 90, 41, 89, 48

Obs: Aqui esta em uma única linha e mostrando separadamente por vírgula.

 

Agora gostaria que tivesse assim:

70 12 12 89 68 43 33...

Obs: mostrando separados, mais com background-color, como se fosse um círculo. *O CSS eu sei fazer.*

 

Eu só preciso mostrar cada número separado, dentro de um círculo cada um deles.

 

Outra observação, existe alguma maneira dos números não se repetirem, pois eles repetem e não seria bom isso.!

Se puder mostrar sem usar Funcao para isso, agradeço.

 

Desde, já agradeço e Deus continue abençoando e preparando sua vida.

Obrigado.!

Compartilhar este post


Link para o post
Compartilhar em outros sites
6 horas atrás, Augusto Developer disse:

eu gostaria de saber se você pode me mostrar na prática, como eu faço para separar esses números individualmente para apresentar, como bolinha de bingos

<?php
$string = '11223344556677889900';
$separa = str_split($string, 2);
echo '<pre>';
var_dump($separa);
echo '</pre>';

$string = '11, 22, 33, 44, 55, 66, 77, 88, 99, 00';
$separa = explode(", ", $string);
echo '<pre>';
var_dump($separa);

 

 

7 horas atrás, Augusto Developer disse:

Outra observação, existe alguma maneira dos números não se repetirem, pois eles repetem e não seria bom isso.!

Se puder mostrar sem usar Funcao para isso, agradeço.

Aí complica, pois temos que repensar muito na forma de gerar os números.

Mais detalhes em: https://forum.imasters.com.br/topic/580228-combinação-letra-e-numeros-com-apenas-uma-repetição/?tab=comments#comment-2272548

 

 

Podemos tentar alternativas, nesse caso os números que serão gerados são pré definidos a não gerandos pelo rand, pois para isso requer funções de checagens se o número atual já existe e tal.

 

Assim sendo optei por criar um array com todos os números possíveis para serem gerados tipo:

$numeros_validos = ['01', '02', '03 ......];

Porém criar isso "na unha" é demorado usamos o php então para criar esse array

<?php
$numeros_validos = [];
for ($i = 1; $i < 100; $i++) { // Total de 99 números gerados 1,2,3.... até 99, essencial começar pelo 1 para não gerar o número zero
    $numero = ($i < 10 ? "0{$i}" : "{$i}"); // caso seja 1,2,3... fazemos com que os números sejam 01,02,03...
    $numeros_validos[$i] = $numero;
}

Como nosso array é 01,02,03... até o 99. O pulo do gato para gerar o sorteio será misturar esses índices, como não há números repetidos no array não teremos números repetidos no sorteio.

Spoiler

<?php
$numeros_validos = [];
for ($i = 1; $i < 100; $i++) { // Total de 99 números gerados 1,2,3.... até 99
    $numero = ($i < 10 ? "0{$i}" : "{$i}"); // caso seja 1,2,3... fazemos com que os números sejam 01,02,03...
    $numeros_validos[$i] = $numero;
}
/*
 * Como temos um array com todos os números embralharamos os índices
 * para que eles não fiquem sequënciados, assim sendo uma ordem aleatória
 * o melhor disso que como temos como nossa array criada dinâmicamente
 * ela não repete números, assim sendo não teremos repetições.
 */
shuffle($numeros_validos);

$user_id = 99; // Só por exemplo
$qtd = 10; // Só por exemplo

$totalNumber = 25; // Como estamos tabalhando com pares não podemos definir um número ímpar para gerar o sorteio
$total = '';
$cartela = [];
$numero = 0; // Número da cartela gerada

for ($j = 0; $j < $qtd; $j++) {
    /* Extraímos do array os primeiros índices de acordo com $totalNumber */
    $sorteio_atual = array_slice($numeros_validos, 0, $totalNumber);

    /*
     * Mesmo assim temos que fazer esse loop que é para pegar o índice de cada número do sorteio
     */
    for ($i = 0; $i < $totalNumber; $i++) {
        $total .= $sorteio_atual[$i];
    }
    shuffle($numeros_validos); // Re-embaralhamos o array para não gerar cartelas duplicadas

    $numero++;
    $cartela[$j]['user_id'] = $user_id;
    $cartela[$j]['cod_reference'] = $user_id . time();
    $cartela[$j]['qtd_cartela'] = $qtd;
    $cartela[$j]['status_cartela'] = 0;
    $cartela[$j]['valor_cartela'] = 5;
    $cartela[$j]['numero_cartela'] = $numero;
    $cartela[$j]['sorteio_cartela'] = $total; /* !!! RSRSRSR FALTOU ISSO ANTERIORMENTE */
    $total = null; // Reiniciar os números do sorteio para outra cartela
}


$mostrarResultado = [];
foreach ($cartela as $key => $value) {
    $mostrarResultado[$key] = str_split($value['sorteio_cartela'], 2);
}

for ($j = 0; $j < $qtd; $j++) {
    foreach ($mostrarResultado as $value) {
        echo ($value[$j] . '<br>');
    }
    echo ('<hr />');
}

echo '<pre>';
var_dump($cartela);

 

 

De acordo com meus cálculos existe um provabilidade de 1,50% de gerar cartelas com o mesmos números e apenas de 0,15% de seguirem a mesma sequência.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, boa Tarde Omar.!

Bom, segue o meu código que ja esta funcionando e usando alguns exemplos seus...

 

<?php require_once '././plugins/phpqrcode/qrlib.php'; ?>

<div class="row printNot">
    <div class="col-xl-12">
        <div class="card mb-4">
            <!-- Card header -->
            <div class="card-header">
                <div class="alert alert-secondary alert-dismissible fade show" role="alert">
                    <span class="alert-icon"><i class="fas fa-grin-wink"></i></span>
                    <span class="alert-text"><strong>Atenção!...</strong> Cada jogo os números são gerados aletóriamente.</span>
                </div>
            </div>
            <!-- Card body -->
            <div class="card-body">
                <?php
                $bingo = filter_input_array(INPUT_POST, FILTER_DEFAULT);
                if(isset($bingo['gerar'])){
                    unset($bingo['gerar']);

                    if(!empty($bingo['qtd_cartela'] == '')){
                        dialog('<b>Ops... preencha o campo cartela!</b>', 'warning');
                    }elseif($bingo['qtd_cartela'] == 0 ){
                        dialog('<b>Ops... preencha com um valor válido!</b>', 'warning');
                    }elseif($bingo['qtd_cartela'] > 50){
                        dialog('<b>A quantidade é maior que o permitido!</b>', 'warning');

                    }else{
                        $totalNumber = 25;
                        $total = '';
                        $qtd = $bingo['qtd_cartela'];
                        $cartela = [];
                        
                        for ($j = 0; $j < $qtd; $j++) {
                            for ($i = 0; $i < $totalNumber; $i++) {
                                $numberGenerator = ", " . mt_rand(1, 90) ;
                                $total .= $numberGenerator;
                                //$total .= $numberGenerator;
                                
                                $cartela = [
                                    'user_id' =>  htmlentities($userlogin['user_id']),
                                    'cod_reference' => $userlogin['user_id'].time(),
                                    'numbers_generators' => $total,
                                    'qtd_cartela' => $qtd,
                                    'status_cartela' => 'Aguardando pagamento',
                                    'valor_cartela' => number_format(5, 2, ',', ' ')
                                ];  
                            }

                            $total = ''; 
                            $createUser = Conexao_Create('cartela', $cartela);
                        }
                        
                        dialog("<b>JOGO GERADO COM SUCESSO.</b>", 'success');
                    }
                }

                ?>

                <form action="" enctype="multipart/form-data" method="post">
                    <div class="row">
                        <div class="col-md-3">
                            <div class="form-group">
                                <label class="form-control-label">NOME DO CONCURSO</label>
                                <input type="text" class="form-control is-invalid" placeholder="" disabled>
                            </div>
                        </div>

                        <div class="col-md-3">
                            <div class="form-group">
                                <label class="form-control-label">DATA DO PRÓXIMO CONCURSO</label>
                                <input type="text" class="form-control is-invalid" placeholder="" disabled>
                            </div>
                        </div>

                        <div class="col-md-3">
                            <div class="form-group">
                                <label class="form-control-label">PRÊMIO DO CURSO</label>
                                <input type="text" class="form-control is-invalid" placeholder="" disabled>
                            </div>
                        </div>

                        <div class="col-md-3">
                            <div class="form-group">
                                <label class="form-control-label">QUANTIDADE DE JOGO</label>
                                <input type="text" name="qtd_cartela" class="form-control" placeholder="Escolha a quantidades de cartelas">
                            </div>
                        </div>

                        <div class="col-md-12 text-right">
                            <input type="submit" class="btn btn-success btn-sm" name="gerar" value="Gerar Cartela">
                        </div>
                    </div>
                </form>


                <div style="margin-bottom: 20px;"></div>

                <!--JOGO GERADO PARA PAGAMENTO PAGSEGURO E IMPRESSÃO-->
                <div class="row">
                    <div class="col-md-12">
                        <div class="alert alert-primary alert-dismissible fade show" role="alert">
                            <span class="alert-icon"><i class="fab fa-buromobelexperte"></i></span>
                            <span class="alert-text"><strong>CARTELA</strong> DE JOGOS GERADOS</span>
                            <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                                <span aria-hidden="true">×</span>
                            </button>
                        </div>

                        <div class="col-md-12 col-12 text-right">
                            <a href="#!" class="col-12 shortcut-item text-right">
                                <span class="shortcut-media avatar rounded-circle bg-gradient-success text-right">
                                  <i class="fas fa-shopping-cart"></i>
                                </span>
                               0.00
                            </a>
                        </div>
                       
                        <div style="margin-bottom: 10px;"></div>

                        <!--IMPRESSAO-->
                        <div class="card">
                            <!-- Card header -->
                            <div class="card-header">
                                <!-- Title -->
                                <h6 class="h3 mb-0">CONCURSO: Nº.01</h6>
                            </div>

                            <div class="card-body">
                                <div style="margin-bottom: 20px;"></div>

                                <div class="row">
                                    <?php
                                        $read = Conexao_ReadAll('cartela', "WHERE user_id = '{$userlogin['user_id']}' AND status_cartela != 'Paga' ORDER BY id_cartela DESC");
                                        if ($read) {
                                        //foreach ($read as $value):

                                            $mostrarResultado = [];
                                            foreach ($read as $key => $value):
                                                $mostrarResultado[$key] = str_split($value['numbers_generators'], 2);

                                    ?>

                                    <div class="col-md-4">
                                        <div class="checklist-item checklist-item-info">
                                            <div class="checklist-info">
                                                <span class="badge badge-secondary">APOSTADOR INDIVIDUAL</span>
                                                <!--small->01-12-2019 - 10:30hrs</!--small->-->

                                                <p>
                                                <img alt="Image placeholder" src="assets/img/theme/concurso.jpeg" class="img-fluid rounded" style="width: 100%; height: 50%;"> 
                                                </p>
                                            </div>
                                        </div>

                                        <div class="mt-3">   
                                            <div style="margin-bottom: -40px;"></div>
                                            <div class="card-profile-stats d-flex justify-content-center">
                                                <div>
                                                <?php 
                                                    $path = '././images/';
                                                    $file = $path.uniqid()."png";

                                                    $text = "Name: ";
                                                    $text .= "Address: ";
                                                    $text  .= "Tel: ";

                                                    QRcode::png($text, $file, 'L', 3, 2);
                                                    echo "<p><img src='". $file ."'></p>";
                                                ?>
                                                </div>
                                               
                                               
                                            </div>
                                            <div style="margin-bottom: -40px;"></div>
                                            <p class="text-center">
                                            <span class="badge badge-pill badge-success">JOGO GERADO - <b>CARTELA # <?= $value['cod_reference']; ?></b></span>
                                            </p>
                                            
                                            <div class="btn-group">
                                                <button type="button" class="btn btn-default btn-md">
                                                    <?= substr($value['numbers_generators'], 1) ?>
                                                </button>
                                            </div>

                                            <div class="card-footer py-4 ">
                                                <nav aria-label="...">
                                                    <ul class="pagination justify-content-end mb-0">
                                                      <li class="page-item active ">
                                                          <a class="page-link pull-left" href="#">1</a>
                                                      </li>
                                                    </ul>
                                                </nav>
                                            </div>

                                            </p>
                                          
                                        <hr />
                                        </div>

                                        <div style="margin-bottom: 30px;"></div>
                                    </div>
                                    <?php

                                        endforeach;
                                    }else {
                                        dialog("<b>{$userlogin['user_name']}</b>, nenhum jogo gerado ainda!", 'info');
                                    }
                                
                                    ?>
                                </div>

                                <!-- List group -->
                                <div class="col-md-12 text-right">
                                    <a type="button" class="btn btn-danger btn-sm printGo" href="jogador_individual/impressao-jogador-individual.php">
                                        <span class="btn-inner--icon"><i class="fas fa-print"></i></span>
                                        <span class="btn-inner--text printGo">Imprimir</span>
                                    </a>
                                </div>
                            </div>
                        </div>
                        <div style="margin-bottom: 60px;"></div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

Bom eu gostaria de saber se voce consegue colocar reescrever o meu código, usando os numeros para nao repetir e usando o 01, 02, como exemplo que você me falou.

 

Outra coisa, estou te enviando uma imagem, onde os numeros estao separados com vírgulas quando eu faço um Select(Conexao_ReadAll) a qual eu faço leitura da minha tabela usando um foreach. 

E gostaria que os números ficassem separados em circulos, com o numeros dentros. Te mandei um exemplo de bolinha com numero dentro, de como deve ficar. 

Pois, tentei fazer e nao consegui mesmo usando o seu exemplo.

 

Segue também meu SQL como esta meu banco de dados.

Banco de dados: bingo

 

Desde já agradeço sua ajuda e conte comigo se precisar de algo.! Deus abençoe

 

 

screenshot-localhost-2020.01.07-15_23_42.png

SQL.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, td bem Omar.

Bom, eu dei uma boa olhada em seu código e ainda nao consegui, colocar um fundo de CSS em cada numero separadamente, para aparecer como Bolinhas de bingos coloridas, como exemplo no ultimo Post que te mandei.

 

Estou com duvida de colocar isso, com PHP, pois ja fiz com implode, explode e ate mesmo outros. Eu só preciso mesmo deixar cada número com cor separadamente, se voce puder me ajudar eu agradeço, pois isso que estou fazendo é como se fosse a Cartela final para impressão de um Bingo.

 

Segue a imagem, como esta a estrutura ate o momento.

Código abaixo, para melhor analise.

 

<?php
    include '../conexao/load.php';
    require_once  '../plugins/phpqrcode/qrlib.php';
 
    ob_start();
    session_start();
?>
 
<style>
    table{
        width100%;
        border1px solid #555;
        margin0;
        padding0;
    }
    th {
        text-transformuppercase;
    }
 
    tablethtd{
        border:  1px solid #555;
        border-collapsecollapse;
        text-alignleft;
        padding10px;
    }
 
    tr:nth-child(2n+0) {
        background#eee;
    }
 
    .banner{  
        displayflex;
        justify-contentcenter;   
    }
 
    .imagem{
      margin0 300px;
      text-aligncenter;
    }
 
    .text-gerado{
        text-aligncenter;
        background-color#2dce89;
        margin0 180px;
        font-size16px;
        padding10px;
        margin-top-20px;      
    }
 
    .numbers_generators{
        displayflex;
        justify-contentcenter
        align-itemscenter;   
    }
 
    .circulo{
        width100px;
        height100px;
        border-radius50%
        background-colorred;
        margin50px;
    }
</style>
 
    <?php
        $read = Conexao_Find("SELECT * FROM cartela WHERE status_cartela = 'Aguardando pagamento' ORDER BY id_cartela");
        if($read){
            $mostrarResultado = [];
            foreach ($read as $key => $print):
                //echo ("<div class=\"circulo\">{$print['numbers_generators']}</div>");
                $mostrarResultado[$key] = str_split($print['numbers_generators'], 2);
            
        //echo "<pre>", var_dump($print) ,"</pre>"              
    ?>
 
<table class="table">
    <tr>
        <th><span class="badge badge-secondary">APOSTADOR INDIVIDUAL</span></th>
    </tr>
 
    <tr>
        <td>
            <img alt="Image placeholder" src="../assets/img/theme/concurso.jpeg" class="img-fluid rounded" style="width: 710px; height: 300px;"
        </td>
  
    </tr>
 
    <tr>
        <td>
            <?php 
                $user_id = $_SESSION['userlogin']['user_id'];
                $dadosuser = Conexao_ReadAll('user',"WHERE user_id = " . (int)$user_id );
                $dadosuser = $dadosuser['0'];
                //$userlogin = $user['0'];
            
                $path = '../images/';
                $file = $path.uniqid()."png";
 
                $text = "Empresa: PARÁ BINGO DA SORTE";
                $text .= "Nome Jogador: '" . $dadosuser['user_name'."'";
                $text .= "Email: '" . $dadosuser['user_email'."' ";
                $text  .= "Fone: '" . $dadosuser['user_phone'."' ";
 
                QRcode::png($text, $file, 'L'22);
                echo "<p class=\"banner\"><img class=\"imagem\" src='". $file ."'></p>";
            ?>
 
            <p class="text-gerado">JOGO GERADO - <b>CARTELA #<?= $print['cod_reference']; ?></p>
        </td>
    </tr>
 
    <tr>
        <td>
       
            <span class="numbers_generators"><b><?= implode(" - ", $mostrarResultado[$key]); ?></b></span>
        </td>
    </tr>
</table>
 
<?php endforeach; } ?>

cartela-bingo.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode criar uma função para gerar cores aleatorias para exebir na tela.


function changeColor(){
  $letters = "0123456789ABCDEF";
  $color = "#";
  for ($i = 0; $i < 6; $i++) {
      $color .= $letters[(string)floor(rand(0,15))];
  }
    return $color;
}
                      
$newColor = changeColor();
echo "<div style='background:".$newColor.";'>OLÁ</div>";

Não sei se era isso que você queria.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, plural, ativo. Nela tem cadastrado vários itens e seu respectivo plural. No campo ativo eu coloco a letra "S" para informar que esta palavra está ativa no sistema. Por exemplo: 1, casa, casas, S 2, mesa, mesas, S 3, cama, camas, S 4, moto, motos, S 5, rádio, rádios O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "variações" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, camas, moto 2, mesas, casas, radio 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela variações da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "casa". Preciso fazer com que o php me liste todos os registros da tabela "variações" que contenham a palavra "casa". Porém se tiver algum registro com a palavra "casas" também tem que ser listado. Neste caso ele irá encontrar dois registros. Agora eu preciso que o php verifique os demais itens e faça a listagem apenas dos item que estão ativos (que contenham um "S" no campo ativo. Neste caso ele irá encontrar apenas um registro, pois o segundo registro contém a palavra "rádio". E "rádio" não está ativo na tabela itens. Como faço isso?
    • Por First
      Olá a todos!
       
      Quando eu tento fazer o login me mostra esse erro "Could not log you in."; Alguém sabe me ajudar a resolver esse problema no meu código?
      <?php require_once("core/init.php"); if (Input::exists()) { if (Token::check(Input::get("token"))) { $validate = new Validate(); $validation = $validate->check($_POST, array( "username" => array("required" => true), "password" => array("required" => true) )); if ($validation->passed()) { $user = new User(); $remember = (Input::get("remember")) === "on" ? true : false; $login = $user->login(Input::get("username"), Input::get("password"), $remember); if ($login) { Session::flash("home", "Welcome back!"); Redirect::to("index.php"); } else { echo "Could not log you in."; } } else { foreach ($validation->errors() as $error) { echo $error."<BR>"; } } } } ?> <form action="" method="POST"> <div class="field"> <label for="username">Username</label> <input type="text" name="username" id="username"> </div> <div class="field"> <label for="password">Password</label> <input type="password" name="password" id="password"> </div> <div class="field"> <label for="remember"> <input type="checkbox" name="remember" id="remember"> Remember me </label> </div> <input type="hidden" name="token" value="<?php echo Token::generate(); ?>"> <input type="submit" value="Log in"> </form>  
       
      Desde já obrigado.
    • Por ckcesar
      Eu tenho uma aplicação no zend com a versão 5.6 e com o postgresql 9.6. Agora eu precisei mudar a versão do meu postgresql para o 16.1, a parte de conexão do bd e consultas sqls funciona perfeitamente, o meu problema está para acessar os meus controllers. Eles não são encontrados em nenhuma rota, quero ver se alguém já passou por esse problema para me ajudar. Obrigado.
    • Por ILR master
      Fala galera, tudo bem?
       
      Tenho o seguinte codigo:
       
       class Data {
      public static function ExibirTempoDecorrido($date)
      {
          if(empty($date))
          {
              return "Informe a data";
          }
          $periodos = array("segundo", "minuto", "hora", "dia", "semana", "mês", "ano", "década");
          $duracao = array("60","60","24","7","4.35","12","10");
          $agora = time();
          $unix_data = strtotime($date);
          // check validity of date
          if(empty($unix_data))
          {  
              return "Bad date";
          }
          // is it future date or past date
          if($agora > $unix_data) 
          {  
              $diferenca     = $agora - $unix_data;
              $tempo         = "atrás";
          } 
          else 
          {
              $diferenca     = $unix_data - $agora;
              $tempo         = "agora";
          }
          for($j = 0; $diferenca >= $duracao[$j] && $j < count($duracao)-1; $j++) 
          {
              $diferenca /= $duracao[$j];
          }
          $diferenca = round($diferenca);
          if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
          return "$diferenca $periodos[$j] {$tempo}";
      }
      }
       
      Funciona redondinho se o valor retornado for de algumas horas, mas...
      Quando passa de dois meses, ele retorna a palavra mess. Deve ser por conta dessa linha
      if($diferenca != 1) 
          {
              $periodos[$j].= "s";
          }
       
      Quero que modre:
       
      2 meses atrás
      e não
      2 mess atrás.
       
      Espero que tenham entendido.
       
      Valeu
×

Informação importante

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