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
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