Ir para conteúdo

Arquivado

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

Milennia Maria

Erro ilegal na String

Recommended Posts

Oi, Forum iMasters
 
Estou tentando fazer QRCodes no PHP + MySql.
 
No código abaixo quando está SEM o ARRAY não gera mensagens de erros, porém mostra em sequência todos os QRcodes gerados somente no primeiro cabeçalho do primeiro cadastrado. Está errado, pois não monta as folhas A4 seguintes dos outros cadastrados no banco de dados.
 
No código abaixo quando está COM o ARRAY gera com mensagens de erros, porém monta todos os QRcodes em seus respectivos cabeçalhos de seus cadastrados. Certo ! Porém com essas mensagens de erros em VERMELHO. Um erro ilegal na stgring. O problema está bem aí nessas duas linhas. Teria que modificar essa construção de comandos... Me dêem uma luz...! Muito grata !
 
Warning: Illegal string offset 'matricula' in C:\xampp\htdocs\barras\index.phpon line 352

Warning: Illegal string offset 'matricula' in C:\xampp\htdocs\barras\index.phpon line 354
 
<?php
 
require_once('phpqrcode/qrlib.php');
 
$qrcode = array($matricula);
 
foreach ($qrcode as $value) {
 
$qrCodeName = "{$value['matricula']}.png";
 
QRcode::png($value['matricula'], $qrCodeName);
 
echo "<img src='{$qrCodeName}' />";
 
}
 
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá!

Certifique-se de que em $value existe o índice 'matricula'.  Aparentemente esse índice não existe!

 

você pode evitar aspas duplas assim:

$qrCodeName = $value['matricula'].'.png';

Compartilhar este post


Link para o post
Compartilhar em outros sites
15 minutos atrás, washalbano disse:

Olá!

Certifique-se de que em $value existe o índice 'matricula'.  Aparentemente esse índice não existe!

 

você pode evitar aspas duplas assim:

$qrCodeName = $value['matricula'].'.png';

 

Oi, Washalbano. Alterei para sua linha, mas infelizmente continua do mesmo jeito...

Lembrando que quando removo ou comento a linha $qrcode = array($matricula); gera normal os QRCodes e não provoca erro nenhum... Mas em compensação não coloca os códigos em cada folha A4 e sim em sequência um do lado do outro e somente em uma única página, a primeira do primeiro cadastrado... Entendido ? Valeu !

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acima de $qrcode = array($matricula); verifique se existe o índice 'matricula', assim:

echo '<pre>Matrícula: ';

print_r($matricula);

echo '</pre>';

 

e confira o que aparece na tela.

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, washalbano disse:

Acima de $qrcode = array($matricula); verifique se existe o índice 'matricula', assim:

echo '<pre>Matrícula: ';

print_r($matricula);

echo '</pre>';

 

e confira o que aparece na tela.

Então, veja aí no index.php o foco do problema entre as linhas 342 a 360
 

<?php

