Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> AJAX a zapytania skorelowane/podzapytania - czy współpracują?
x X x
post
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 21.01.2014

Ostrzeżenie: (0%)
-----


Czy AJAX obsługuje podzapytania/zapytanie skorelowane?

Mam zapytanie, które jest poprawnie wyświetlane jako zapytanie SQL w PHPMyAdminie (XAMPP 1.8.3-2 dla OSX). Ale którego moja ajaxowa tabela w systemie nie potrafi wyświelić. Nie pojawiają się żadne dane, nawet nie pojawia się pusta tabela zadeklarowana w pliku. Zwykłe zapytania oczywiście działają poprawnie.

Ten post edytował x X x 5.03.2014, 16:18:44
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
x X x
post
Post #2





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 21.01.2014

Ostrzeżenie: (0%)
-----


Chciałem napisać to w moim poprzednim temacie (który, tak BTW) jest bardzo nieaktualny już) ale nie mogę niestety tego zrobić, dostaję komunikat o błędzie bez treści. Przepraszam więc, że zakładam nowy temat, ale potrzebuję pomocy jeszcze w jednej, w sumie ostatniej już rzeczy.

Kwestię wyświetlania ocen, wraz z odpowiednim zapytaniem już rozwiązałem, szczegóły opisane są w poniższym wątku:

Temat: AJAX a zapytania skorelowane podzapytania czy wspolpracuja

Aktualnie jestem na poziomie stworzenia funkcji, która:

1. Sprawdzi, czy pole id (pass_id) w wierszu, który chcę zedytować posiada jakąś wartość.
2. Jeżeli warunek jest spełniony (pass_id istnieje) - wykonuje się istniejąca funkcja, która wyświetli i po zatwierdzeniu wpisze w odpowiednie miejsce nowe dane. Przykładowo: jeżeli zmieniam ocenę w pass_id=9 - funkcja wykona operację update w polu pass, dla pass_id=9.
3. Jeżeli warunek nie jest spełniony (pass_id NIE istnieje):
A) funkcja pobiera class_id z edytowanego wiersza (pobierane jest ono w zapytaniu, ale jeżeli jest to konieczne może też być wyświetlane w tabeli)
B) funkcja pobiera student_id z edytowanego wiersza (j.w.)
C) w przypadku edycji pass (oceny) - pobiera ją i po kliknięciu OK -> D) wykonuje zapytanie INSERT INTO passes (...) VALUES (pobrane wartości)


Tym sposobem dane zostaną dodane, pass_id utworzy się samo (w tabeli PASSES jako AUTO INCREMENT). Tak przynajmniej ma to działać w teorii.

Zaprezentuję raz jeszcze funkcje, które moim zdaniem aktualnie za to odpowiadają:

plik search_results.html (potrzebny wycinek):
  1. ...
  2. <td name="ocena">
  3. <span id="pass-<?php echo $Pass['pass_id']; ?>" class="editable-select pass" style="color: red; weight: bold"><?php echo $Pass['pass']; ?></span>
  4. </td>
  5. ...
  6. $('.editable-select.pass', oTable.fnGetNodes()).editable(
  7. window.location.pathname.replace('Show', 'EditAjax'),
  8. {
  9. indicator: 'Zapisywanie',
  10. tooltip: 'Kliknij, żeby zedytować',
  11. id: 'row_id',
  12. cancel : 'Porzuć',
  13. submit : 'OK',
  14. type : 'select',
  15. data : " {'0':'0' , '2':'2' , '3':'3' , '3.5':'3.5' , '4':'4' , '4.5':'4.5' , '5':'5' , 'ZAL':'ZAL'} ",
  16. submitdata : function(value, settings){
  17. return {ajax: true}
  18. },
  19. callback: function(value, settings){
  20. $(this).text(value.replace(/ /g, ""));
  21. }
  22. }
  23. );


z pliku Controller.php (obsługa funkcji EditAjax):
  1. public function EditAjax(){
  2. if(!empty($_POST)){
  3. $v = explode('-', $_POST['row_id']);
  4. $arr = array();
  5. $id = $v[1];
  6. $arr[$v[0]] = $_POST['value'];
  7. parent::EditRecord($id, $arr);
  8. if(isSet($_POST['select_edit'])){
  9. $Table = parent::RewriteTable(parent::GetTable($_POST['select_edit']), $_POST['edit_id']);
  10. echo $Table[$_POST['value']]['name'];
  11. } else {
  12. echo $_POST['value'];
  13. }
  14. }
  15. }


