Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JQUERY/PHP/MYSQL] Brak polskich znaków
Impact
post 14.10.2014, 12:47:38
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 11.02.2008

Ostrzeżenie: (0%)
-----


Witam,
Mam problem z wyświetlaniem polskich znaków. Mianowicie chodzi mi o to, że jeżeli występuje polski znak to albo wogóle nie wyświetla np. przy litrze "ó".
Pierwszy plik:
Kod
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>jQuery auto-complete, populate related fields</title>
    
    <script type="text/javascript" src="jquery/js/jquery-1.4.2.min.js"></script>
    <script type="text/javascript" src="jquery/js/jquery-ui-1.8.2.custom.min.js"></script>
    <script type="text/javascript">

        jQuery(document).ready(function(){
            $('.zipsearch').autocomplete({
                source:'jQueryAutocompleteRelatedFields.php',
                minLength:1,
                select:function(evt, ui)
                {
                    // when a zipcode is selected, populate related fields in this form
                    this.form.nazwisko_u.value = ui.item.nazwisko_u;
                    this.form.login.value = ui.item.login;
                    
                }
            });
        });

    </script>
    <link rel="stylesheet" href="jquery/css/smoothness/jquery-ui-1.8.2.custom.css" />
    <style type="text/css"><!--
    
            /* style the auto-complete response */
            li.ui-menu-item { font-size:12px !important; }
    
    --></style>
</head>

<body>

<form onsubmit="return false;">
    Podaj imię:
    <input id="zipsearch" type="text" class="zipsearch" />
    
    Nazwisko:
    <input id="nazwisko_u" type="text" disabled />
    
    Login:
    <input id="login" type="text" disabled />

</form>

</body>
</html>


Plik drugi:
Kod
<?php

class DB
{
    const DATABASE = 'przelewy';
    const HOST = 'localhost';
    const USERNAME = 'root';
    const PASSWORD = '';
    

    static private $pdo;
    
    static public function singleton()
    {
        if (!is_object(self::$pdo))
        {
            self::$pdo = new PDO('mysql:dbname=' . self::DATABASE . ';host=' . self::HOST,
                                    self::USERNAME,
                                    self::PASSWORD);
        }
        return self::$pdo;
    }
    
    private function __construct()
    {
        
    }
    
    public function __clone()
    {
        throw new Exception('You may not clone the DB instance');
    }
}

if (!isset($_REQUEST['term']))
{
    die('([])');
}

$st = DB::singleton()
        ->prepare(
            'select imie_u, nazwisko_u, login ' .
            'from uzytkownicy ' .
            'where imie_u like :uzytkownicy ' .
            'order by imie_u asc ' .
            'limit 0,10');

$searchZip = $_REQUEST['term'] . '%';
$st->bindParam(':uzytkownicy', $searchZip, PDO::PARAM_STR);

$data = array();
if ($st->execute())
{
    while ($row = $st->fetch(PDO::FETCH_OBJ))
    {
        $data[] = array(
            'value' => $row->imie_u ,
            'nazwisko_u' => $row->nazwisko_u ,
            'login' => $row->login
        );
    }
}
echo json_encode($data);

flush();


Dodam że w bazie metoda porównania napisów to: utf8_polish_ci.
Pliki są też kodowane utf-8.


Z góry dzięki za odpowiedź.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
viking
post 14.10.2014, 13:34:29
Post #2





Grupa: Zarejestrowani
Postów: 6 378
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Dla bazy SET NAMES, skąd wiesz że pliki są tak kodowane? A jeśli serwer wysyła nagłówek ISO-8859-2? Nigdzie tego nie definiujesz.


--------------------
Go to the top of the page
+Quote Post
Impact
post 14.10.2014, 13:40:04
Post #3





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 11.02.2008

Ostrzeżenie: (0%)
-----


dane przykładowe były dodawane przez phpMyAdmin metodą:

INSERT INTO nazwa_tabeli (nazwa_pola1, nazwa_pola2) VALUES (wartosc_pola1, wartosc_pola2)
Go to the top of the page
+Quote Post
Turson
post 14.10.2014, 16:47:11
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Podczas łączenia z PDO należy wskazać, że ma używać UTF-8
  1. $db = new PDO('mysql:host=host;dbname=baza', 'uzytkownik', 'haslo', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
Go to the top of the page
+Quote Post
Impact
post 15.10.2014, 06:40:24
Post #5





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 11.02.2008

Ostrzeżenie: (0%)
-----


Ok poradziłem sobie. Drugi plik wygląda tak:
Kod
<?php
$db = new PDO('mysql:host=host;dbname=baza', 'uzytkownik', 'haslo', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));

if (!isset($_REQUEST['term']))
{
    die('([])');
}

$st = $db
        ->prepare(
            'select imie, nazwisko, login, status ' .
            'from uzytkownicy ' .
            'where imie like :uzytkownicy ' .
            'order by imie_u asc ' .
            'limit 0,10');

$searchZip = $_REQUEST['term'] . '%';
$st->bindParam(':uzytkownicy', $searchZip);

$data = array();
if ($st->execute())
{
    while ($row = $st->fetch(PDO::FETCH_OBJ))
    {
        $data[] = array(
            'value' => $row->imie ,
            'nazwisko' => $row->nazwisko ,
            'login' => $row->login ,
                        'status' => $row->status
        );
    }
}
echo json_encode($data);


flush();

pozdrawiam

Ten post edytował Impact 15.10.2014, 06:40:54
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.07.2025 - 08:19