it-swarm.dev

Come posso recuperare i dati dalla tabella MySQL e inserirli nel codice QR usando PHP?

Ho questo PHP che dovrebbe recuperare i dati da un database MySQL e incorporarli in un codice 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.'" />';
    ?>

Tuttavia, ottengo solo un'icona immagine. Qualcuno può aiutare? Grazie!

Dani

2
Dani Valverde

Aggiornare:

Ok ho fatto un test. Mi sono collegato a #__users table e ha tirato name e username dell'ID dell'utente attualmente connesso in questo modo:

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.'" />';

Questo ha creato il QRCode. L'ho quindi scannerizzato sul mio telefono e ha visualizzato i dati corretti. Quindi, nel tuo caso, cambia il nome della tabella dtabase in qualsiasi cosa desideri e digita i campi che desideri ottenere da quella tabella.

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

Quindi è necessario definirli in questo modo:

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

Vedrai un . (punto) prima del = (uguale a) simbolo. Questo deve essere fatto per tutti tranne il primo, come mostrato nel mio codice.

Spero che sia di aiuto

1
Lodder