web-dev-qa-db-fra.com

Comment puis-je récupérer des données d'une table MySQL et les insérer dans un code QR à l'aide de PHP?

J'ai ce code PHP) qui devrait extraire des données d'une base de données MySQL et les incorporer dans un code 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.'" />';
    ?>

Cependant, je viens d'obtenir une icône d'image. Quelqu'un peut-il aider? Merci!

Dani

2
Dani Valverde

Mise à jour:

Ok j'ai fait un test. Je me suis connecté à la table #__users Et ai extrait les name et username de l'ID de l'utilisateur actuellement connecté comme suit:

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

Cela a créé le QRCode. Je l'ai ensuite scanné sur mon téléphone et les données correctes ont été affichées. Donc, dans votre cas, changez le nom de la table dtabase en ce que vous souhaitez et saisissez les champs que vous voulez obtenir de cette table.

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

Ensuite, vous devez les définir comme suit:

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

Vous verrez un . (Point) avant le symbole = (Égal). Cela doit être fait pour tous, à l'exception du premier, comme indiqué dans mon code.

J'espère que cela t'aides

1
Lodder