![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 468 Pomógł: 36 Dołączył: 14.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam, chce zrobic zapis na dane eventy. przy nacisnieciu przycisku ma byc wywolywana funkcja ajaxa ktora ma przeslac dane do bazy mysql (w momencie kiedy ktos zapisuje sie na dany event). No i tu pojawia sie problem gdyz z poziomu widoku (gdzie mam skrypt js) musze przeslac dane i wywolac skrypt php ktory polaczy sie z baza i wysle zapytanie... a do tego potrzebuje juz zaladowania modelu. W jaki sposob to zrobic, czy moze moje rozumowanie jest bledne i jest jakis prosty sposob
![]() |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 165 Pomógł: 20 Dołączył: 2.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Ale w czym problem?
Po prostu wywołaj daną metodę kontrolera który obsłuży całe twoje zapytanie. Dodatkowo możesz sprawdzić czy to zapytanie jest ajaksowe przez:
http://codeigniter.com/user_guide/libraries/input.html -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 468 Pomógł: 36 Dołączył: 14.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
ale to w widoku poprostu dac
$this->load->model('blabla'); $this->blabla->metoda(); w skrypcie ajaxa ? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 165 Pomógł: 20 Dołączył: 2.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Rozumiem że ajaksem chcesz przesłać jakie dane POST tak?
To po prostu wczytujesz ajaksem adres tak samo jak w przeglądarce. domena.pl/controller/mojaakcja I w niej wykonujesz wszystko jak w kontrolerze, tylko zwracasz format taki jaki chcesz. np możesz wysłać czysty kod HTML który jest renderowany przez kontroler i ładujesz go do jakiegoś diva co masz na stronie. -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 468 Pomógł: 36 Dołączył: 14.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
no i wlasnie zrobilem tak ale cos mi nie pyka
![]() moja funkcja w widoku:
moj kontroler : Kod function ajax_function($id){ $data = array( 'userid' => $this->session->userdata('username'), 'id' => $id ); $this->db->insert('enroll', $data); } no i nie wiem dlaczego to moze nie dzialac, bede mega wdzieczny za pomoc z tym ;p Ten post edytował jacobson 24.05.2011, 22:29:23 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 165 Pomógł: 20 Dołączył: 2.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Nie post, tylko lepiej użyć load w jquery, rozumiem że to w jquery jest?
Kod function enroll(id){ $('#result').load('http://localhost/index.php/main/ajax_function/'+id, function() { alert('Load was performed.'); }); } I do Diva o ID result wrzuca Ci wynik -------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 468 Pomógł: 36 Dołączył: 14.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
nom tylko to ma tak nie dzialac
![]() |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 165 Pomógł: 20 Dołączył: 2.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
To po prostu zrób pustego diva gdzieś, display:none; i po kłopocie.
-------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
no i wlasnie zrobilem tak ale cos mi nie pyka ![]() ... no i nie wiem dlaczego to moze nie dzialac, bede mega wdzieczny za pomoc z tym ;p Napisz czym objawia się owe "nie działanie". Jeśli nie korzystasz to zacznij korzystać z dodatku Firebug do Firefoxa. W sytuacjach pracy z Ajaxem jest naprawdę niezastąpiony. Może żądanie się w ogóle nie wywołuje? Może po drodze wali jakimś błędem? Zobaczysz na jaki adres idzie żądanie, jakie parametry ze sobą niesie oraz co uzyskuje w rezultacie. Swoją drogą: w kontrolerze widzę $this->db. Na pewno w kontrolerze masz dostęp do bazy danych? Nie powinno to być przypadkiem odwołanie do metody modelu? |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 165 Pomógł: 20 Dołączył: 2.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Swoją drogą: w kontrolerze widzę $this->db. Na pewno w kontrolerze masz dostęp do bazy danych? Nie powinno to być przypadkiem odwołanie do metody modelu? CI na to pozwala, że można bez modeli się obejść. Ale zalecane jest jednak tworzenie modeli aby było zgodne z mvc ![]() -------------------- |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 468 Pomógł: 36 Dołączył: 14.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
tak dorobilem model i nie dzialalo podzialalem firebugiem i odkrylem mega glupi blad... chcialem uploadowac do bazy varchar(10) a mialem tam ustalone pole varchar(5)
![]() Dziekuje wszystkim za pomoc A tak zeby nie tworzyc nowego tematu... to chcialbym zeby eventy na ktore uzytkownik jest zapisany mialy ten button Zapis ustawiony na hidden, ale nie mam zielonego pojecia jak to zrobic. Wiem ze nie korzystac sie z wywolywania modelu z widoku. Za to do kontrolera nie mam jak przeslac id eventu na ktory uzytkownik sie zapisuje ... Czy ktos moze podsunalby jakis "dobry" pomysl ![]() |
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Ja bym to zrobił tak:
1. Pobierasz z bazy eventy widoczne na danej podstronie (zakładam, że masz stronicowanie). 2. W pętli pobierasz ich identyfikatory i zapisujesz do tablicy. 3. Pobierasz z bazy z tabeli wiążącej event z użytkownikiem te eventy, na które zapisany jest użytkownik i zapisujesz je do tablicy. 4. Wyświetlając eventy w widoku dla każdego sprawdzasz czy jego id występuje w tablicy eventów, na które jest zapisany użytkownik (np. in_array). Jeśli nie to wyświetlasz mu przycisk, jeśli nie to go nie wyświetlasz. |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 468 Pomógł: 36 Dołączył: 14.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
hehe dokladnie tak zrobilem... w kontrolerze dalem zmienna $data['is_enrolled'] = array(); i potem do tej zmiennej przypisuje $this->mojmodel->mojafunkcja();
w funkcji pobieram wszystkie id eventow dla uzytkownika (username pobrane z sesji) i zapisuje do tablicy (array_push) i na koniec ja zwracam. W moim widoku w foreachu dalem dodatkowy warunek in_array dany id eventu w tablicy i jak tak to zeby wyswietlal pusty link a jak nie to zeby wyswietlal link do zapisu i smiga ladnie ![]() ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 1.07.2025 - 04:33 |