Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> ajax,php pobieranie danych
czarkowy
post 30.08.2017, 19:43:05
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 6.08.2017
Skąd: sdsadada

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


Czesc,
mam taki skrypt php:
  1. <?php
  2.  
  3.  
  4. header('Content-type: application/json');
  5.  
  6. include 'db_connect.php';
  7.  
  8. $username = $_SESSION['username'];
  9.  
  10. $sql = "SELECT backpack_items FROM users WHERE username='$username'";
  11.  
  12. $result = mysqli_query($conn, $sql);
  13.  
  14. $rowNum = mysqli_fetch_assoc($result);
  15.  
  16. $items = explode(',', $rowNum['backpack_items']);
  17.  
  18. for($i = 0; $i < count($items); $i++) {
  19.  
  20. $where = intval($items[$i]);
  21.  
  22. $sqlItem = "SELECT * FROM items WHERE id='$where'";
  23.  
  24. $resultItem = mysqli_query($conn, $sqlItem);
  25.  
  26. $items[$i] = mysqli_fetch_assoc($resultItem);
  27. }
  28.  
  29. echo json_encode($items);

i java script:
[JAVASCRIPT] pobierz, plaintext
  1. $.ajax({
  2. type: 'POST',
  3. url: 'data/php/eq.php',
  4. contentType:"application/json; charset=utf-8;",
  5. dataType:'json',
  6. success: function(items) {
  7. console.log(items);
  8. }
  9. });
[JAVASCRIPT] pobierz, plaintext


dane z bazy danych sa pobierane prawidlowo, var_dump($items); zwraca poprawna tablice, więc dlaczego w pliku js ich tak jakby nie ma? jak podgladam zrodlo strony to w kodzie js, nawet nie widac zawartosci funkcji success, tzn wyglada to tak:

[JAVASCRIPT] pobierz, plaintext
  1. $.ajax({
  2. type: 'POST',
  3. url: 'data/php/eq.php',
  4. contentType:"application/json; charset=utf-8;",
  5. dataType:'json',
  6. success: function(items) {
  7.  
  8. }
  9. });
[JAVASCRIPT] pobierz, plaintext
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
viking
post 30.08.2017, 19:48:39
Post #2





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Co widzisz w konsoli przeglądarki, zakładka sieć?


--------------------
Go to the top of the page
+Quote Post
czarkowy
post 30.08.2017, 19:53:45
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 6.08.2017
Skąd: sdsadada

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


Cytat(viking @ 30.08.2017, 20:48:39 ) *
Co widzisz w konsoli przeglądarki, zakładka sieć?



Go to the top of the page
+Quote Post
viking
post 30.08.2017, 19:55:04
Post #4





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Na przesłanym żądaniu, w odpowiedzi. Myśl trochę.


--------------------
Go to the top of the page
+Quote Post
czarkowy
post 30.08.2017, 19:59:58
Post #5





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 6.08.2017
Skąd: sdsadada

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


Cytat(viking @ 30.08.2017, 20:55:04 ) *
Na przesłanym żądaniu, w odpowiedzi. Myśl trochę.


Go to the top of the page
+Quote Post
viking
post 30.08.2017, 20:04:00
Post #6





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Miałeś tylko sprawdzić a nie wrzucać ciągle zdjęcia. Jak widzisz content length 0. Nic nie zwracasz.


--------------------
Go to the top of the page
+Quote Post
czarkowy
post 30.08.2017, 20:07:51
Post #7





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 6.08.2017
Skąd: sdsadada

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


Cytat(viking @ 30.08.2017, 21:04:00 ) *
Miałeś tylko sprawdzić a nie wrzucać ciągle zdjęcia. Jak widzisz content length 0. Nic nie zwracasz.

no, że nic nie zwracam to wiem caly czas i to content-length tez zauwazylem,
tylko wlasnie nie wiem dalczego nic nie jest zwracane
Go to the top of the page
+Quote Post
viking
post 30.08.2017, 20:19:42
Post #8





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Błąd w zapytaniu? Włącz wyświetlanie błędów. Dlaczego ciągle nadpisujesz items?


--------------------
Go to the top of the page
+Quote Post
czarkowy
post 30.08.2017, 20:28:42
Post #9





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 6.08.2017
Skąd: sdsadada

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


