coś skrewiłem i nie widzę już co.
Baza danych zawiera 2 pola: id (autoincrement) język (vchar 50)
przykładowo:
1 Angielski
2 Niemiecki
...
druga tabela zawiera: [#__poziomy]
id(autoincrement) poziom
1 nie znam
2 podstawowy
3 sredni
4 zaawansowany
5 biegły
6 biegły biznesowy
trzecia tabela zamwiera:[#__usersTojezyki]
uid(user id) jezyk(id jezyka) poziom (id poziomu)
64 1 5 uzytkownik $user->id=64 zna jezyk angielski na poziomie biegłym
Kod PHP:
$q="SELECT * FROM #__jezyki order by id asc";
$db->setQuery($q);
if ($rows = $db->loadObjectList()){
foreach ($rows as $row){
$this->savejezykiUser($user->id,$row->id,JRequest::getVar($row->jezyk, '', 'post'));
}// koniec foreach
}// koniec if $rows =
kod metody:
function savejezykiUser($uid,$jezyk,$poziom=1){
/**
* zapisujemy jezyk i poziom jego znajomosci do bazy przypisując je uzytkownikowi.
* Aby rozpoznać jakie mamy języki musimy pobrac je z bazy i wstawic do tabeli z uid uzytkownika
*
*/
$db =& JFactory::getDBO();
$czyjestwpis="SELECT * FROM #__usersTojezyki WHERE uid='".$uid."' AND jezyk='".$jezyk."'";
$db->setQuery($czyjestwpis);
$db->Query();
$dane=$db->getNumRows();
if($db->getNumRows()>0){
if ($poziom>1 ){ // poziomu 1 nie zapisujemy bo to znaczy ze nie znamy jezyka wiec tez nie bedziemy aktualizowali
$wpis="UPDATE #__usersTojezyki SET `poziom` = '".$poziom."' WHERE `uid` ='".$uid."' AND `jezyk` ='".$jezyk."'";
}// if nie znam nie wymagany
else {
/**
* jesli nie znasz jezyka nie bedziemy tego trzymali w bazie danych :) bo i po co?
* poniższy kod jest zabezpieczeniem przed zapisaniem w bazie danych informacji
* o braku znajomosci jezyka pamietanie ze czegos nie ma sprawdza sie tylko w przypadku zakupow :)
*
*/
$wpis="DELETE FROM #__usersTojezyki WHERE `uid` ='".$uid."' AND `jezyk` ='".$jezyk."'";
}// koniec else poziom >1
$db->setQuery($wpis);
$db->Query();
$db->getAffectedRows ();
}// koniec if numRows
else {
$usersTojezyki =& JTable::getInstance("usersTojezyki", "Table");
// tu wykonamy joomlowskie save/store
if ($poziom>1){
$usersTojezyki->uid=$uid;
$usersTojezyki->jezyk=$jezyk;
$usersTojezyki->poziom=$poziom;
if(!$usersTojezyki->store()){
echo "błąd zapisu: ".$usersTojezyki->getError();
$blad.=" błąd zapisu: ".$usersTojezyki->getError();
return false;
}// if !store
}// koniec if wiekszy od 1
}// koniec else
}// koniec savejezyki
Podobny problem mam z uprawnieniami struktura jest podobna ...
za wszelkie wsparcie będę wdzięczny.