z pliku Modules.php (funckja EditRecord, z której dziedziczy EditAjax):
  1. public function EditRecord($id, $arr, $tab = '', $tab_id = ''){
  2. if($tab == '') $tab = $this->table;
  3. if($tab_id == '') $tab_id = $this->table_id;
  4. $Result = $this->DB->update($tab, $arr, $tab_id.' = '.$id);
  5. $this->AddLog('edit', $tab, $id);
  6. return $Result;
  7. }


z pliku Modules.php, funkcja AddRecord, którą być może można by wykorzystać (owa wykorzystywana jest w wypadku dodawania danych do bazy za pomocą zwykłego formularza:
  1. public function AddRecord($arr, $tab = ''){
  2. if($tab == '') $tab = $this->table;
  3. $where = '';
  4. $count = 0;
  5. $len = count($arr);
  6. $pattern = '/^dont_save/i';
  7.  
  8. foreach($arr as $k => $v){
  9. $count++;
  10. if(!preg_match($pattern, $k)){
  11. $where .= $k.' = "'.$v.'"' ;
  12. if($count < $len)
  13. $where .= ' AND ';
  14. }
  15. }
  16. if($len > 0){
  17. $AlreadyIs = $this->DB->select($tab, $where);
  18. if($AlreadyIs){
  19. return 2;
  20. } else {
  21. $Result = $this->DB->insert($tab, $arr);
  22. $this->LastAddedIndex = $this->DB->lastInsertId();
  23. $this->AddLog('add', $tab, $this->DB->lastInsertId());
  24. return 1;
  25. }
  26. }
  27. return 0;
  28. }


Na razie siedzę nad tym i próbuję coś wymyśleć, ale bezskutecznie.

Ten post edytował x X x 10.03.2014, 18:14:42
Go to the top of the page
+Quote Post

Posty w temacie
- x X x   AJAX a zapytania skorelowane/podzapytania - czy współpracują?   5.03.2014, 16:17:50
- - nospor   Cos ci sie pomieszalo..... mysql nie ma zadnego zw...   5.03.2014, 16:22:53
- - x X x   Hm no w systemie tworzy się pewna tabela, która ma...   5.03.2014, 16:31:24
- - nospor   Ja nie mowie, ze to nie jest wina ajaxa. Ja mowie,...   5.03.2014, 16:33:51
- - x X x   Plik controller.php: [PHP] pobierz, plaintext pub...   5.03.2014, 19:18:54
- - PrinceOfPersia   przecież to nie AJAX, to zwykły HTML. pomieszany ...   6.03.2014, 07:51:59
- - x X x   Nie jest to cały kod. search_result.html to tylko ...   6.03.2014, 13:28:33
|- - PrinceOfPersia   Cytat(x X x @ 6.03.2014, 13:28:33 ) N...   7.03.2014, 07:12:25
- - nospor   Podam ci jeszcze raz linka do tematu: Temat: Jak p...   6.03.2014, 13:50:41
- - x X x   Nie wiem czy robię to dobrze, ale z plikiem html o...   6.03.2014, 14:55:18
- - nospor   mysql_query($Result) Jakie $result? Prz...   6.03.2014, 14:59:13
- - x X x   Tak jak napisałem wcześniej. Tak jak to rozumiem, ...   6.03.2014, 15:08:41
- - nospor   $Result ma zapisane rekordy pobrane z bazy. P...   6.03.2014, 15:17:42
- - x X x   To w jaki sposób wyświetlić zawartość zmiennej ...   6.03.2014, 15:20:49
- - nospor   print_r($Result); ? przenosze na przedszkol...   6.03.2014, 15:21:48
- - x X x   Nie dostaję żadnych wyników oraz żadnego komunikat...   6.03.2014, 15:44:05
- - nospor   No bo juz ci mowilem, ze widac, ze $Result ta...   6.03.2014, 15:52:34
- - x X x   No to dlaczego jeżeli, tak jak w pliku search_resu...   6.03.2014, 15:59:19
- - x X x   PrinceOfPersia, wielce dziękuję ci za powyższą odp...   7.03.2014, 13:01:30
|- - PrinceOfPersia   Cytat(x X x @ 7.03.2014, 13:01:30 ) P...   8.03.2014, 07:00:51
- - x X x   Może i coś nazwałem nieprawidłowo, sugerowałem się...   8.03.2014, 16:58:52
- - x X x   Chciałem napisać to w moim poprzednim temacie (któ...   10.03.2014, 18:00:43
- - Kshyhoo   A mnie się udało napisać... łączę wątki.   10.03.2014, 18:09:06
- - x X x   Nie chodziło mi o ten wątek, ale z działu Bazy Dan...   13.03.2014, 19:38:17


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.01.2026 - 12:22