Cytat(viking @ 30.08.2017, 21:19:42 ) *
Błąd w zapytaniu? Włącz wyświetlanie błędów. Dlaczego ciągle nadpisujesz items?

ale ktorym zapytaniu?
zapytania sql zwracaja mi poprawne tablice,
nadpisuje items bo i tak w dalszej czesci skryptu nadpisana tresc nie jest potrzebna
Go to the top of the page
+Quote Post
viking
post 30.08.2017, 20:32:29
Post #10





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Aha. A jak działa pętla for? W szczególności ten count przy każdym przebiegu. Skoro twierdzisz że ci zwraca dane to nie może być length 0.


--------------------
Go to the top of the page
+Quote Post
czarkowy
post 30.08.2017, 20:36:42
Post #11





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 6.08.2017
Skąd: sdsadada

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


Cytat(viking @ 30.08.2017, 21:32:29 ) *
Aha. A jak działa pętla for? W szczególności ten count przy każdym przebiegu. Skoro twierdzisz że ci zwraca dane to nie może być length 0.


no iteruje mi po tablicy items pobranej z bazy, ale to nie ma znaczenia,
bo probowalem nawet zostawic takie cos w skrypcie:
  1.  
  2. <?php
  3.  
  4.  
  5. header('Content-type: application/json');
  6.  
  7. include 'db_connect.php';
  8.  
  9. $username = $_SESSION['username'];
  10.  
  11. $sql = "SELECT backpack_items FROM users WHERE username='$username'";
  12.  
  13. $result = mysqli_query($conn, $sql);
  14.  
  15. $rowNum = mysqli_fetch_assoc($result);
  16.  
  17. $items = $rowNum['backpack_items'];
  18.  
  19. var_dump($items);
  20.  
  21. echo json_encode($items);


i var_dump zwraca poprawnie tablica, natomiast do pliku js nic nie dochodzi,
mam kilka podobnych zapytan ajax/php do bazy i sa tak samo praktycznie stworzone i dzialaja ;p a tutaj cos nie styka ;p

w sumie mozliwe, ze to przez to lączenie sie z bazą danych w tym forze ;p bo w innym pliku przesyla mi te dane, a jak dodam tego fora to juz nie ;p tylko nie wiem jak to zrobic tak aby dzialalo ;p

Ten post edytował czarkowy 30.08.2017, 20:43:12
Go to the top of the page
+Quote Post
viking
post 30.08.2017, 20:48:16
Post #12





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


To odpowiedź mi proszę jak ta iteracja się odbywa. Chętnie poslucham.
Jeśli robisz var_dump to success nie zadziała bo nie masz poprawnej odpowiedzi json. Masz sprawdzać w odpowiedzi (w konsoli) co konkretnie jest zwracane.


--------------------
Go to the top of the page
+Quote Post
czarkowy
post 30.08.2017, 20:55:53
Post #13





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 6.08.2017
Skąd: sdsadada

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


Cytat(viking @ 30.08.2017, 21:48:16 ) *
To odpowiedź mi proszę jak ta iteracja się odbywa. Chętnie poslucham.
Jeśli robisz var_dump to success nie zadziała bo nie masz poprawnej odpowiedzi json. Masz sprawdzać w odpowiedzi (w konsoli) co konkretnie jest zwracane.


no interacja dziala tak:

z bazy danych pobieram stringa: 1,1,1
rozdzielam go przecinkami tak aby miec tablice $items = (0=>1, 1=>1, 2=>1);
i kazdy z elementow tej tablicy jest id wersu z bazy danych

//zwraca ilosc elementow tablicy
count($items)

//tutaj pobieram caly wers z tablicy w bazie o id jakim zawiera pole tablicy tzn $items[0] = 1, $items[1] = 2 ...
$where = intval($items[$i]);
$sqlItem = "SELECT * FROM items WHERE id='$where'";

//zwracam zapytanie
$resultItem = mysqli_query($conn, $sqlItem);

//tworze tablice asocjacyjna i nadpisuje komorke w tablicy $items
$items[$i] = mysqli_fetch_assoc($resultItem);

no i na koniec mam tablice asocjacyjna $items ze wszystkimi wersami o takich id jakie byly zawarte w pobranym wczesniej stringu

