Jump to content

POWERED BY:

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>

 

Share this post


Link to post
Share on other 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);

 

Share this post


Link to post
Share on other 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>

 

Share this post


Link to post
Share on other 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.

 

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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>

 

 

Share this post


Link to post
Share on other 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.!

Share this post


Link to post
Share on other 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.

 

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • By violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • By violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
    • By violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a ajuda dos amigos, mas preciso entender uma processo que não estou conseguindo sucesso.

      Como mencionado no Título estou escrevendo um Sistema Web para Gerenciamento de Empresa.
       
      Minha dúvida, que preciso muito entender:
      - preciso agora escrever a Rotina para Emissão de NFe e essa parte não estou conseguindo.
       
      tenho assistido alguns vídeos e leituras, mas não estou conseguindo sucesso, já fiz toda as importações das LIB da NFePhp conforme orientação.

      Preciso de ajuda.

      Algum dos amigos tem conhecimento de algum passo-a-passo explicando a criação dessa rotina ?

      tenho visto alguns vídeos com LARAVEL, mas quando tento utilizar e converter para PHP+Codeiginter, dá uma fila de erros que não entendo, mesmo informando as lib necessárias.

      Alguns do amigo tem algum vídeo, leitura explicando essa parte ?

      Grato,

      Cesar.
    • By violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer ao auxílio dos amigos, mas preciso entender e resolver um problema.
       
      Tenho uma Rotina que o usuário seleciona os produtos que deseja para requerer ao setor responsável.
       
      O usuário escolhe um produto qualquer e Clicla em um button para incluir a lista.

      O problema que estou enfrentando é que após escolher o produto e teclar ENTER o Sistema já salva no BD.
       
      Gostaria de criar uma Tecla de Atalho, para quando incluir/escolher o produto na lista, o usuário tecla como exemplo:
      ALT+A  para agregar a lista
      ALT+S para salvar a lista de itens desejados.

      Assim, quando teclar enter, o sistema não dispara o GRAVAR na Base de Dados.

      Grato,

      Cesar
       
       
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.