cent4
11.11.2011, 23:29:44
Jak zrobić porównywanie danych z bazy?
Mam bazę której zawartość pobieram w pętli:
$response->rows[$i]['id']=$row[id]; //Nr_czyt
$response->rows[$i]['cell']=array($row[id
],$row[nazwa
],$row[ilosc
],$row[koszt
],$row[wartosc
],$row[data
]); $i++;
}
echo json_encode
($response);
Jak zrobić, żeby pozmieniał mi w wypisie dane:
Np.
nazwa ma wpisane tylko: "e", "b"
a chcę zrobić jakoś w if'ie, żeby mi pozmieniał "e" na "eksploatacyjne", "b" na "biurowe".
Jak to zrobić?
CuteOne
12.11.2011, 02:27:17
$array = array("e"=>"eksploatacja", "b"=>"blablabla");
//pętla
$row['nazwa'] = strtr($row['nazwa'], $array); //koniec pętli
możesz użyć str_replace lub podobnych... szukaj w google
cent4
12.11.2011, 10:55:19
Wszystko pięknie działa - ale jak zrobić:
$array = array("e"=>"eksploatacja", "b"=>"blablabla", "x"=>"śąłźó", "y"=>"blablabla blabla");
to dla x i y nie działa - czyli nie działa dla polskich znaków i dla kilku połączonych wyrazów :-( - jak to zrobić?
nospor
12.11.2011, 10:59:01
Cytat
nazwa ma wpisane tylko: "e", "b"
No to skoro ma "tylko" to normalnie do indeksu się odwolujesz
$row['nazwa'] = $array($row['nazwa']);
I już.
cent4
12.11.2011, 11:05:58
Niestety.
Coś mi nie podmienia: "x" na "śąłźó", "y" na "blablabla blabla".
Jak nie ma polskich znaków ani nie ma kilku wyrazów to zamienia wszystko ok.
nospor
12.11.2011, 11:07:19
Coś kręcisz. Konstrukcja: $array($row['nazwa']); jest niezależna od polskich znaków czy kilku wyrazów, bo tu odwołujemy się do indeksu tablicy a nie do wartosci tablicy.
Pokaż lepiej cały kod
cent4
12.11.2011, 11:12:31
$array = array("b"=>"materiały biurowe", "e"=>"eksploatacja", "p"=>"pozostałe"); $i=0;
$row['rodzaj'] = strtr($row['rodzaj'], $array); $response->rows[$i]['id']=$row[id]; //Nr_czyt
$response->rows[$i]['cell']=array($row[id
],$row['rodzaj'],$row[nazwa
],$row[ilosc
],$row[koszt
],$row[wartosc
],$row[data
]); $i++;
}
echo json_encode
($response);
Jak zmieniam tak jak proponujesz to mam błąd:
$array = array("b"=>"materiały biurowe", "e"=>"eksploatacja", "p"=>"pozostałe"); $i=0;
$row['rodzaj'] = $array($row['rodzaj']);
$response->rows[$i]['id']=$row[id]; //Nr_czyt
$response->rows[$i]['cell']=array($row[id
],$row['rodzaj'],$row[nazwa
],$row[ilosc
],$row[koszt
],$row[wartosc
],$administrator_dane,$row[data
]); $i++;
}
echo json_encode
($response);
Function name must be a string in
nospor
12.11.2011, 11:25:16
$row['rodzaj'] = $array($row['rodzaj']);
$response->rows[$i]['id']=$row[id]; //Nr_czyt
$response->rows[$i]['cell']=array($row[id
],$row['rodzaj'],$row[nazwa
],$row[ilosc
],$row[koszt
],$row[wartosc
],$administrator_dane,$row[data
]); $i++;
}
Co wyświetla? Już sam mógłbyś tak podstawe rzeczy dodawać po takim czasie spędzonym na forum
Cytat
Function name must be a string in
Podawaj pełny błąd wraz z zaznaczeniem o która linię chodzi. To też już mógłbyś wiedzieć.
ps: już chyba wiem o co chodzi. Następnym razem pisz jak mówiłem cały błąd. PRzecież to jest FATAL ERROR!
NIe: $array a np. $tablica. Popraw wszedzieA, nie, czekaj,
nie: $row['rodzaj'] = $array($row['rodzaj']);
a: $row['rodzaj'] = $array[$row['rodzaj']];
cent4
12.11.2011, 11:26:58
string(1) "b"
<br />
<b>Fatal error</b>: Function name must be a string in <b>zakupy_php.php</b> on line <b>105</b><br />
Błąd z linią: $row['rodzaj'] = $array($row['rodzaj']);
moment wprowadze zmiany
nospor
12.11.2011, 11:27:18
Patrz post wyżej:
Cytat
nie: $row['rodzaj'] = $array($row['rodzaj']);
a: $row['rodzaj'] = $array[$row['rodzaj']];
cent4
12.11.2011, 11:30:03
Dalej zwraca wszystko z wyjątkiem polskich znaków i dwu wyrazowych oznaczeń.
Nie ma błędu ale Firebug w zwracanych rekordach podaje mi null w tych pozycjach :-(
nospor
12.11.2011, 11:33:37
Zdaje się o coś prosiłem, tak?
var_dump($row['rodzaj']);
A najlepiej zrób tak:
$row['rodzaj'] = $array[$row['rodzaj']];
I to pokaż co zwraca
cent4
12.11.2011, 11:40:15
Nie wyświetla żadnego rekordu - dalej null'e, a w firebug mam:
string(1) "b"
string(17) "materia�y biurowe"
string(1) "e"
string(12) "eksploatacja"
string(1) "p"
string(9) "pozosta�e"
{"page":"1","total":1,"records":"3","rows":[{"id":"1","cell":["1",null,"papier","20","10","200","2011-11-11"]},{"id":"2","cell":["2","eksploatacja","tusz","1","90","90","2011-11-11"]},{"id":"3","cell":["3",null,"aqq","3","7","0","2011-11-11"]}]}
"Zdaje się o coś prosiłem, tak?
var_dump($row['rodzaj']); "
Cały czas to mam wpisane ... - przecież umiem czytać...
nospor
12.11.2011, 11:41:54
Tak, tylko że jak sam chyba łaskawie widzisz, to nie jest wina tego kodu
$row['rodzaj'] = $array[$row['rodzaj']];
Ten kod jak widać działa na 100%. Zamienia ci literki na właściwe teksty. Dopiero gdzieś dalej ci się wszystko pieprzy.
Kurcze, cent4, jesteś tyle czasu na forum, zadałeś tyle tematów i nadal za każdym razem trzeba cię za rączkę prowadzić z tak banalnym analizowaniem kodu. Czy to coś w ogóle się uczysz? Jakąś wiedzę przyswajasz na tym forum? Czy tylko jednym uchem wpada a drugim wypada?
Dobra, ja wypadam, już i tak za dużo czasu zmarnowałem na analizę jednej banalnej linijki
$row['rodzaj'] = $array[$row['rodzaj']];
Cytat
Cały czas to mam wpisane ... - przecież umiem czytać...
Ale oprócz wpisania miałeś mi pokazać tego wynik :/ Moja ponowna prośba tyczyła się więc byś ten wynik pokazał. Oprócz czytania należy też trochę myśleć.
cent4
12.11.2011, 11:43:58
Uczę się.
A Ty jak zwykle jesteś "bardzo pomocny".
Dziękuję bardzo.
nospor
12.11.2011, 11:48:21
Cytat
A Ty jak zwykle jesteś "bardzo pomocny".
Przecież ci pomogłem. Pokazałem ci jak zamieniać p na pozostałe i całą reszte. Ty w ogole tego nie potrafisz docenić ani zrozumieć. Tylko ciągle ględzisz że nie działa i że nie działa. A jak widać ten kod co ci podałem działa. Tylko nie działa ci w zupełnie innym miejscu a ty zamiast to sprawdzić to ciągle swoje "nie działa".
Zrozum chłopie wkońcu, że po takim czasie z podstawami mógłbyś już sobie umieć radzić i wyciągać wnioski z durnego var_dump(), a nie wszystko trzeba ci w 10ciu postach opisywać krok po kroczku. Jesteś za długo na forum by z takie pierdoły ci wyjaśniać. Zamiast się obrażać na moje "pomocne posty" weź zacznik wkońcu wyciągać z nich jakieś logiczne wnioski
Kolejna rada w tym temacie. Skoro ci w firebugu dochodzą nulle na polskich krzachach, to musi to psuć json_encode. Należy więc zajrzeć do manuala:
http://pl2.php.net/manual/en/function.json-encode.phpI wyczytać:
Cytat
This function only works with UTF-8 encoded data.
cent4
12.11.2011, 11:51:49
O co Ci chodzi.
Przecież napisałem "Dziękuję bardzo".
I nic więcej nie pytam tylko szukam sam...
Miłego weekendu.
nospor
12.11.2011, 11:54:00
Najpierw napisałeś
Cytat
A Ty jak zwykle jesteś "bardzo pomocny".
Dając coś w cudzysłów, sugerując coś zupełnie innego, a przynajmniej tak to odebrałem.
Cytat
I nic więcej nie pytam tylko szukam sam...
Szukać już nie musisz, podałem ci przecież rozwiązanie drugiej zagadki: json_encode zamienia ci tekst na null, bo json_encode działa tylko z utf-8
cent4
12.11.2011, 11:58:29
ja już nie chcę nic pisać, bo widzę, że Cię urażam, ale to nadal nie rozwiązuje sprawy - całość działa w UTF-8 - na dodatek mam ustawione przy łączeniu z bazą:
mysql_set_charset('utf8',$db);
W innych plikach to działa...
nospor
12.11.2011, 12:00:46
Cytat
na dodatek mam ustawione przy łączeniu z bazą:
A co ma piernik do wiatraka?
Przecież to:
$array = array("b"=>"materiały biurowe", "e"=>"eksploatacja", "p"=>"pozostałe");
Nie generujesz na podstawie bazy, a wpisane masz to bezpośrednio w pliku. Jaki z tego wniosek? A no taki, że plik masz w innym kodowaniu niż utf8.
Jak ci manual mówi, że json_encode działa tylko z utf8 to tak jest.
cent4
12.11.2011, 12:06:11
Nie wiem dlaczego...
Mój błąd przepraszam...
Taki podstawowy błąd nie zdarza mi się często.
Plik rzeczywiście był w ISO - pewnie dlatego, że użyłem raz nie tego edytora co zawsze :-(.
Wszystko działa prawidłowo.
Dziękuję bardzo.