Wyświetlanie wyników z Mysql w formacie JSON

0

Mam taki oto kod:

<?php
include ('class/mysql.class.php');
 
$search = new SQLCore;
 
$term = $search->filtr($_GET['term']);
$query = $search->goQuery("SELECT id, name, phone, mail, address FROM `users` WHERE name Like '$term%'");
 
$table = array();
$i=0;
 
while($row = mysql_fetch_assoc($query) ){
     $table[$i] = array('id' => $row['id'], 'name' => $row['name'], 'phone' => $row['phone'], 'mail' => $row['mail'], 'address' => $row['address']);
     $i++;
}
echo json_encode($table);
?>

wyszukuje mi on użytkowników których imie zaczyna się na podany ciąg (wynik zwraca do ajaxa)
i za cholere nie wiem o co chodzi bo w wyniku dostaje takie cos:

[{"id":"1","name":null,"phone":"123456789","mail":"jakis@gmail.com","address":null}]

czyli w skrócie nie chce mi odczytać pola name i address, reszte czyta normalnie (samo zapytanie zwraca poprawny wynik i przykładowo jeśli w pętli każe wyświetlić zmienną $row['name']; to wyświetla imię...

Jakieś podpowiedzi o co może chodzić?

Do admina - nie można było po prostu poprawić/napisać że błąd?

0

nie lepiej?

$table = array();
while($row = mysql_fetch_assoc($query)) {
  $table[] = $row;
}
0
dzek69 napisał(a)

nie lepiej?

$table = array();
while($row = mysql_fetch_assoc($query)) {
  $table[] = $row;
}

No tak - lepiej ale dalej to nie rozwiązuje mojego problemu;/
albo inaczej, dla drugiego rekordu wszystko jest ok, pierwszy dalej wygląda jak wyglądał ;/

Doszedłem do tego że nie wyświetla mi wyników w których są polskie litery - da się to jakoś ominąć? i dlaczego nie wyświetla polskich liter?

0

Może po prostu tak jest zapisany w bazie? :|

0

Jeśli w pętli wyświetle dowolną zmienną to wszystko jest ok - przykładowo

echo $row['name'];

daje mi w wyniku: Michał
ale do tablicy zapisuje null
jeśli w bazie jest wpisane Michal (bez ł)

to wyświetla Michal i do tablicy normalnie dodaje...

Demonical Monk napisał(a)

Może po prostu tak jest zapisany w bazie? :|

Jak pierwszy poprawie tak żeby nie było polskich liter to też mi go normalnie wyświetla..

0

A kodowanie w skrypcie aby zgodne z kodowaniem w bazie?

0

tak, oczywiście - wszędzie utf-8

0

pliki (wszystkie) też muszą być w utf-8, uwzgledniłeś to? bo mozesz miec pliki w iso czy windows, a w headerze (tj html) napisac utf-8. polskich znaków nie łapie właśnie przez to. skoro echo działa to wygeneruj json przez echo. ale jak na mnie takich cudów nie ma, źle coś ogarniasz, tylko ciężko wyłapać na odległość co

0

pliki są w utf-8 (przynajmniej tak wyświetla w notepad2 jak przed chwilą sprawdzałem) baza danych utf-8 unicode coś tam w nagłówkach też utf - kiedyś miałem przez to sporo kłopotów i na kodowanie zwracam szczególną uwagę...

Może i jestem upierdliwy ale czy ktoś ma jakieś pomysły o co może chodzić?

0

Pokaż pełną definicję tablicy 'users' (razem z kodowaniem)

edit: aha i dorzuć jeszcze

mysql_query("SET NAMES 'utf8' COLLATE 'utf8_polish_ci'");

do kodu po wybraniu bazy danych

0

napisałem:

skoro echo działa to wygeneruj json przez echo

  • zrobiłeś to? Nie chodzi, żeby trzymać się tego rozwiązania, a tylko, żeby sprawdzić czy faktycznie masz rację
0
dzek69 napisał(a)

napisałem:

skoro echo działa to wygeneruj json przez echo

  • zrobiłeś to? Nie chodzi, żeby trzymać się tego rozwiązania, a tylko, żeby sprawdzić czy faktycznie masz rację

Niezbyt wiem jak to zrobić?

w załączniku screen z bazy, wszędzie jest ustawione w taki sposób kodowanie aczkolwiek pomogło wykonanie zapytania z SET NAMES 'utf8' COLLATE 'utf8_polish_ci'
dlaczego? dlaczego pomogło skoro i tak wszędzie jest utf?

0

zmień metode porównywania napisów na utf8_polish_ci

0

@brodka:

echo '{"id": "'.$row['id'].'", "wartosc": "'.$row['wartosc'].'"}';

itd?

Ja pomimo, że wszędzie mam utfy z automatu przy łączeniu do bazy robie SET CHARACTER SET utf8 i SET NAMES utf8 - nawet o tym zapomniałem. Nie pamiętam czy i gdzie się coś psuło jak tego nie było - teraz prewencyjnie mam na stałe.

0

No to kolejny fragment kodu który na stałe wchodzi :)
Dzięki za pomoc!

1 użytkowników online, w tym zalogowanych: 0, gości: 1