require_once('phpqrcode/qrlib.php'); 

    
    function DataHoraBrasil($Data)
    {
        $DataAlterada =  date('d/m/Y', strtotime($Data)); 
        return $DataAlterada;
    }
    
    //baixar a class mPDF no site http://www.mpdf1.com/mpdf/index.php
    //Descompactar o arquivo na pasta pdf
    //include ('pdf/mpdf.php');
    
    $servidor = "localhost";
    $usuario = "root";
    $senha = "";
    $dbname = "simulado";
    
    //Criar a conexão
    $conn = mysqli_connect($servidor, $usuario, $senha, $dbname);
    
    mysqli_query($conn,"SET CHARACTER SET 'utf8'");
    mysqli_query($conn,"SET SESSION collation_connection ='utf8_general_ci'");
    
    if(!$conn){
        die("Falha na conexao: " . mysqli_connect_error());
    }else{
        //echo "Conexao realizada com sucesso";
    }
    

    $result_simulado = "SELECT * FROM cadastro"; 
    
    $resultado_simulado = mysqli_query($conn, $result_simulado);    
    //$row_simulado = mysqli_fetch_array($resultado_simulado);
    
    $rows_conteudo = mysqli_num_rows($resultado_simulado);
    

    if($rows_conteudo <= 0){
        echo "Não Existe Registros";
    }
    else{
        
            while($row_simulado = mysqli_fetch_assoc($resultado_simulado)){
    
    //$pagina =
    
    
    // inicio


    // Define a Matricula com 5 digitos vindo do banco de dados
    //$matricula = '92345';
    $matricula = $row_simulado['matricula'];
    
    // Quebra a Matricula em 5 posições
    $arr_matricua = array(
                    substr($matricula, 0, 1),
                    substr($matricula, 1, 1),
                    substr($matricula, 2, 1),
                    substr($matricula, 3, 1),
                    substr($matricula, 4, 1)
                );
    
    // Define PPS
    //$PPS = '950';
    $PPS = $row_simulado['pps'];
    
    // Quebra PPS em 3 posições
    $arr_PPS = array(
                    substr($PPS, 0, 1),
                    substr($PPS, 1, 1),
                    substr($PPS, 2, 1)
                );


?>

<!doctype html>
<html>
<head>

<meta charset="UTF-8">


<title>Gabarito Simulado</title>
    <link href="https://fonts.googleapis.com/css?family=Viga:400,700" rel="stylesheet">
    <link rel="stylesheet" href="estilo.css">

</head>

<body>

    <div class="container">
        <div class="imgGab">
            <img src="images/fundo-gabarito3.jpg" alt=""/>
        </div><!-- imgGab -->
        
        <div class="centerContent">
            <div class="col1">
                
                
                <!-- LOGO -->
                <div class="logo">
                    <img src="images/logo.png" alt="">
                </div>
                
                
                <!-- AVATAR -->
                <div class="avatar">
                
                <?php
                    $caminho = $row_simulado['foto'];
                ?>
                <img width="165" height="193" src="<?php echo $caminho;?>">
                
                
                <!-- <img src="images/avatar.jpg" alt=""> -->
                </div>
                
                
                <!-- SIMULADO -->
                <div class="simulado">
                    <div class="nomeSimulado">
                        
                    <?php
                        
                        echo "<span>".$row_simulado['simulado']."</span>";

                    ?>
                        
                    </div>
                    
                    <div class="area1">
                        
                    <?php
                        
                        echo "<span>".$row_simulado['area_conhecimento1']."</span>";

                    ?>
                        
                    </div>
                    
                    
                    <div class="area2">
                        
                    <?php
                        
                        echo "<span>".$row_simulado['area_conhecimento2']."</span>";

                    ?>
                        
                    </div>
                    
                    
                    <div class="serie">
                        
                    <?php
                        
                        echo "<span>".$row_simulado['serie']."</span>";

                    ?>            
                        
                    </div>

                    <div class="data">
                        
                    <?php
                        echo "<span>".DataHoraBrasil($row_simulado['data'])."</span>";
                        //echo "<span>".$row_simulado['data']."</span>";

                    ?>
                        
                    </div>
                    
                </div><!-- fim simulado -->
                
            </div><!-- col1 -->
            
            
            
            
            
            <div class="col2">
                <!-- matricula -->
                <div class="matricula">
                    <div class="retangulos">
                        <ul>
                            <li><?php echo $arr_matricua[0];?></li>
                            <li><?php echo $arr_matricua[1];?></li>
                            <li><?php echo $arr_matricua[2];?></li>
                            <li><?php echo $arr_matricua[3];?></li>
                            <li><?php echo $arr_matricua[4];?></li>
                        </ul>
                    </div>
                    
                    
                    
                    
                    <div class="circles">
                    
                    <?php
                        
                        $contator = 0;
                        
                        while ($contator <=9){
                            echo "<ul>";
                            if($arr_matricua[0] == $contator){
                                echo "<li class='active'></li>";
                            }
                            else
                            {
                                echo "<li></li>";
                            }
                            if($arr_matricua[1] == $contator){
                                echo "<li class='active'></li>";
                            }
                            else
                            {
                                echo "<li></li>";
                            }
                            if($arr_matricua[2] == $contator){
                                echo "<li class='active'></li>";
                            }
                            else
                            {
                                echo "<li></li>";
                            }
                            if($arr_matricua[3] == $contator){
                                echo "<li class='active'></li>";
                            }
                            else
                            {
                                echo "<li></li>";
                            }
                            if($arr_matricua[4] == $contator){
                                echo "<li class='active'></li>";
                            }
                            else
                            {
                                echo "<li></li>";
                            }
                        
                            echo "</ul>";
                            
                            $contator = $contator+1;
                        }
                    ?>
                                            
                    </div><!-- circles -->
                    
                </div><!-- matriculas -->
                
                
                <div class="pps">
                    <div class="retangulos">
                        <ul>
                            <li><?php echo $arr_PPS[0];?></li>
                            <li><?php echo $arr_PPS[1];?></li>
                            <li><?php echo $arr_PPS[2];?></li>
                        </ul>
                    </div>
                    
                        
                        <?php
                        $contator = 0;
                        
                        while ($contator <=9){
                            
                            if($contator ==0){
                                
                            
                                echo "<ul class='circlePps circle1'>";
                                if($arr_PPS[0] == $contator){
                                    echo "<li class='active'></li>";
                                }
                                else
                                {
                                    echo "<li></li>";
                                }
                                if($arr_PPS[1] == $contator){
                                    echo "<li class='active'></li>";
                                }
                                else
                                {
                                    echo "<li></li>";
                                }
                                if($arr_PPS[2] == $contator){
                                    echo "<li class='active'></li>";
                                }
                                else
                                {
                                    echo "<li></li>";
                                }
                                echo "</ul>";
                            }
                            else{
                                
                                echo "<ul class='circlePps'>";
                                if($arr_PPS[0] == $contator){
                                    echo "<li class='active'></li>";
                                }
                                else
                                {
                                    echo "<li></li>";
                                }
                                if($arr_PPS[1] == $contator){
                                    echo "<li class='active'></li>";
                                }
                                else
                                {
                                    echo "<li></li>";
                                }
                                if($arr_PPS[2] == $contator){
                                    echo "<li class='active'></li>";
                                }
                                else
                                {
                                    echo "<li></li>";
                                }
                                echo "</ul>";

                            }
                            $contator = $contator+1;
                        }
                    ?>
                    </div><!-- pps -->
                
            </div><!-- col2 -->
    
            
            
            <div class="col3">
                <div class="codigoBarras">
                    
                    
<?php

//require_once('phpqrcode/qrlib.php');

$qrcode = array ($matricula);

            foreach ($qrcode as $value) {
    
            $qrCodeName = "{$value['matricula']}.png";
            //$qrCodeName = $value['matricula'].'.png';
            
            QRcode::png($value['matricula'], $qrCodeName);

            echo "<img src='{$qrCodeName}' />";
            
}

?>
                
                </div>
            </div><!-- col3 -->
            
                        
            <div class="nome">
                
                <?php
                        
                    echo "<span>".$row_simulado['nome_aluno']."</span>";

                ?>
                
            </div>
            
            
            <div class="observacoes">
                
                <?php
                        
                    echo "<span>".$row_simulado['observacoes']."</span>";

                ?>
                
            </div>
            
        </div>
    </div>
    
</body>
</html>

<?php
		echo "<br><br><br><br><br>";
		}	
	}
	
