[komponent] Co skrewiłem?
Wyniki 1 do 8 z 8

Temat: [komponent] Co skrewiłem?

  1. #1
    Bywalec
    Dołączył
    15-10-2007
    Wpisy
    102
    Punkty
    30

    Domyślny [komponent] Co skrewiłem?

    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>){ // 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.

  2. Pani Reklamowa
    Pani Reklamowa jest aktywna
    Avatar Panny Google

    Dołączył
    19-08-2010
    Skąd
    Internet
    Postów
    milion
    Pochwał
    setki
  3. #2
    Wyga Jola awatar
    Dołączył
    08-01-2008
    Skąd
    Wrocław
    Wpisy
    3 239
    Punkty
    386

    Domyślny

    Witam,
    patrzę, patrzę ale nie widzę pytania w Twoim wątku .
    Co mi się nie podoba:
    JRequest::getVar($row->jezyk, '', 'post') w tym miejscu ma być nazwa, a nie wartość zmiennej POST.
    skąd pobierasz wartość $user->id ?

  4. #3
    Bywalec
    Dołączył
    15-10-2007
    Wpisy
    102
    Punkty
    30

    Domyślny

    od końca:
    $user->id pobieram z wywołania $user =& JFactory::getUser();
    $row->jezyk pobierana z bazy danych i jest to wartość string A-Z,a-z

    Coś spartoliłem i nie wiem co

    Generalnie to sie zapisuje tylko ostatni język czasami 2 razy, czasami są problemy z updatem no i zdarza się też ze jakimś sposobem zapisze mi się język z parametrem $poziom=1 (nie znam języka)

    formularz tworzy się dokładnie odwrotnie

    <td width="30%"><?php echo $jezyk->jezyk ?></td>
    <td>
    <select name="<?php echo $jezyk->jezyk; ?>">...


    mozna uznać: nazwa_z_bazy===nazwa_w_formularzu włącznie z Case sensitive
    Ostanio edytowane przez seeb : 20-12-2010 02:02 Powód: uzupełnienie

  5. #4
    Wyga Jola awatar
    Dołączył
    08-01-2008
    Skąd
    Wrocław
    Wpisy
    3 239
    Punkty
    386

    Domyślny

    Jeszcze raz powtarzam:
    JRequest::getVar($row->jezyk, '', 'post') w tym miejscu ma być nazwa, a nie wartość zmiennej POST.
    Przekładajac na formularz i pole input: ma być name a nie jak w Twoim przypadku value

  6. #5
    Bywalec
    Dołączył
    15-10-2007
    Wpisy
    102
    Punkty
    30

    Domyślny

    Ale to jest name nie value

    z bazy pobieram nazwe pola czy to ma znaczenie ze po każdym nowym dodaniu jakiegoś języka nie manipuluję formularzem to źle?
    w tabeli mam id jezyk gdzie id to jakaś liczba (klucz - potrzebny czy nie nie istotne) jezyk to nazwa języka czyli niemiecki, angielski etc.

    pole input tez pobiera dane z tych pól czyli input name ="cos" daje mi pozniej JRequest::getVar('cos', '', 'post') a value odczytuję dzięki temu, że znam nazwę z bazy danych

    ="angielski";

    <input name="<?echo $row->jezyk; ?>" ....>



    JRequest::getVar($row->jezyk, '', 'post')===JRequest::getVar('angielski', '', 'post')

    mylę się?
    Ostanio edytowane przez seeb : 20-12-2010 02:21

  7. #6
    Wyga Jola awatar
    Dołączył
    08-01-2008
    Skąd
    Wrocław
    Wpisy
    3 239
    Punkty
    386

    Domyślny

    Kod PHP:
    <select name="jezyk">
    <
    option value="angielski">Angielski</option>
    <
    option value="niemiecki">Niemiecki</option>
    <
    option value="rosyjski">Rosyjski</option>
    </
    select
    JRequest::getVar('jezyk', '', 'post')

  8. #7
    Bywalec
    Dołączył
    15-10-2007
    Wpisy
    102
    Punkty
    30

    Domyślny

    Kod PHP:
      <b>Języki</b>
        <
    p>
        <
    label>Angielski      <select name="Angielski">
              <
    option value="3" selected="selected">Średni</option>
                            <
    option value="1" >Nie znam/Niewymagany</option>                                
                                    <
    option value="2" >Podstawowy</option>
                                    <
    option value="3" >Średni</option>
                                    <
    option value="4" >Dobry</option>
                                    <
    option value="5" >Biegły</option>
                            </
    select>
        </
    label>
                    </
    p
    JRequest::getVar('Angielski', '', 'post')


    chodzi o to, że ty myślisz o jakimś języku a ja tu mam język i mam jakiś poziom wiedzy/znajomości języka i to jest główna różnica w myśleniu.

    Wyobraź sobie, że pani w domku w górach potrzebuje kogoś kto zna niemiecki zgłosi się 1000 osób ale w stopniu np biegłym np tylko 10.


    podobnie mam dane jakieś umiejętności/uprawnienia
    wiem jakie one są ale nie wiem jaki poziom kwalifikacji ma ktoś

    to że ktoś ma prawo jazdy nie oznacza ze pojedzie czymkolwiek
    zatem pracodawca mając ciężarówkę wymaga prawa jazdy ale kat.C a nie B jak ciężarówka ma przyczepę to jeszcze E

    pracownik musi mieć możliwość odpowiedzi ze ma takie uprawnienia.
    Ja mam A i B robię C ale puki nie zrobię mam a i b

    Ostanio edytowane przez seeb : 20-12-2010 02:36

  9. #8
    Wyga Jola awatar
    Dołączył
    08-01-2008
    Skąd
    Wrocław
    Wpisy
    3 239
    Punkty
    386

    Domyślny

    Pytania do bazy:
    - select jeśli zwraca jeden wynik
    Kod PHP:
    $sql 'cos-tam select'
    $db->setQuery$sql );
    $wynik_zapytania $db->loadResult(); 
    - jeśli update lub delete
    Kod PHP:
    $sql 'cos-tam update lub delete';
    $db->setQuery$sql );
    $db->query(); 


Podobne tematy

  1. Komponent bardzo szczegółowych statystyk serwisu oraz komponent do cytatów
    przez freeJoomla na forum Szukam dodatku do Joomla
    Odpowiedzi: 4
    Ostatni post/autor: 08-02-2010, 16:27
  2. komponent który wyswietli artykuł zawierajacy inny komponent
    przez adlibitum na forum Instalacja, aktualizacja, migracje
    Odpowiedzi: 3
    Ostatni post/autor: 26-05-2009, 19:46

Reguły pisania

  • Nie możesz zakładać nowych tematów
  • Nie możesz dodawać wypowiedzi
  • Nie możesz dodawać załączników
  • Nie możesz poprawiać swoich postów
  •