Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Из отправленной формы в БД записываются крякозябры
Форумы портала PHP.SU » » Вопросы новичков » Из отправленной формы в БД записываются крякозябры

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

1. goooooch - 23 Января, 2013 - 10:07:49 - перейти к сообщению
Здравствуйте.

Я только изучаю php и mysql, поэтому не ругайтесь, если мой вопрос покажется глупым.


Есть код:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. if (isset($_POST['send']))
  4. {
  5.    $my_title = strval($_POST['my_title']);
  6.      
  7.    $my_text = strval($_POST['my_text']);  
  8.    
  9.    $sql = mysql_query("INSERT into pages (title, content) values ('$my_title', '$my_text');");
  10.    
  11.    if ($sql == 'true')
  12.    {
  13.      echo '<p>Вы внесли запись  </p> ';
  14.    }
  15.    else
  16.    {
  17.      echo '<p>Вы  не внесли запись  </p> ';
  18.    }
  19.    
  20.    echo $sql;
  21.    
  22.    }
  23.    
  24. ?>
  25.  
  26.  
  27. <form action="index.php" method="post">
  28. <table border="1" align="center">
  29.   <tr>
  30.     <td>Введите заголовок страницы</td>
  31.     <td>Введите текст</td>
  32.   </tr>
  33.   <tr>
  34.     <td valign="top"><input name="my_title" type="text"
  35.         size="50" /></td>
  36.     <td valign="top"><textarea name="my_text" cols="60"
  37.         rows="30" > </textarea></td>
  38.   </tr>
  39. </table>
  40. <div align="center">
  41. <input name="send" type="submit" value="Отправить" />
  42. </div>
  43. </form>
  44.  


Вопрос:
запись в таблицу БД добавляется, но кирилические символы записываеются в виде: потребительский кредит вне...

Ну и чтобы два раза не вставать еще вопрос : в ПМА в созданной мной БД выводится сообщение "Индекс не определен!" Что я забыл сделать и что нужно сделать, чтобы это сообщение не выводилось?
2. Zuldek - 23 Января, 2013 - 10:43:24 - перейти к сообщению
Цитата:
запись в таблицу БД добавляется, но кирилические символы записываеются в виде: потребительский кредит вне...

Кодировка страницы с которой происходит отправка и файл обработчика UTF8
Кодировку БД выставите такую же.
Цитата:
Индекс не определен!" Что я забыл сделать и что нужно сделать, чтобы это сообщение не выводилось?

Создать в таблице колонку id и назначить её уникальным индексом с атрибутом autoincrement
3. goooooch - 23 Января, 2013 - 11:20:59 - перейти к сообщению
На странице кодировка —
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

А вот в прикрепленном файле — настройки БД. Тоже UTF-8, но там их несколько. Какой выбрать?
4. hugronaphor - 23 Января, 2013 - 12:36:45 - перейти к сообщению
При подключении к БД:

PHP:
скопировать код в буфер обмена
  1. $link = mysql_connect('localhost', 'user', 'password');
  2. mysql_set_charset('utf8',$link);
5. Vaio - 23 Января, 2013 - 13:23:35 - перейти к сообщению
goooooch пишет:
if ($sql == 'true')

Какой в ​​этом смысл?
6. goooooch - 23 Января, 2013 - 14:00:39 - перейти к сообщению
Vaio пишет:
goooooch пишет:
if ($sql == 'true')

Какой в ​​этом смысл?


Смысл в том, чтобы вывести на страницу результат отправки формы.
7. esterio - 23 Января, 2013 - 14:06:59 - перейти к сообщению
1. Файл должен быть в формате UTF-8 Without BOM
2. надсилаем HEADER
PHP:
скопировать код в буфер обмена
  1. header('Content-type: text/html; charset=utf-8');

3. правим HTACESS
CODE (htaccess):
скопировать код в буфер обмена
  1. AddDefaultCharset utf-8

4. После коннекта к MYSQL отправляем запросы
CODE (SQL):
скопировать код в буфер обмена
  1. SET NAMES utf8;
  2. SET character_set_client = utf8;
  3. SET character_set_connection = utf8;
  4. SET character_set_results = utf8;

5. В HTML ставим мета тег
для HTML
CODE (html):
скопировать код в буфер обмена
  1. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

Для XHTML
CODE (html):
скопировать код в буфер обмена
  1. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

(Добавление)
UDP.
Иногда нужно использовать iconv в PHP
(Добавление)
goooooch пишет:
Смысл в том, чтобы вывести на страницу результат отправки формы.

Имелось ввиду что Вы делаете неправильную проверку
Цитата:
if ($sql == 'true')

1. Вы проверяете булев тип, а ето true без лапок -
PHP:
скопировать код в буфер обмена
  1. if ($sql == true)

2. Можно просто написать
PHP:
скопировать код в буфер обмена
  1. if ($sql)

 

Powered by ExBB FM 1.0 RC1