function geraQRCode($CodigoQR){
   
    QRcode::png($CodigoQR['$qrCodeName'], QR_ECLEVEL_L);

	echo "<img src='{$qrCodeName}' />";
	
}
	
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

RATIFICAR:
Desculpe, esse tópico aqui do PHP é que gera o QRcode em sequência no mesmo cabeçalho do primeiro cadastrado (sem mensagem de erro).

E não o ARRAY aí citado no tópico anterior. Me confundi aqui e informei erroneamente.

Portanto se remover o ARRAY do tópico anterior, permanecerá a mensagem de erro citada no início em vermelho.

<?php
// Realizamos um laço de repetição para percorrer cada registro retornado do DB. 
foreach ($resultado_simulado as $CodigoQR) {
  
    // Configuramos um nome único para o QR Code com base no número da matrícula.
    $qrCodeName = "{$CodigoQR['matricula']}.png";

    /**
    * Realizamos a criação da imagem PNG, sendo passado as seguintes informações:
    * 1º - A string que desejamos inserir no QR Code.
    * 2º - O nome da imagem que criamos no passo anterior.
    */
 
    QRcode::png($CodigoQR['matricula'], $qrCodeName);

    // Para finalizar realizamos a exibição da imagem no navegador.
    echo "<img src='{$qrCodeName}'>";
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

RESOLVIDO !!!

 

O cidadão Wash Albano, que é um fera em programação, deu apenas com um simples toque de mágica a dica para encontrar a solução:

Remover do script os ARRAY e FOREACH.

Bingo !!!

 

Muito grata, Wash Albano.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Leandro T.
      pessoal bom dia alguém poderia me ajudar com o FormValidation?
       
      "nomefuncionario": {
                  validators: {
                      
                  
                    notEmpty: {
                      message: "Nome completo do funcionário é obrigatório."
                    } , <=== este funciona normalmente
                      
                      callback: {  // agora o callback nao consigo fazer funcionar
                              message: 'este nome não é valido',
                              callback: function (input) {
                                  if (input.value = 'algum valor digitado') {
                                      return true
                                  } }},
                      
                      
                      
                  }
    • Por nathanmoreira
      Após diversos cálculos provindos de um código, recebo um número inteiro ao qual não sei o tamanho ao certo (pode variar de 1 pra frente). Quero passar esse número para string e formatar ele de maneira a colocar um ,00 no final e, a cada 3 números antes da virgula, um ponto. Ou seja, deixar o número num formato como: 45.114.477,00
       
      Como fazer? 
    • Por TK_T
      olá sou iniciante consegui fazer um o código de um exercício só que quando eu peço o valor 12ab ele lê como numérica alguém pode me ajudar? 
      Exercício: Leia uma string e diga se a mesma é numérica (na base decimal) ou não.
      Ex.: "123" -> numérica
      "abc" -> não numérica
      "12ab" -> não numérica
      "12.34" -> numérica 
      #include <stdio.h> int main() { char Numero; printf("Digite Algo: "); scanf("%c", &Numero); if(Numero == '1' || Numero == '2' || Numero == '3' || Numero == '4' || Numero == '5' || Numero == '6' || Numero == '7' || Numero == '8' || Numero== '9' || Numero == '0') printf("\tNumérica...\n"); else printf("\tNão Numérica\n"); return 0; }  
    • Por clayton.lima2020
      Boa Tarde!
       
      Pessoal estou com um problema para resolver:
       
      Tenho um uma string que é um Nome:  SYLVIA
       
      Eu preciso fazer uma uma busca nessa string achar a letra Y e depois verificar se após a letra Y a próxima letra é Vogal ou Consoante.
       
      No caso do nome SYLVIA a próxima letra é L então retorna Consoante.
       
      Alguém sabe montar esse algoritmo ai?
    • Por unset
      Olá, estou com uma pequena dúvida 
       
      Como transformar a data que recebemos com a função date("Y-m-d H:i") em uma string 2021-04-22T00:00 exatamente nesse formato ?
×

Informação importante

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