PDA

Zobacz pełną wersję : Problem z LMS basic edition



rab
22-12-2009, 21:46
Witam serdecznie!


Zdecydowalem sie na użycie na mojej stronie modułu LMS produkcji joomlashowroom... i byłoby swietnie gdyby nie mały szczegół.
Po zdanym kursie można sobie wydrukować certyfikat.
Pomimo wszystkich ustawień w konfiguracji komponent zwraca komunikat ze brak certyfikatu dla danego szkolenia.

Dopiero po włączeniu debugowania na stronce wyszło ze ma miejsce tam jakiś błąd SQL, ale niestety nie jestem w stanie zbyt wiele z tego wyczytac.
Może któś z Was może mi powiedzieć w którym kościele ddzwoni.

Z góry dziękuję
RaB
Oto ten komunikat:

500 - JDatabaseMySQL::query: 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND testid =' at line 4 SQL=SELECT UNIX_TIMESTAMP(date_created) FROM jos_lms_results WHERE userid = AND testid =
Możliwe, że nie możesz zobaczyć tej strony, ponieważ

Użyta zakładka jest nieaktualna
Twoja wyszukiwarka nie odświeżyła jeszcze mapy naszej witryny
Adres został wpisany z błędem
Nie masz uprawnień do obejrzenia tej strony
Joomla! nie może zlokalizować wskazanego zasobu.
Wystąpił błąd podczas wykonywania powierzonego zadania. Spróbuj jednej z następujących stron:


Strona startowa (http://www.e-lasy.pl/index.php) Jeśli problem się powtarza, skontaktuj się z administratorem witryny.
JDatabaseMySQL::query: 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND testid =' at line 4 SQL=SELECT UNIX_TIMESTAMP(date_created) FROM jos_lms_results WHERE userid = AND testid =

Call stack # Function Location 1 JSite->dispatch() /srv/home/fco64756/public_html/index.php:68 2 JComponentHelper->renderComponent() /srv/home/fco64756/public_html/includes/application.php:124 3 require_once() /srv/home/fco64756/public_html/libraries/joomla/application/component/helper.php:162 4 lmsBuildCertificate() /srv/home/fco64756/public_html/components/com_lms/lms.php:130 5 JDatabaseMySQL->loadResult() /srv/home/fco64756/public_html/components/com_lms/lms.php:1567 6 JDatabaseMySQL->query() /srv/home/fco64756/public_html/libraries/joomla/database/database/mysql.php:355 7 JError->raiseError() /srv/home/fco64756/public_html/libraries/joomla/database/database/mysql.php:231 8 JError->raise() /srv/home/fco64756/public_html/libraries/joomla/error/error.php:171 9 JException->__construct() /srv/home/fco64756/public_html/libraries/joomla/error/error.php:136

Jola
22-12-2009, 22:02
Witam,
z komunikatu wynika, że do zapytania nie jest przekazywana wartość testid.
Nie znam modułu, czy wszystko zostało skonfigurowane?

rab
22-12-2009, 22:48
Wydaje się, że tak, bo sama konfiguracja jest bardzo prosta i lakoniczna.
przeinstalowywalem moduł z czyszczeniem tablic włącznie.

czyli komunikat błędu mówi ze nie może pobrć wartość z testid?

Poniżej wrzucam funkcje odpowiedzialna za generowanie certyfikatu, lub bardziej pobieranie danych do tego niezbednych i nie bardzo mogę znaleźć jakiś błąd w czymś takim. iem, że wycinek może nic nie mowić ale może sie komuś coś rzuci w oczy:)

-----------------------------------------
function lmsBuildCertificate(){
global $database, $mosConfig_absolute_path, $mosConfig_live_site, $testid, $lmsProfile;

// Clean the output directory
lmsDeleteCertificates() ;

// Get date of test
$query = "SELECT UNIX_TIMESTAMP(date_created)"
. "\n FROM #__lms_results"
. "\n WHERE userid = " . $lmsProfile->id
. "\n AND testid = " . $testid
;
$database->setQuery( $query );
$dateoftest = $database->loadResult();

$params = lmsTestParams($testid);

$name = $params->get('certificate','-1');
$locX = $params->get('locX','180');
$locY = $params->get('locY','350');
$locS = $params->get('locS','20');
$locA = $params->get('locA','left');

$dateformat = $params->get('dateformat','-1');
$dateX = $params->get('dateX','520');
$dateY = $params->get('dateY','550');
$dateS = $params->get('dateS','12');
$dateA = $params->get('dateA','left');

if ($name == '-1'){
HTML_lms::showMessage(_LMS_NOCERTIFICATE);
return ;
}

$file = $mosConfig_absolute_path . "/components/com_lms/certificates/" . $name;
if (!file_exists($file)){
HTML_lms::showMessage(_LMS_NOCERTIFICATE);
return ;
}

// Directory of certificates
$baseurl = "certificates/";

$vars = array();
$vars['SRCFILE'] = $baseurl . $name ;
$vars['NODEL'] = 1;
$vars['USERID'] = $lmsProfile->id ;

$rows[0]->text = $lmsProfile->fullname;
$rows[0]->x = $locX;
$rows[0]->y = $locY;
$rows[0]->size = $locS;
$rows[0]->align = $locA;

$rows[1]->text = date($dateformat,$dateoftest);
$rows[1]->x = $dateX;
$rows[1]->y = $dateY;
$rows[1]->size = $dateS;
$rows[1]->align = $dateA;

// ADD: language definition for fe_img.html
$vars['PREPCERTIFICATE'] = _LMS_PREPCERTIFICATE ;
$vars['PREPCERTIFICATETEXT'] = _LMS_PREPCERTIFICATETEXT ;
$vars['VIEWPREPCERTIFICATE'] = _LMS_VIEWPREPCERTIFICATE ;

HTML_lms::showGeneric($vars,$rows,"fe_img.html","image");

Jola
22-12-2009, 22:55
Nie, to kod php nie wstawia do zapytania wartości testid.
Czyli zapytanie wygląda tak:

SELECT UNIX_TIMESTAMP(date_created) FROM jos_lms_results WHERE userid = AND testid =O teraz widzę, że nie podaje również userid.
Tyle mogę powiedzieć bez dostępu do kodu modułu.