Michał Soczyński

Michał Soczyński nie, nie pracuje

Temat: [symfony] autocompleter w symfony, małe litery

Witam,
Stworzyłem inputa przez extra forms, użyłem klasy sfJqueryAutocompleter do pobierania danych z bazy, wszystko jest fajnie jak w bazie są wyniki które wpisuję, ale po wpisaniu bzdur np:

'BZDURY' albo 'Bzdury' => dostaję w lisćie rozwijanej wyniki:
'bzdury'. Nie mam teraz dostępu do kodu, został w domu, ale może ktoś wie czym to może być spowodowane, jak jest wpisywane nowe hasło dostaję je zawsze z małymi literami.

konto usunięte

Temat: [symfony] autocompleter w symfony, małe litery

A jaką wartość masz w bazie? Niech zgadne... "bzdury"?
Michał Soczyński

Michał Soczyński nie, nie pracuje

Temat: [symfony] autocompleter w symfony, małe litery

Nie mam żadnej, input działa tak, że mogę wybrać dane które już kiedyś zostały wprowadzone - nie muszę ich ponownie wpisywać, albo wpisuję nowe, wtedy jquery nie znajduje w bazie danych, więc zwracam mu json w takiej postaci:

{"$this->getParameter('q')":"$this->getParameter('q')"}

Gdy wchodzę bezpośrednio przez link który wywołuje ajax, to dostaję w poprawnej formie z różnicą znaków, ale gdy wpisuję do inputa to w liście wyskakuje mi pomniejszona wielkość liter, i zgłupiałem. :( Jeżeli nie wiesz za bardzo o co chodzi to wieczorem wkleję poszczególny kod i jakbyś mógł go przejrzeć.

konto usunięte

Temat: [symfony] autocompleter w symfony, małe litery

Przydałby się kod bo narazie kompletnie nie wiem o co Ci chodzi o co nie działa.
Grzegorz Śliwiński

Grzegorz Śliwiński Programista python

Temat: [symfony] autocompleter w symfony, małe litery

Jak baza? MySQL? Domyślnie nie rozróżni ci liter wielkich, czy małych. Jeśli chcesz rozróżniać ciągli znaków po wielkości liter, pole musi mieć ustawione kodowanie binarne (np. utf8_bin), inaczej Bzdury, bzdury, czy BZDURY to będzie ten sam ciąg dla MySQL
Michał Soczyński

Michał Soczyński nie, nie pracuje

Temat: [symfony] autocompleter w symfony, małe litery

No to jeszcze raz:


Obrazek


U góry jest wartość którą znajduje w bazie, ana dole 'Imie i nazwisko' nie istnieje, więc zwraca mi tą warość bezpośrednio, tylko że wszystko jest z małych liter.

tutaj kod:

 public function executeZleceniekierowca(sfWebRequest $request)
{
$this->getResponse()->setContentType('application/json');

$criteria = new Criteria();
$criteria->add(ZleceniePeer::IMIE_NAZWISKO_KIEROWCY, '%'.$request->getParameter('q').'%', Criteria::LIKE);
$wynik = array();
$criteria->setDistinct();
foreach (ZleceniePeer::doSelect($criteria) as $row)
{
$wynik[$row->getImieNazwiskoKierowcy()] = (string) $row->getImieNazwiskoKierowcy();
}
if(empty($wynik)){
$wynik[$request->getParameter('q')] = $request->getParameter('q');
}
return $this->renderText(json_encode($wynik));
}


kod widgeta:

$this->widgetSchema['imie_nazwisko_kierowcy']  = new sfWidgetFormChoice(array(
'choices' => array(),
'renderer_class' => 'sfWidgetFormJQueryAutocompleter',
'renderer_options' => array(
'url' => 'http://localhost/tranzyt/web/backend.php/json/zleceniekierowca')
));


Czy ktoś jest mi w stanie pomóc?

konto usunięte

Temat: [symfony] autocompleter w symfony, małe litery

Odpowiedz sobie na pytanie: Co robi ta linijka kodu i co autor (czyli Ty) miał na myśli. Bo mnie to wygląda tak, że dokładnie tak chciałeś, żeby to działało.


if(empty($wynik)){
$wynik[$request->getParameter('q')] = $request->getParameter('q');
Michał Soczyński

Michał Soczyński nie, nie pracuje

Temat: [symfony] autocompleter w symfony, małe litery

Działa tak jak powinno, ale w parametrze 'q' przysyłane są duże litery, a zwraca mi małe, i nie rozumiem dlaczego. Zobacz obrazki, w drugim przypadku jest spełniony warunek empty($wynik), i zwraca mi 'imie nazwisko' zamiast 'Imie Nazwisko'. Tego nie rozumiem, jak w skrypcie zrobie 'echo $request->getParameter('q'), dostaję normalnie 'Imie Nazwisko'. :(

Może jest jakiś inny sposób żeby osiągnąć to co planuję?Michał Soczyński edytował(a) ten post dnia 17.10.11 o godzinie 08:12

konto usunięte

Temat: [symfony] autocompleter w symfony, małe litery

A jak wygląda przesłany do przeglądarki JSON?
Michał Soczyński

Michał Soczyński nie, nie pracuje

Temat: [symfony] autocompleter w symfony, małe litery

Jak wejdę przez:
http://localhost/tranzyt/web/backend_dev.php/json/zlec... Kierowca

dostaję:
{"Imie Kierowca":"Imie Kierowca"}


Możliwe że jquery wysyła zapytanie w małych literach? Gdzie mogę to zmienić, albo jakoś ten problem rozwiązać.Michał Soczyński edytował(a) ten post dnia 17.10.11 o godzinie 09:13

konto usunięte

Temat: [symfony] autocompleter w symfony, małe litery

Na początek sprawdź co wysyłane jest w POST a co zwraca JSON. Jak już to będziesz wiedział to będzie wiadomo gdzie jest problem.
Michał Soczyński

Michał Soczyński nie, nie pracuje

Temat: [symfony] autocompleter w symfony, małe litery

Dopóki nie wybiorę z listy, to w post autocomplete przysła mi duże litery, ale nie odnotowuje tego w formularzu, a jak kliknę wybór z listy to zamienia na te małe litery, czyli coś z autocomplete jest nie tak, nie wiem co mogę jeszcze z tym zrobić.

konto usunięte

Temat: [symfony] autocompleter w symfony, małe litery

Musisz precyzować odpowiedzi. Jak wpisałeś "Imię i nazwisko" to:
1. Co poszło postem? (wklej ten string)
2. Co wróciło JSON-em (wklej string)
Wtedy będzie wiadomo gdzie nastąpiła zamiana.
Rafał Korszuń

Rafał Korszuń co-owner @ Kleder

Temat: [symfony] autocompleter w symfony, małe litery

jezeli masz mysql to

mysql> SELECT 'abc' LIKE 'ABC';
-> 1
mysql> SELECT 'abc' LIKE BINARY 'ABC';
-> 0

Możesz też inaczej zrobić aby like był case sensitive :)


public function executeZleceniekierowca(sfWebRequest $request)
{
$this->getResponse()->setContentType('application/json');

$criteria = new Criteria();
$criteria->add(ZleceniePeer::IMIE_NAZWISKO_KIEROWCY, 'LIKE BINARY \'%'.$request->getParameter('q').'%\'', Criteria::CUSTOM);
$wynik = array();
$criteria->setDistinct();
(...)
Rafał Korszuń edytował(a) ten post dnia 20.10.11 o godzinie 16:28



Wyślij zaproszenie do