PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 5
Frants Отправлено: 15 Марта, 2012 - 13:34:27 • Тема: Проблемы с кодировкой при работе PHP+MySQL • Форум: Работа с СУБД

Ответов: 8
Просмотров: 2612
У меня таблицы были не в тех кодировках созданы, см. выше. А set names - это первое, что я пробовал сделать.
Frants Отправлено: 15 Марта, 2012 - 11:32:46 • Тема: Проблемы с кодировкой при работе PHP+MySQL • Форум: Работа с СУБД

Ответов: 8
Просмотров: 2612
snikers987 пишет:
$mysqli->set_charset('utf8');


и совсем не это...
Frants Отправлено: 15 Марта, 2012 - 11:18:06 • Тема: Проблемы с кодировкой при работе PHP+MySQL • Форум: Работа с СУБД

Ответов: 8
Просмотров: 2612
Dezmont пишет:
Проверьте кодировки:
1. Кодировки созданных таблиц.
2. Кодировки файлов php, которые работают с базой.
3. Кодировку, которую выставляет браузер для html страницы. Должна быть utf8

*.sql файлы тоже конвертируйте в utf8


В этом и была проблема, теперь все работает. Спасибо! Хи
Frants Отправлено: 12 Марта, 2012 - 13:42:57 • Тема: Проблемы с кодировкой при работе PHP+MySQL • Форум: Работа с СУБД

Ответов: 8
Просмотров: 2612
Учусь по книге Лауры Томсон и Люка Веллинга «Разработка веб-приложений на PHP и MySQL , 4-е издание». Все было хорошо, все получалось, пока не дошло дело до баз данных. В этой книге абсолютно ничего не сказано про кодирвки; я даже PDF версии предыдущих изданий скачал и делал поиск по ключевым словам типа «charset», «utf8», « cp1251» и т.д. Ничего. Я не понимаю как можно было авторам упустить этот столь важный момент в создании сайтов и почему в интернете все так рекомендуют эту книгу.
Вы, наверно, уже поняли: у меня не отображается кириллица ни в MySQL monitor, ни в браузере. Лезут кракозябры.
4 дня подряд я гуглил и пытался отладить тот код, который дается в книге. У меня получилось создать базу данных, содержимое в которой корректно отображается в MySQL monitor,а также в браузере, но как бы это не было смешно: я не помню что я конкретно я сделал. Да и нормально с этой моей БД работает только один php-сценарий, а остальные будто не видят ее.
В общем, ребята, прошу вашей помощи. Я вкратце изложу весь процесс, который дан в книге.
1) Предлагается создать базу данных через MySQL monitor командой CREATE DATABASE books;
Создал.
2) Выхожу из MySQL monitor командой quit и создаю таблицы из файла bookorama.sql командой mysql –uroot -Dbooks –ppass@word1 < bookorama.sql
Содержимое файла bookorama.sql:

CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE customers
  2. ( customerid int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  3.   name char(50) NOT NULL,
  4.   address char(100) NOT NULL,
  5.   city char(30) NOT NULL
  6. );
  7.  
  8. CREATE TABLE orders
  9. ( orderid int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  10.   customerid int UNSIGNED NOT NULL,
  11.   amount float(6,2),
  12.   date date NOT NULL
  13. );
  14.  
  15. CREATE TABLE books
  16. (  isbn char(13) NOT NULL PRIMARY KEY,
  17.    author char(50),
  18.    title char(100),
  19.    price float(4,2)
  20. );
  21.  
  22. CREATE TABLE order_items
  23. ( orderid int UNSIGNED NOT NULL,
  24.   isbn char(13) NOT NULL,
  25.   quantity tinyint UNSIGNED,
  26.  
  27.   PRIMARY KEY (orderid, isbn)
  28. );
  29.  
  30. CREATE TABLE book_reviews
  31. ( isbn char(13) NOT NULL PRIMARY KEY,
  32.   review text
  33. );


Создал.
3) Вставляем данные в нашу БД из файла book_insert.sql командой mysql –uroot –Dbooks –ppass@word1 < book_insert.sql
Содержимое файла book_insert.sql:

CODE (SQL):
скопировать код в буфер обмена
  1. USE books;
  2.  
  3. INSERT INTO customers VALUES
  4.   (3, "Саша Валентей", "12, ул. Гудвина", "г. Изумрудный"),
  5.   (4, "Ева Легкая", "34, пр. Незнайки", "г. Солнечный"),
  6.   (5, "Слава Моргунов", "56, пер. Поттера", "пгт Хогвартс");
  7.  
  8. INSERT INTO orders VALUES
  9.   (NULL, 3, 69.98, "2008-04-02"),
  10.   (NULL, 1, 49.99, "2008-04-15"),
  11.   (NULL, 2, 74.98, "2008-04-19"),
  12.   (NULL, 3, 24.99, "2008-05-01");
  13.  
  14. INSERT INTO books VALUES
  15.   ("5-8459-0046-8", "Майкл Морган", "Java 2. Руководство разработчика", 34.99),
  16.   ("5-8459-1082-X", "Кристофер Негус", "Linux. Библия пользователя", 24.99),
  17.   ("5-8459-1134-6", "Марина Смолина", "CorelDRAW X3. Самоучитель", 24.99),
  18.   ("5-8459-0426-9", "Родерик Смит", "Сетевые средства Linux", 49.99);
  19.  
  20. INSERT INTO order_items VALUES
  21.   (1, "5-8459-0046-8", 2),
  22.   (2, "5-8459-0426-9", 1),
  23.   (3, "5-8459-0426-9", 1),
  24.   (3, "5-8459-1134-6", 1),
  25.   (4, "5-8459-1082-X", 3);
  26.  
  27. INSERT INTO book_reviews VALUES
  28.   ("5-8459-0046-8", "Книга Моргана написана исключительно понятно и может счи-таться одной из лучших базовых книг по Java.");
  29.  

