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%)
-----


Nie jest to cały kod. search_result.html to tylko plik html/php z pewnymi skryptami javy, które umożliwiają np. edycję pobranych danych i wysyłanie ich ponownie tam, skąd zostały pobrane. Natomiast za tworzenie tej tabeli odpowiedzialna jest inna funkcja, chyba jest to ta funkcja (tzn. za wyświetlanie tych 10 wyników, sortowanie ich, wybieranie z listy rozwijanej tylko wybranych danych, etc.).

plik nazywa się modules.php i jest to jedna z wielu zawartych w nich funkcji. Pokażę wszystkie, które moim zdaniem mogą być wywoływane do wyświetlania tabeli:
  1. ...
  2.  
  3. public function GetConnectionTab($column, $table){
  4. $Tab = array();
  5. $sql = 'SELECT DISTINCT '.$column.' FROM '.$table;
  6. $Res = $this->DB->run($sql);
  7.  
  8. foreach($Res as $v){
  9. $Tab[] = $v[$column];
  10. }
  11. return $Tab;
  12. }
  13.  
  14. ...
  15.  
  16. public function Select($from, $whe = '', $fields = '*'){
  17. $Res = array();
  18. $Res = $this->DB->select($from, $whe, '', $fields);
  19. return $Res;
  20. }
  21.  
  22. ...
  23.  
  24. public function SelectSingle($from, $whe = '', $fields = '*'){
  25. $R = $this->Select($from, $whe, $fields);
  26. return (isSet($R[0])) ? $R[0] : null;
  27. }
  28.  
  29. ...
  30.  
  31. public function GetResults(){
  32. return $this->GetTable($this->table);
  33. }
  34.  
  35. public function GetPassesTable(){
  36. $Result = $this->DB->select('userpermissions up, results r, subjects sb, classestypes ct, employees e, students st, passes ps', 'up.user_id = '.$this->User->GetID().' AND up.course_id = r.course_id AND sb.subject_id = r.subject_id AND ct.classestype_id = r.classestype_id AND e.employee_id = r.employee_id AND st.student_id = r.student_id AND st.student_id=ps.stutend_id ORDER BY r.pass', 'r.*, ps.*');
  37. return $Result;
  38. } //OWA FUNKCJA, RACZEJ NIE WPŁYWA NA WYŚWIETLANE DANE, PONIEWAŻ ZAKOMENTOWANIE PODOBNYCH DLA INNYCH TABEL NIE WPŁYWA NA TO CO WYŚWIETLA SIĘ W TABELI PLIKU WYNIKOWEGO search_results.html
  39.  
  40. ...
  41.  
  42. public function GetTable($TableName, $Where = ''){
  43. $Result = array();
  44.  
  45. if($this->User->GetPermission() == '99' || '25'){ //25 dodane aby wyświetlała się zawartośc modułu PASSES dla EMPLOYEE
  46. switch($TableName){
  47. case 'passes' : $Result = ($Where != '') ? $this->DB->select($TableName, $Where) : $this->DB->select($TableName); break;
  48. case 'employees' : $Result = ($Where != '') ? $this->DB->select($TableName, $Where.' ORDER by last_name') : $this->DB->select($TableName, ' 1 = 1 ORDER By last_name'); break;
  49. case 'classes' : $Result = ($Where != '') ? $this->DB->select($TableName, $Where) : $this->DB->select($TableName); break;
  50. case 'users' : $Result = ($Where != '') ? $this->DB->select($TableName, $Where) : $this->DB->select($TableName); break;
  51. case 'logs' :$Result = ($Where != '') ? $this->DB->select($TableName, $Where) : $this->DB->select($TableName); break;
  52. default : $Result = ($Where != '') ? $this->DB->select($TableName, $Where.' ORDER by name') : $this->DB->select($TableName, ' 1 = 1 ORDER By name'); break;
  53.  
  54. }
  55. } else {
  56. switch($TableName){
  57. case 'passes' : $Result = $this->GetPassesTable(); break; //TABELA PASSES
  58. case 'courses' : $Result = $this->GetCoursesTable(); break;
  59. case 'units' : $Result = $this->GetUnitsTable(); break;
  60. case 'specialties' : $Result = $this->GetSpecialtiesTable(); break;
  61. case 'subjects' : $Result = $this->GetSubjectsTable(); break;
  62. case 'classes' : $Result = $this->GetClassesTable(); break;
  63. case 'employees' : $Result = $this->GetEmployeesTable(); break;
  64. case 'students' : $Result = $this->GetStudentsTable($Where); break;
  65. default : $Result = ($Where != '') ? $this->DB->select($TableName, $Where) : $this->DB->select($TableName);
  66.  
  67. }
  68. }
  69. return $Result;
  70. }
  71.  
  72. ...
  73.  
  74. public function RewriteTable($Table, $LabelID){
  75. $NewArray = array();
  76. foreach($Table as $row){
  77. $NewArray[$row[$LabelID]] = $row;
  78. }
  79. return $NewArray;
  80. }
  81.  
  82. ...
  83.  
  84. public function RewriteSpecialTable($Table, $LabelID1, $LabelID2){
  85.  
  86. $NewArray = array();
  87. foreach($Table as $row){
  88. $Label = $row[$LabelID1].$row[$LabelID2];
  89. $NewArray[$Label] = $row;
  90. }
  91. return $NewArray;
  92. }
  93.  
  94. ...
  95.  
  96. public function RewriteSpecialDashTable($Table, $LabelID1, $LabelID2){
  97.  
  98. $NewArray = array();
  99. foreach($Table as $row){
  100. $Label = $row[$LabelID1].'_'.$row[$LabelID2];
  101. $NewArray[$Label] = $row;
  102. }
  103. return $NewArray;
  104. }


