Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][SQL][PHP]Zwracanie zapytania z bazy za pomcą JSON
sasiadstar
post 6.03.2017, 22:27:33
Post #1





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 19.06.2015

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


Dłubałem kombinowałem i się poddałem.
Pobieram z bazy kolumnę b z bazy x i za nic nie mogę tego porawnie przeslac
W js mam taki skrypt
$.ajax({

type: "POST", //typ połączenia na post
url: "load.php",
dataType : 'json', //ustawiamy typ danych na json
data: data
})
.done (function(data,json) {
aa=data.collections;
......jakis kod

.fail(function(jqXHR, textStatus){$('#debug').append(jqXHR.responseText);})//obsługa błedów


}
Jak dataType mam na jot son to wywala mi błąd a jak text to wszystko nawet błędy zwraca w done.
Php
try {
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = $conn->prepare("SELECT COLLECTION_NAME FROM alpol_collections");
$sql->execute();
$result = $sql->fetchAll();
foreach($result as $wiersz)
{
$temp[]=$wiersz['COLLECTION_NAME'];//Tu kombinowalem tak i siak

}
.........
Chciałbym cała zawartość kolumny przesłać tą metodą ale już nie mam pojęcia jak to zrobić.
Help Panowie i Panie.
Go to the top of the page
+Quote Post
kayman
post 6.03.2017, 23:45:51
Post #2





Grupa: Zarejestrowani
Postów: 556
Pomógł: 40
Dołączył: 20.07.2012
Skąd: Warszawa

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


pokaz jak kodujesz json od strony php lub echo
Go to the top of the page
+Quote Post
sasiadstar
post 7.03.2017, 07:07:46
Post #3





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 19.06.2015

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


No właśnie jak bym wiedział jak to poprawnie zrobić to bym się tu nie udzielał , nie chce tu przedstawiać moich wypocin bo i tak niczego nie wniosą.
Go to the top of the page
+Quote Post
viking
post 7.03.2017, 07:56:58
Post #4





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

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


  1. header('Content-type:application/json;charset=utf-8');echo json_encode($temp);


--------------------
Go to the top of the page
+Quote Post
sasiadstar
post 8.03.2017, 09:29:29
Post #5





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 19.06.2015

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


.fail(function(jqXHR, textStatus) =Parseerror
Niestety nie działa.
Go to the top of the page
+Quote Post
viking
post 8.03.2017, 10:09:54
Post #6





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

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


Więc zapewne nie wstawiłeś tego z głową. Włącz raprtowanie błędów, konsola w przeglądarce, sprawdź żądanie i odpowiedź. Powtórz do czasu usunięcia błędu.


--------------------
Go to the top of the page
+Quote Post
sasiadstar
post 8.03.2017, 10:25:38
Post #7





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 19.06.2015

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


dziwne jak wklepe tak to dziala
foreach($result as $wiersz)
{$data[0]="test";
$dataa[]=array('collections'=>$data);//zwroci 50 razy


}

echo json_encode($dataa);


jak tak to blad parseeror


foreach($result as $wiersz)
{$data[]=$wiersz['COLLECTION_NAME'];
$dataa[]=array('collections'=>$data);


}

echo json_encode($dataa);

Zastanawia mnie dlaczego jest zwracane 50 tablic jak w tej bazie mam tylko 25 wierszy?questionmark.gifquestionmark.gif
data: Array[50]
Go to the top of the page
+Quote Post
viking
post 8.03.2017, 10:27:53
Post #8





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

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


No to zobacz czym jest data -> console.log(data); w .done()


--------------------
Go to the top of the page
+Quote Post
sasiadstar
post 8.03.2017, 10:36:45
Post #9





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 19.06.2015

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


Array[50]
0
:
Object
collections
:
Array[1]
0
:
"test"
length
:
1
__proto__
:
Array[0]
__proto__
:
Object
1
:
Object
2
:
Object
3
:
Object
4
:
Object
5
:
Object
6
:
Object
7
:
Object
8
:
Object
9
:
Object
10
:
Object
11
:
Object
12
:
Object
13
:
Object
14
:
Object
15
:
Object
16
:
Object
17
:
Object
18
:
Object
19
:
Object
20
:
Object
21
:
Object
22
:
Object
23
:
Object
24
:
Object
25
:
Object
26
:
Object
27
:
Object
28
:
Object
29
:
Object
30
:
Object
31
:
Object
32
:
Object
33
:
Object
34
:
Object
35
:
Object
36
:
Object
37
:
Object
38
:
Object
39
:
Object
40
:
Object
41
:
Object
42
:
Object
43
:
Object
44
:
Object
45
:
Object
46
:
Object
47
:
Object
48
:
Object
49
:
Object
length
:
50
__proto__
:
Array[0]

tyle tylko ze tak jak pisalem wierszy w tablicy jest 25
Wiec czemu pętla wykonuje się 50razy?
Go to the top of the page
+Quote Post
viking
post 8.03.2017, 10:45:24
Post #10





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

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


Nie wiem naprawdę co ty tworzysz. Pod $result masz wszystkie pobrane wiersze. Wrzuć to do json_encode i z głowy. Po jeszcze raz to iterować? A konsolę nie miałeś mi wypisać tylko sobie popatrzeć samemu na dane.


--------------------
Go to the top of the page
+Quote Post
sasiadstar
post 8.03.2017, 12:40:05
Post #11





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 19.06.2015

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


Zrobiłem tak i działa


$result = $sql->fetchAll();
$a=0;
$b= count($result);
foreach($result as $wiersz)
{
//echo $a;

if ($a<=$b/2)
{$data=$wiersz['COLLECTION_NAME'];
$dataa[]=array('collections'=>$data);

}
$a++;

}

echo json_encode($dataa);
Wiem że to durny zapis więc dalej będe rozkminiał aż zrozumiem co do czego.
Opcja echo json_encode($result); nie działa

Kombinuje bo chcę dojść co jak i dlaczego .
Na ta chwilę potrzebuję tylko i wyłącznie pobrać dane z jednego wiersza reszta mnie nie interesuje na bardziej złożone zapytania jeszcze nie pora.


A co jest w $results to bladego pojęcia nie mam ale na pewno nie taka tablica jaką można zwrócić jsonem.
Go to the top of the page
+Quote Post
viking
post 8.03.2017, 12:43:11
Post #12





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

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


var_dump($result); Bez tych dwóch rzeczy czyli konsola i wyświetlanie informacji o danych daleko nie pociągniesz. Co chwila będzie jakiś problem.


--------------------
Go to the top of the page
+Quote Post
sasiadstar
post 8.03.2017, 13:05:30
Post #13





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 19.06.2015

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


Wielkie dzięki dobry człowieku jednak widzę że to polecenie bez którego faktycznie za daleko się nie dojdzie.
W jednym wierszu jakość dziwnie mi zakodowało polski znak WEBER_KRYSZTA(funt brytyjski)
Więc muszę wrócić do miejsca gdzie importowane są dane do bazy.
Jeszcze zapytam Kodowanie w bazie mam takie utf8_polish_ci czy to odpowiednie jest czy zmienić na coś innego ?

Ten post edytował sasiadstar 8.03.2017, 13:06:33
Go to the top of the page
+Quote Post
viking
post 8.03.2017, 13:22:18
Post #14





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

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


Formalnie dla pełnego poprawnego sortowania powinno być utf8_unicode_520_ci. Nigdzie nie widzę żebyś na połączeniu robił SET NAMES albo w konstruktorze jeśli to mysql.


--------------------
Go to the top of the page
+Quote Post
sasiadstar
post 8.03.2017, 14:44:45
Post #15





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 19.06.2015

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


Znalazłem problem.
Okazało się że plik wsadowy jest w ANSI
Użyłem funkcji

$wynik=iconv(mb_detect_encoding($Tekst),"UTF-8",$Tekst);

Gdzie mb_detect_encoding($tempTekst) rozpoznaje kodowanie pliku automatycznie.

To tak na przyszłość dla potomnych.
Plus dla ciebie viking za var_dump($result) smile.gif

Ten post edytował sasiadstar 8.03.2017, 14:45:48
Go to the top of the page
+Quote Post

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 - 02:13