Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][SQL][PHP]Zwracanie zapytania z bazy za pomcą JSON
Forum PHP.pl > Forum > Przedszkole
sasiadstar
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.
kayman
pokaz jak kodujesz json od strony php lub echo
sasiadstar
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ą.
viking
  1. header('Content-type:application/json;charset=utf-8');echo json_encode($temp);
sasiadstar
.fail(function(jqXHR, textStatus) =Parseerror
Niestety nie działa.
viking
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.
sasiadstar
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]
viking
No to zobacz czym jest data -> console.log(data); w .done()
sasiadstar
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?
viking
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.
sasiadstar
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.
viking
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.
sasiadstar
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 ?
viking
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.
sasiadstar
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.