wlasny komponent kilka pytań o zmienne
Strona 1 z 2 12 OstatniOstatni
Wyniki 1 do 10 z 14

Temat: wlasny komponent kilka pytań o zmienne

  1. #1

    Domyślny wlasny komponent kilka pytań o pobieranie danych z mySQL - rozwiązane

    witam,

    piszę własny komponent do obsługi pewnych informacji na stronie.

    w bazie mySQL mam coś takiego:
    Kod PHP:
    -- Struktura tabeli dla  `jos_sklepy`
    -- 

    CREATE TABLE `jos_sklepy` (
      `
    idint(255NOT NULL auto_increment,
      `
    nazwavarchar(50NOT NULL,
      `
    nazwa_cdvarchar(150NOT NULL,
      `
    adresvarchar(200NOT NULL,
      `
    mapavarchar(150NOT NULL,
      `
    czynnetext NOT NULL,
      `
    nfzvarchar(5NOT NULL,
      `
    sprzetvarchar(50NOT NULL,
      `
    dowozvarchar(5NOT NULL,
      `
    telefonvarchar(10NOT NULL,
      `
    wojvarchar(50NOT NULL,
      `
    pubvarchar(5NOT NULL,
      
    PRIMARY KEY  (`id`)
    ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=;

    -- 
    -- 
    Zrzut danych tabeli `jos_sklepy`
    -- 

    INSERT INTO `jos_sklepyVALUES (1'apteka1''apteka_cd''adres''mapa''czynne''nfz''sprzet''dowoz''telefon''woj''pub');
    INSERT INTO `jos_sklepyVALUES (2'apteka2''apteka_cd2''adres2''mapa2''czynne2''nfz2''sprzet2''dowoz''telefon2''woj2''pub2'); 
    // powyższy przykład jest uproszczony dla tego przykładu.

    i kod odwołujący się do tego:

    Kod PHP:
    $db =& JFactory::getDBO();
    $query "SELECT * FROM #__sklepy";


    $db->setQuery($query);

    $row $db->loadAssoc();
    //print_r($row);

    echo $row[0]['nazwa']; 
    jak mam pobrać zmienne aby otrzymać je w tablicy jakiej potrzebuję?



    po odwołaniu się do $row[0]['nazwa'] dawał mi: apteka


    czyli odwołaniu sie do tablicy oddawał mi:
    [0]['nazwa'] -> apteka, [0]['nazwa_cd'] -> apteka_cd itd.
    [1]['nazwa'] -> apteka2, [0]['nazwa_cd'] -> apteka_cd2 itd.


    Lub gdzie tego szukać, z przykładami, bo tak najłatwiej mi się uczyć...
    Ostanio edytowane przez ciubas : 17-04-2010 15:37 Powód: rozwiazane

  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
    Senior moje awatar
    Dołączył
    08-01-2008
    Skąd
    Silesia
    Wpisy
    6 057
    Punkty
    188

    Domyślny

    A na docs.joomla.org kolega był? Np. taka fraza jak loadObjectList ;)
    Webdeveloper do usług ;)

  4. #3

    Domyślny

    dzięki! po chwili poszukiwań znalazłem:

    http://docs.joomla.org/How_to_use_th...jectList.28.29

    wprawdzie są małe błędy (zmienna $result nagle znika i pojawia się $row), ale o to dokładnie mi chodziło!

    Kod PHP:
    $db->setQuery($query);
    $result $db->loadObjectList();
    print_r($result); 
    and you can access the individual values by using:

    Kod PHP:
    $row['index']->name // e.g. $row['2']->email 
    czyli w moim przypadku:

    Kod PHP:
    $db =& JFactory::getDBO();
    $query "SELECT * FROM #__sklepy";
    $db->setQuery($query);
    $result $db->loadObjectList();
    //print_r($result);
    echo $result[0]->nazwa

  5. #4
    Przeglądacz f1xer awatar
    Dołączył
    10-03-2008
    Wpisy
    92
    Punkty
    32

    Domyślny

    Jeżeli spodziewasz się tylko jednego wyniku to lepiej użyj loadObject, jeżeli używasz loadObjectList to warto skorzystać z konstrukcji foreach za pomocą której wyświetlisz wszystkie rekordy.
    np:
    Kod PHP:
    $db = & JFactory::getDBO();
    $query="SELECT * FROM #__sklepy";
    $db->setQuery($query);
    $wynik=$db->loadObjectList();
    foreach (
    $wynik as $rekord){
      echo 
    $rekord->nazwa;


  6. #5

    Domyślny

    Akurat ja to robię trochę inaczej:

    Kod PHP:
    $irow $db ->getAffectedRows();

        for (
    $i 0$i $irow$i++)
                        {
                            if (
    $result[$i]->miasto <> $result[$i-1]->miasto)
                                { 
                                    echo 
    '<h1>'.$result[$i]->miasto.'</h1>'
                                }
                            echo 
    '<h2>'.$result[$i]->nazwa .'</h2>';
                        }; 
    Ale dzięki za tą pętle na pewno sie przyda ;]


    Mam jeszcze inne pytanie, natury bezpieczeństwa - chce zrobić tak aby użytkownicy (anonimowi), mogli zgłaszać apteki. Jakiego polecenia użyć (chcę to zapisywać do jednej tabeli, po czym admin edytuje/poprawia i klika publish). Czy tak to może wyglądać, czy sugerujecie inne rozwiązanie?

  7. #6
    Senior moje awatar
    Dołączył
    08-01-2008
    Skąd
    Silesia
    Wpisy
    6 057
    Punkty
    188

    Domyślny

    Ja bym zrobił "poczekalnię" w osobnej tabeli lub w pliku (np.) xml, do tego filtracja treści z tagów html i całych linków.

    Odczyt z "poczekalni", po edycji i/lub zaakceptowaniu, zapis w miejsce docelowe, w przypadku odrzucenia, usuniecie z "poczekalni".
    Webdeveloper do usług ;)

  8. #7

    Domyślny

    Po co w innej tabeli tą poczekalnie? Te dane nie będą inne, tylko ograniczone ponieważ użytkownik ma wprowadzić tylko: nazwę sklepu, miasto, ulicę, województwo (rozwijana), sprzęt, numer telefonu oraz myślę coś na boty. A aptek nie będzie więcej niż 100-200 łącznie. Więc czy w takim wypadku jest sens wrzucania tego do osobnej tabeli?

    I jaką funkcją Joomli to się robi (wrzuca zapytanie do bazy), bo szukam ale nie potrafię takowej znaleźć...

  9. #8
    Senior moje awatar
    Dołączył
    08-01-2008
    Skąd
    Silesia
    Wpisy
    6 057
    Punkty
    188

    Domyślny

    To możesz dodać zmienną zatwierdzone, dla przykładu if $zatwierdzone==0 { nie wyświetla na stronie } else if $zatwierdzone==1 { wyświetla na stronie }.

    Ja bym zrobił poczekalnię.

    Zapis np tak:
    Kod PHP:
    $intosql "...";
    $db->setQuery($intosql);
    $db->query(); 
    Webdeveloper do usług ;)

  10. #9

    Domyślny

    Zmienna published - ta sugerowana przez wszystkie kursy - taką chciałem umieścić. Ale to najmniejszy problem akurat.

    Na razie działa to przez zapytanie do bazy:

    Kod PHP:
    $query "
                    SELECT *
                    FROM #__sklepy
                    WHERE woj='"
    .$woj."' AND pub=1
                    ORDER BY miasto;
                    "

    Rozumiem że sugerujesz poczekalnię -> nie ma powodu żeby jej nie robić - tylko mnie ciekawi powód czemu ją zrobić - zawsze słucham starszych ;)

    Kurcze coś mi to nie działało jak testowałem - dzięki!
    Ostanio edytowane przez ciubas : 19-04-2010 21:28

  11. #10
    Senior moje awatar
    Dołączył
    08-01-2008
    Skąd
    Silesia
    Wpisy
    6 057
    Punkty
    188

    Domyślny

    Teraz jaśniej?
    Kod PHP:
    $intosql "insert into #__sklepy values( ... , ... , ... , ... , ... );
    $db->setQuery($intosql);
    $db->query(); 
    Do poczekalni podchodzę tak, że jak coś rozwali poczekalnię, to rozwali poczekalnię (tabelę), jeśli jakimś sposobem będzie tam jakiś złośliwy kod, to nie ma on dostępu do strony.

    Jeśli robisz katalog/zbiór firm/aptek, to nie lepiej użyć SOBI2?
    Webdeveloper do usług ;)

Strona 1 z 2 12 OstatniOstatni

Podobne tematy

  1. [Problem] Wlasny komponent i funkcje w php
    przez mari008 na forum Programowanie pod Joomla!
    Odpowiedzi: 7
    Ostatni post/autor: 14-01-2010, 12:00
  2. Kilka pytań
    przez damian1812 na forum Rozszerzenia - problemy z obsługą, zarządzaniem
    Odpowiedzi: 4
    Ostatni post/autor: 08-02-2009, 13:47
  3. [wlasny komponent] problem z Menu Item Type
    przez guzi na forum Pomysły, sugestie, propozycje, oczekiwania
    Odpowiedzi: 7
    Ostatni post/autor: 15-02-2008, 16:52
  4. Kilka pytań
    przez epredator na forum Szablony graficzne
    Odpowiedzi: 1
    Ostatni post/autor: 01-11-2006, 19:47
  5. Kilka Pytań
    przez brolly na forum Administracja Joomla!
    Odpowiedzi: 4
    Ostatni post/autor: 25-08-2006, 18:49

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
  •