Получилось.
4) Заходим обратно в MySQL monitor:
- выбираем нашу БД командой use books;
-пробуем посмотреть содержимое таблицы customers командой select * from customers;
И вот тут лезут каракули вместо букв русского алфавита.
5) Открываем файл search.html:

CODE (html):
скопировать код в буфер обмена
  1. <html>
  2. <head>
  3.   <title>Магазин "Буквофил" – Поиск в каталоге</title>
  4. </head>
  5.  
  6. <body>
  7.   <h1>Магазин "Буквофил" - Поиск в каталоге</h1>
  8.   <form action="results.php" method="post">
  9.     Выберите тип поиска:    <select name="searchtype">
  10.       <option value="author">По автору</option>
  11.       <option value="title">По названию</option>
  12.       <option value="isbn">По ISBN</option>
  13.     </select>
  14.         Введите информацию для поиска:    <input type="text" name="searchterm" size="40" />
  15.         <input type="submit" name="submit" value="Найти" />
  16.   </form>
  17.  
  18. </body>
  19. </html>
  20.  

Пробуем сделать поиск. Поиск работает, но нормально отображаются только латинские буквы и цифры. Кириллица – каракули.
Код файла-обработчика result.php:

PHP:
скопировать код в буфер обмена
  1. <html>
  2. <head>
  3.   <title>Магазин "Буквофил" – Результаты поиска</title>
  4. </head>
  5. <body>
  6. <h1>Магазин "Буквофил" - Результаты поиска</h1>
  7. <?PHP
  8.   // создание коротких имен переменных
  9.   $searchtype = $_POST['searchtype'];
  10.   $searchterm = trim($_POST['searchterm']);
  11.  
  12.   if (!$searchtype || !$searchterm) {
  13.      echo 'Вы не ввели параметры поиска. Вернитесь' .
  14.           ' на предыдущую страницу и повторите ввод.';
  15.      exit;
  16.   }
  17.  
  18.     $searchtype = addslashes($searchtype);
  19.     $searchterm = addslashes($searchterm);
  20.   }
  21.  
  22.   @ $db = new mysqli('localhost', 'bookorama', 'bookorama123', 'books');
  23.   $errn = mysqli_connect_errno();
  24.      echo 'Ошибка: Не удалось установить соединение' .
  25.           ' с базой данных. Повторите попытку позже.';
  26.      exit;
  27.   }
  28.  
  29.   $query = "select * from books where ".$searchtype." like '%".$searchterm."%'";
  30.   $result = $db->query($query);
  31.   $num_results = $result->num_rows;
  32.   echo "<p>Найдено книг: ".$num_results."</p>";
  33.  
  34.   for ($i = 0; $i < $num_results; $i++) {
  35.      $row = $result->fetch_assoc();
  36.      echo "<p><strong>".($i+1).". Название: ";
  37.      echo htmlspecialchars (stripslashes($row['title']));
  38.      echo "</strong><br />Автор: ";
  39.      echo stripslashes($row['author']);
  40.      echo "<br />ISBN: ";
  41.      echo stripslashes($row['isbn']);
  42.      echo "<br />Цена: ";
  43.      echo stripslashes($row['price']);
  44.      echo "</p>";
  45.   }
  46.  
  47.   $result->free();
  48.   $db->close();
  49. ?>
  50.  
  51. </body>
  52. </html>
  53.  

Вот и все. Что да как я менял и пробовал - писать не буду. Думаю, тем, кто разбирается в этом, сказать что делать проще, чем читать кучу моего хлама.
Использованные программы:
-MySQL 5.5.21
-PHP 5.3.9
-Apache2.2
Кодировки в файле my.ini, находящегося в дериктории C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.5 следующие:
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
Файлы bookorama.sql и book_insert.sql в ANSI кодировке.
Frants Отправлено: 11 Марта, 2012 - 14:30:16 • Тема: Проблема с кодировкой • Форум: Вопросы новичков

Ответов: 11
Просмотров: 1062
Занимаюсь по той же книге, что и автор темы, и на том же этапе, в том же уроке та же проблема! Разве что я в utf8 все делаю.
Ну почему не работает, ребята?! 4-й день пытаюсь решить эту проблему, каракули лезут и лезут Огорчение Огорчение Огорчение

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB