ti-enxame.com

Como recuperar dados da tabela MySQL e inseri-los no código QR usando PHP?

Eu tenho este código PHP que deve recuperar dados de um banco de dados MySQL e incorporá-lo em um código QR:

 <?php
    include(JPATH_LIBRARIES . '/phpqrcode/qrlib.php');

$db     = JFactory::getDbo(); 
$user   = JFactory::getUser();

$query = $db->getQuery(true);    
$query->select($db->quoteName(array('Nom', 'Cognoms', 'eCorreu')))
      ->from($db->quoteName('#__rsform_socis'))
      ->where($db->quoteName('Username') . ' = '. $db->quote($user->Username));     
$db->setQuery($query);
$codeContents = $db->loadObjectList();

$data  = $codeContents[0]->Nom;
$data .= $codeContents[0]->Cognoms;
$data .= $codeContents[0]->eCorreu;

$tempDir  = JPATH_SITE . '/images/';   
$fileName = 'qr_'.md5($data).'.png';   
$pngAbsoluteFilePath = $tempDir.$fileName;
$urlRelativeFilePath = JUri::root() .'images/' . $fileName;

if (!file_exists($pngAbsoluteFilePath)) {
    QRcode::png($data, $pngAbsoluteFilePath);
}       
echo '<img src="'.$urlRelativeFilePath.'" />';
    ?>

No entanto, acabei de receber um ícone de imagem. Alguém pode ajudar? Obrigado!

Dani

2
Dani Valverde

Atualizar:

Ok, eu fiz um teste. Eu me conectei ao #__users table e puxou os name e username do ID do usuário atualmente logado da seguinte maneira:

include(JPATH_LIBRARIES . '/phpqrcode/qrlib.php');

$db     = JFactory::getDbo(); 
$user   = JFactory::getUser();

$query = $db->getQuery(true);    
$query->select($db->quoteName(array('name', 'username')))
      ->from($db->quoteName('#__users'))
      ->where($db->quoteName('id') . ' = '. $db->quote($user->id));     
$db->setQuery($query);
$codeContents = $db->loadObjectList();

$data  = $codeContents[0]->name;
$data .= $codeContents[0]->username;

$tempDir  = JPATH_SITE . '/images/';   
$fileName = 'qr_'.md5($data).'.png';   
$pngAbsoluteFilePath = $tempDir.$fileName;
$urlRelativeFilePath = JUri::root() .'images/' . $fileName;

if (!file_exists($pngAbsoluteFilePath)) {
    QRcode::png($data, $pngAbsoluteFilePath);
}       
echo '<img src="'.$urlRelativeFilePath.'" />';

Isso criou o QRCode. Em seguida, digitalizei no meu telefone e ele exibiu os dados corretos. Portanto, no seu caso, altere o nome da tabela dtabase para o que desejar e digite os campos que deseja obter dessa tabela.

array('name', 'username') // Add what you want here

Então você precisa defini-los da seguinte forma:

$data .= $codeContents[0]->NAME_OF_FIELD;

Você verá um . (ponto) antes do = (igual) símbolo. Isso precisa ser feito para todos eles, exceto o primeiro, como mostrado no meu código.

Espero que isto ajude

1
Lodder