私はこれを持っていますPHP MySQLデータベースからデータを取得して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.'" />';
?>
ただし、画像のアイコンしか表示されません。誰か助けてもらえますか?ありがとう!
ダニ
さて、私はテストをしました。 #__users
テーブルに接続し、現在ログインしているユーザーのIDのname
とusername
を次のようにプルしました。
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.'" />';
これによりQRコードが作成されました。その後、スマートフォンでスキャンしたところ、正しいデータが表示されました。したがって、あなたのケースでは、dtabaseテーブル名を任意の名前に変更し、そのテーブルから取得するフィールドに入力します。
array('name', 'username') // Add what you want here
次に、次のように定義する必要があります。
$data .= $codeContents[0]->NAME_OF_FIELD;
.
(equals)記号の前に=
(ドット)が表示されます。これは、私のコードに示されているように、最初の1つを除くすべてのユーザーに対して実行する必要があります。
お役に立てれば