Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Porównywanie danych z bazy
Forum PHP.pl > Forum > Przedszkole
cent4
Jak zrobić porównywanie danych z bazy?
Mam bazę której zawartość pobieram w pętli:
  1. while($row = mysql_fetch_array($result,MYSQL_ASSOC)) {
  2. $response->rows[$i]['id']=$row[id]; //Nr_czyt
  3. $response->rows[$i]['cell']=array($row[id],$row[nazwa],$row[ilosc],$row[koszt],$row[wartosc],$row[data]);
  4. $i++;
  5. }
  6. 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
  1.  
  2. $array = array("e"=>"eksploatacja", "b"=>"blablabla");
  3.  
  4. //pętla
  5. $row['nazwa'] = strtr($row['nazwa'], $array);
  6. //koniec pętli


możesz użyć str_replace lub podobnych... szukaj w google
cent4
Wszystko pięknie działa - ale jak zrobić:
  1. $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
Cytat
nazwa ma wpisane tylko: "e", "b"
No to skoro ma "tylko" to normalnie do indeksu się odwolujesz
  1. $row['nazwa'] = $array($row['nazwa']);

I już.
cent4
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
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
  1. $array = array("b"=>"materiały biurowe", "e"=>"eksploatacja", "p"=>"pozostałe");
  2. $i=0;
  3. while($row = mysql_fetch_array($result,MYSQL_ASSOC)) {
  4. $row['rodzaj'] = strtr($row['rodzaj'], $array);
  5. $response->rows[$i]['id']=$row[id]; //Nr_czyt
  6. $response->rows[$i]['cell']=array($row[id],$row['rodzaj'],$row[nazwa],$row[ilosc],$row[koszt],$row[wartosc],$row[data]);
  7. $i++;
  8. }
  9. echo json_encode($response);


Jak zmieniam tak jak proponujesz to mam błąd:
  1. $array = array("b"=>"materiały biurowe", "e"=>"eksploatacja", "p"=>"pozostałe");
  2. $i=0;
  3. while($row = mysql_fetch_array($result,MYSQL_ASSOC)) {
  4. $row['rodzaj'] = $array($row['rodzaj']);
  5.  
  6. $response->rows[$i]['id']=$row[id]; //Nr_czyt
  7. $response->rows[$i]['cell']=array($row[id],$row['rodzaj'],$row[nazwa],$row[ilosc],$row[koszt],$row[wartosc],$administrator_dane,$row[data]);
  8. $i++;
  9. }
  10. echo json_encode($response);


Function name must be a string in
nospor
  1. while($row = mysql_fetch_array($result,MYSQL_ASSOC)) {
  2. var_dump($row['rodzaj']);
  3. $row['rodzaj'] = $array($row['rodzaj']);
  4.  
  5. $response->rows[$i]['id']=$row[id]; //Nr_czyt
  6. $response->rows[$i]['cell']=array($row[id],$row['rodzaj'],$row[nazwa],$row[ilosc],$row[koszt],$row[wartosc],$administrator_dane,$row[data]);
  7. $i++;
  8. }

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 wszedzie

A, nie, czekaj,
nie: $row['rodzaj'] = $array($row['rodzaj']);
a: $row['rodzaj'] = $array[$row['rodzaj']];
cent4
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
Patrz post wyżej:
Cytat
nie: $row['rodzaj'] = $array($row['rodzaj']);
a: $row['rodzaj'] = $array[$row['rodzaj']];
cent4
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
Zdaje się o coś prosiłem, tak?
var_dump($row['rodzaj']);


A najlepiej zrób tak:
  1. var_dump($row['rodzaj']);
  2. $row['rodzaj'] = $array[$row['rodzaj']];
  3. var_dump($row['rodzaj']);

I to pokaż co zwraca
cent4
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
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
Uczę się.
A Ty jak zwykle jesteś "bardzo pomocny".
Dziękuję bardzo.
nospor
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.php
I wyczytać:
Cytat
This function only works with UTF-8 encoded data.
cent4
O co Ci chodzi.
Przecież napisałem "Dziękuję bardzo".
I nic więcej nie pytam tylko szukam sam...
Miłego weekendu.
nospor
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
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ą:
  1. mysql_set_charset('utf8',$db);

W innych plikach to działa...
nospor
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
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.
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.