Wydaje mi się, że w tej funkcji leży problem, ponieważ nie pobieram przecież tylko tabeli passes, ale i dane z tabeli classes. Pokażę jeszcze strukturę tych dwóch tabel dla jasności:

CLASSES
  1. CREATE TABLE IF NOT EXISTS `classes` (
  2. `class_id` int(11) NOT NULL AUTO_INCREMENT,
  3. `subject_id` int(11) NOT NULL,
  4. `year_id` int(11) NOT NULL,
  5. `employee_id` int(11) NOT NULL,
  6. `classestype_id` int(11) NOT NULL,
  7. PRIMARY KEY (`class_id`)
  8. );


PASSES
  1. CREATE TABLE IF NOT EXISTS `passes` (
  2. `pass_id` int(11) NOT NULL AUTO_INCREMENT,
  3. `class_id` int(11) NOT NULL,
  4. `student_id` int(11) NOT NULL,
  5. `pass` enum('0','2','3','3.5','4','4.5','5','ZAL') COLLATE utf8_polish_ci DEFAULT '0',
  6. `pass_date` varchar(256) COLLATE utf8_polish_ci NOT NULL,
  7. `comments` varchar(100) COLLATE utf8_polish_ci DEFAULT NULL,
  8. PRIMARY KEY (`pass_id`)
  9. );


Jak widać tabela classes w zupełności wystarcza mi do wyświetlania wyników. Zapytanie, które przedstawiłem na początku wyświetla przykładowo następujące dane:

ZAJĘCIA1 - PRZEDMIOT1 - PROWADZĄCY 1 - RODZAJ ZAJĘC 1 - STUDENT 1 - OCENA/DATA/KOM
ZAJĘCIA2 - PRZEDMIOT1 - PROWADZĄCY 1 - RODZAJ ZAJĘC 2 - STUDENT 1 - OCENA/DATA/KOM
ZAJĘCIA1 - PRZEDMIOT1 - PROWADZĄCY 1 - RODZAJ ZAJĘC 1 - STUDENT 2 - OCENA/DATA/KOM
ZAJĘCIA2 - PRZEDMIOT1 - PROWADZĄCY 1 - RODZAJ ZAJĘC 2 - STUDENT 2 - OCENA/DATA/KOM

I tak dalej. Z reguły z jednego przedmiotu są 2 rodzaje zajęć: wykład i ćwiczenia, dlatego dla każdego studenta wyświetla dwa rekordy. Wszystkie te informacje pobieram z tabeli classes, łącząc ją z innymi tabelami poprzez id i do tego doklejam tabelę passes.

Ten post edytował x X x 6.03.2014, 13:42:53
Go to the top of the page
+Quote Post
PrinceOfPersia
post
Post #3





Grupa: Zarejestrowani
Postów: 717
Pomógł: 120
Dołączył: 18.04.2009

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


Cytat(x X x @ 6.03.2014, 13:28:33 ) *
Nie jest to cały kod. search_result.html to tylko plik html/php z pewnymi skryptami javy, które

Javy to w to nie mieszaj, bo zapewne chodzi ci o JavaScript...
moze wpierw sprobuj wygooglaç czym się różni AJAX od HTML, i czym się różni kod PHP od JavaScriptu i od MySQL, a potem zadawaj pytania...
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 - 15:17