Go to the top of the page
+Quote Post
viking
post 30.08.2017, 21:36:13
Post #14





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Nie uda się wczytać db_connect.php - skrypt leży. Nie znajdzie użytkownika - leży. Explode nie zwróci danych - leży. Któreś z zapytań nie zadziała - leży. Jest tyle miejsc do błędu że wcale mnie nie dziwi brak odpowiedzi. Przy każdym przebiegu zliczasz od nowa tablicę. Skoro masz oddzielone przecinkiem dane to aż się prosi żeby to do IN wrzucić i nie mielić.


--------------------
Go to the top of the page
+Quote Post
dvdx95
post 30.08.2017, 21:42:33
Post #15





Grupa: Zarejestrowani
Postów: 47
Pomógł: 3
Dołączył: 11.10.2016

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


skoro twierdzisz ze plik php zwraca ci poprawnie tablice to moze cos nie tak z tym ajaxem jest.

  1. $.ajax({
  2. url:"data/php/eq.php",
  3. success:function(data){
  4. try{
  5. data = JSON.parse(data);
  6. console.log(data);
  7. }catch(err){
  8. console.log(err);
  9. }
  10. }
  11. });


Ten post edytował dvdx95 30.08.2017, 21:46:06
Go to the top of the page
+Quote Post
czarkowy
post 30.08.2017, 21:54:14
Post #16





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 6.08.2017
Skąd: sdsadada

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


Cytat(viking @ 30.08.2017, 22:36:13 ) *
Nie uda się wczytać db_connect.php - skrypt leży. Nie znajdzie użytkownika - leży. Explode nie zwróci danych - leży. Któreś z zapytań nie zadziała - leży. Jest tyle miejsc do błędu że wcale mnie nie dziwi brak odpowiedzi. Przy każdym przebiegu zliczasz od nowa tablicę. Skoro masz oddzielone przecinkiem dane to aż się prosi żeby to do IN wrzucić i nie mielić.


zrobilem to za pomoca petli foreach ;p
  1. foreach($items as $item) {
  2.  
  3. $sqlItem = "SELECT * FROM items WHERE id='$item'";
  4.  
  5. $resultItem = mysqli_query($conn, $sqlItem);
  6.  
  7. $item = mysqli_fetch_assoc($resultItem);
  8. }
  9.  


i teraz dochodzi mi taka tablica items(1,1,1);
a powinna dojść tablica w ktorej kazda z komorek zawiera kolejna tablice ;p



Go to the top of the page
+Quote Post
viking
post 30.08.2017, 22:13:11
Post #17





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Bo nadpisujesz.

  1. SELECT * FROM items WHERE find_in_set(id, (SELECT backpack_items FROM users WHERE username='$username'));


--------------------
Go to the top of the page
+Quote Post
czarkowy
post 30.08.2017, 22:18:58
Post #18





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 6.08.2017
Skąd: sdsadada

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


Cytat(viking @ 30.08.2017, 23:13:11 ) *
Bo nadpisujesz.

  1. SELECT * FROM items WHERE find_in_set(id, (SELECT backpack_items FROM users WHERE username='$username'));


nie rozumiem, co nadpisuje? ;/
to zapytanie co podales tez zwraca items(1,1,1);
Go to the top of the page
+Quote Post
viking
post 30.08.2017, 22:24:39
Post #19





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

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


Masz to zapytanie jako jedyne. Poza jakąkolwiek pętlą.

Ten post edytował viking 30.08.2017, 22:25:12


--------------------
Go to the top of the page
+Quote Post
czarkowy
post 30.08.2017, 22:38:33
Post #20





Grupa: Zarejestrowani
Postów: 31
Pomógł: 1
Dołączył: 6.08.2017
Skąd: sdsadada

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


Cytat(viking @ 30.08.2017, 23:24:39 ) *
Masz to zapytanie jako jedyne. Poza jakąkolwiek pętlą.

no okej, ale to zwraca tylko jeden rekord z bazy,
a mi chodzi o takie dzialanie
mam 2 tabele w bazie
users:
id:3
nick=tomek
items=1,2,1

items:
id=1
name=sword
demage=3
hp=5

id=2
name=swordPro
demage=5
hp=5


i ten uzytkownik ma 3 przedmioty o id 1 id 2 id1
i chce wyiterowac te wszystkie 3
$items = [
0 = > [1,'sword',3,5],
1 => [2,'swordPro',5,5],
2 => [1,'sword',3,5]
];

i aby to wyglądalo tak^
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 01:37