Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не добавляется русский текст в utf-8
 
 автор: zorg84   (07.10.2011 в 03:48)   письмо автору
 
 

Возникла проблема... я с формы на сайте добавляю в базу данные в кирилице... например имя:"Сергей", фамилия:"Петрович"... но данные на русском языке в базе не появляются.

проверял на en "Sergey Petrovich", рабатает и если убрать mysql_query("SET NAMES utf8");
работает но выводится кирилица.�����
все страници в utf8


------------------------------------------
в файле .htaccess

AddDefaultCharset charset=utf-8
AddDefaultCharset Off
-----------------------------------------------
с чего начать поиск проблемы не пойму
может база MySQL

define("HOST","localhost");
define("USER","zorgg");
define("PASS","12345");
define("DB","magazin");
$db = mysql_connect (HOST,USER,PASS) or die (mysql_error());
mysql_query("SET NAMES utf8");
mysql_select_db(DB,$db);




База

-- phpMyAdmin SQL Dump
-- version 3.2.1
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Окт 07 2011 г., 03:43
-- Версия сервера: 5.0.45
-- Версия PHP: 5.2.4

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- База данных: `magazin`
--

-- --------------------------------------------------------

--
-- Структура таблицы `basket`
--

CREATE TABLE `basket` (
  `id` int(11) NOT NULL auto_increment,
  `customer` varchar(32) NOT NULL,
  `goodsid` int(11) NOT NULL default '0',
  `quantity` int(4) NOT NULL default '0',
  `datetime` int(11) NOT NULL default '0',
  `razmer` varchar(5) NOT NULL,
  `cvet` varchar(25) character set utf8 collate utf8_unicode_ci NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=741 ;

--
-- Дамп данных таблицы `basket`
--

INSERT INTO `basket` VALUES(738, 'bba52d3518a68361db4cde6f66cc4099', 199, 1, 1317943352, 'S', 'чорный');
INSERT INTO `basket` VALUES(737, '9b116c4a0dfa6efc4d434d4228dbe83f', 174, 1, 1317943180, 
-- --------------------------------------------------------

--
-- Структура таблицы `catalog`
--

CREATE TABLE `catalog` (
  `id` int(11) NOT NULL auto_increment,
  `author` varchar(50) collate utf8_unicode_ci NOT NULL,
  `title` varchar(50) collate utf8_unicode_ci NOT NULL,
  `pubyear` int(4) NOT NULL default '0',
  `price` int(11) NOT NULL default '0',
  `img` varchar(255) collate utf8_unicode_ci NOT NULL,
  `cat` int(2) NOT NULL,
  `img2` varchar(255) collate utf8_unicode_ci NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=204 ;

--
-- Дамп данных таблицы `catalog`
--

INSERT INTO `catalog` VALUES(199, 'bla', 'bla', 2011, 110, 'file/314.png', 1, '');


-- --------------------------------------------------------


--
-- Структура таблицы `comments`
--

CREATE TABLE `comments` (
  `id` int(5) NOT NULL auto_increment,
  `post` varchar(5) NOT NULL,
  `author` varchar(100) NOT NULL,
  `text` text NOT NULL,
  `date` datetime NOT NULL,
  `email` varchar(250) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1214 ;

--
-- Дамп данных таблицы `comments`
--

INSERT INTO `comments` VALUES(1212, '203 ', '', '', '2011-10-07 03:37:49', '');
INSERT INTO `comments` VALUES(1211, '201 ', '', '', '2011-10-07 03:28:28', '');
INSERT INTO `comments` VALUES(1210, '201 ', 'ммм', 'ммм', '2011-10-07 03:27:55', '');
INSERT INTO `comments` VALUES(1209, '201 ', 'ппп', 'пп', '2011-10-07 03:27:22', '');
INSERT INTO `comments` VALUES(1208, '201 ', 'аа', 'ааа', '2011-10-07 03:27:15', '');
INSERT INTO `comments` VALUES(1214, '203 ', 'nn', 'nnnn', '2011-10-07 03:45:03', '');
INSERT INTO `comments` VALUES(1215, '203 ', 'jjjjj', 'jjjj', '2011-10-07 03:45:22', '');
INSERT INTO `comments` VALUES(1213, '203 ', 'мм', 'ммм', '2011-10-07 03:38:03', '');

-- --------------------------------------------------------

  Ответить  
 
 автор: cheops   (07.10.2011 в 09:57)   письмо автору
 
   для: zorg84   (07.10.2011 в 03:48)
 

Вообще говоря странно, а версия MySQL-сервера какая?

  Ответить  
 
 автор: zorg84   (07.10.2011 в 22:43)   письмо автору
 
   для: cheops   (07.10.2011 в 09:57)
 

MySql 5.0.45
всё передаётся через ajax может в этом причина

  Ответить  
 
 автор: zorg84   (07.10.2011 в 23:00)   письмо автору
 
   для: zorg84   (07.10.2011 в 22:43)
 

$("#send").click(function(){
        var author = $("#author").val();
        var message = $("#message").val();    
        var id = $("#id").val();
        
        var time = new Date (); 
var AddZero = new Function ('x', "if (x < 10) x = '0' + x; return x"); 
var min = AddZero (time.getMinutes ()), 
    cha = AddZero (time.getHours ()), 
    den = AddZero (time.getDate ()), 
    mes = AddZero (time.getMonth () + 1); 
var date = time.getFullYear () + '-' + mes + '-' + den + ' ' + cha + ':' + min;
        $.ajax({
            type: "POST",
            url: "coment.php",
            data: {"author": author, "id": id,  "message": message},
            cache: false,                        
            success: function(response){
                var messageResp = new Array("Ваше сообщение отправлено "+author+"",'Сообщение не отправлено Ошибка базы данных','Нельзя отправлять пустые сообщения');
                var resultStat = messageResp[Number(response)];
                if(response == 0){
                    $("#author").val("");
                    $("#message").val("");
                    $("#commentBlock").append("<div class='comment'>Комментарий добавил(а): <strong>"+author+"</strong><br>Дата: <strong>"+date+"</strong><br><br>"+message+"</div>");
                }
                else{ 
 
                var resul = "Слишком длинное слово "+author+" ";
                  $("#resp").text(resul).show().delay(1500).fadeOut(800);
                     }
                $("#resp").text(resultStat).show().delay(1500).fadeOut(800);
                
            }
        });
        return false;
                
    });
    
});



<?php
$query3 
"SELECT *, DATE_FORMAT(date,'%Y-%m-%d %H:%i') as eurodate FROM comments WHERE post='$id'";
$result3 mysql_query("$query3") or die(mysql_error());
if (
mysql_num_rows($result3) > 0)
    {

while (
$myrow3 mysql_fetch_assoc($result3)) {



?>

<div class="comment"><p class='post_comment_add'>Комментарий добавил(а): <strong><?php echo $myrow3["author"]; ?></strong><br> 
Дата: <strong><?php echo $myrow3["eurodate"]; ?></strong></p>
<p><?php echo $myrow3["text"]; ?></p></div>
<?php
}
}

?>
</div>

<span id="res"><div  id="resp" style="border:solid black"></div></span>

<form action="coment.php" method="post" name="form">
    <p>
        Автор:<br> 
        <input name="author" type="text" id="author">
    </p>
    <p>
        Текст сообщения:<br>
        <textarea name="message" rows="5" cols="50" id="message"></textarea>
    </p>
    <input name="js" type="hidden" value="no" id="js">
    <p>  
    <input name="id" type="hidden" id="id" value="<? echo $id?> ">
    <input name="button" type="submit" value="Отправить" id="send"> 
    </p>
</form>




<?php include ("blocks/bd.php");
header('Content-Type: text/html; charset=utf-8');
//**********************************************
if(empty($_POST['js'])){




$mas=explode(" ",$_POST['message']); 
 foreach(
$mas as $index => $val
 { 
 if (
strlen($val)>25
 { 
 exit(
"Слишком длинные слова в тексте сообщения!"); 
 break; 
 } 
 }
    if(
$_POST['message'] != '' && $_POST['author'] != ''){
     if (isset(
$_POST['id'])){$id $_POST['id'];}
        
$author = @iconv("UTF-8""windows-1251"$_POST['author']);
        
$author addslashes($author);
        
$author htmlspecialchars($author);
        
$author stripslashes($author);
        
$author mysql_real_escape_string($author);
        
        
$text = @iconv("UTF-8""windows-1251"$_POST['message']);
        
$text addslashes($text);
        
$text htmlspecialchars($text);
        
$text stripslashes($text);
        
$text mysql_real_escape_string($text);

        
$date date("Y-m-d  H:i:s");
       
        
$result mysql_query("INSERT INTO comments (post,author,text,date) VALUES ('$id','$author','$text','$date')");
        if(
$result == true){
            echo 
0//Ваше сообшение успешно отправлено
        
}else{
            echo 
1//Сообщение не отправлено. Ошибка базы данных
        
}
    }else{
        echo 
2//Нельзя отправлять пустые сообщения
    
}
}

//**************************************** Если отключен JavaScript ************************************

if($_POST['js'] == 'no'){
if (isset(
$_POST['id'])){$id $_POST['id'];}

    if(
$_POST['message'] != '' && $_POST['author'] != ''){

        
$author $_POST['author'];
        
$author addslashes($author);
        
$author htmlspecialchars($author);
        
$author stripslashes($author);
        
$author mysql_real_escape_string($author);
        
        
$text $_POST['message'];
        
$text addslashes($text);
        
$text htmlspecialchars($text);
        
$text stripslashes($text);
        
$text mysql_real_escape_string($text);

        
$date date("Y-m-d");
        
$result mysql_query("INSERT INTO comments (post,author,text,date) VALUES ('$id','$author','$text','$date')",$db);
        if(
$result == true){
            echo 
"Ваше сообшение успешно отправлено"//Ваше сообшение успешно отправлено
        
}else{
            echo 
"Сообщение не отправлено. Ошибка базы данных"//Сообщение не отправлено. Ошибка базы данных
        
}
    }else{
        echo 
"Нельзя отправлять пустые сообщения"//Нельзя отправлять пустые сообщения
    
}
}
?>          

  Ответить  
 
 автор: Slo_Nik   (07.10.2011 в 23:12)   письмо автору
 
   для: zorg84   (07.10.2011 в 23:00)
 

попробуйте обработать данные функцией encodeURI()

data: {"author": encodeURI(author), "id": id,  "message": encodeURI(message) },

  Ответить  
 
 автор: zorg84   (07.10.2011 в 23:17)   письмо автору
 
   для: Slo_Nik   (07.10.2011 в 23:12)
 

попробую

  Ответить  
 
 автор: zorg84   (07.10.2011 в 23:21)   письмо автору
 
   для: zorg84   (07.10.2011 в 23:17)
 

добавилось но кириллица отображается


Комментарий добавил(а): %D0%BC%D0%BC%D0%BC
 Дата: 2011-10-07 23:18

%D0%BC%D0%BC%D0%BC


и в базе также

  Ответить  
 
 автор: zorg84   (08.10.2011 в 00:12)   письмо автору
 
   для: zorg84   (07.10.2011 в 23:21)
 

просьба к модератора перенести тему в HTML+CSS+JavaScriptтак-как проблема в ajex

  Ответить  
 
 автор: zorg84   (08.10.2011 в 01:01)   письмо автору
 
   для: zorg84   (08.10.2011 в 00:12)
 

сделал так заработало, но почему так работает, а в файле bd не работает


$query3 = "SELECT *, DATE_FORMAT(date,'%Y-%m-%d %H:%i') as eurodate FROM comments WHERE post='$id'";

//**********************
mysql_query("SET NAMES utf8");
//***********************

$result3 = mysql_query("$query3") or die(mysql_error());

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования