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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Проблема: Срезается русский текст

Сообщения:  [1-10]    [11-20]  [21-29] 

 
 автор: codexomega   (16.10.2005 в 20:11)   письмо автору
 
   для: cheops   (16.10.2005 в 15:26)
 

Большое спасибо cheops!
Наконец-то моя проблема решена.
В БД записывается текст вместо знаков HTML.
Правда в последнем сообщении, в коде я допустил ошибку, добавил лишнюю скобку.
if(!mysql_query(stripslashes($query).")"))


Вот исправленный код который работает, если кому еще понадобится:

<?php
// Insert data
if(isset($_POST['sql_string'])) 
      
$sql_string=$_POST['sql_string']; 
else 
      
$sql_string=""
if(isset(
$_POST['submit'])){ 
    
$sql_string_formatted preg_split("|;[\s]*\r\n|"$sql_string); 
    echo 
"<pre>"
      
print_r($sql_string_formatted); 
    echo 
"</pre>"
    foreach(
$sql_string_formatted as $query
    { 
       if(!
mysql_query(stripslashes($query))) 
           exit(
"Error - ".mysql_error()); 
    } 
    
// show confirmation 
    
echo 'Your informations were successfully added!'
}
?>

   
 
 автор: cheops   (16.10.2005 в 15:26)   письмо автору
 
   для: codexomega   (15.10.2005 в 18:45)
 

Пропустите запрос через stripslashes()
<?php
if(isset($_POST['sql_string'])) 
      
$sql_string=$_POST['sql_string']; 
else 
      
$sql_string=""
if(isset(
$_POST['submit'])){ 
    
$sql_string_formatted preg_split("|;[\s]*\r\n|"$sql_string); 
    echo 
"<pre>"
      
print_r($sql_string_formatted); 
      echo 
"</pre>"
      foreach(
$sql_string_formatted as $query
      { 
       if(!
mysql_query(stripslashes($query).")")) 
           exit(
"Error - ".mysql_error()); 
    } 
    
// show confirmation 
    
echo 'Your informations were successfully added!'
}
?>

   
 
 автор: codexomega   (15.10.2005 в 18:45)   письмо автору
 
   для: codexomega   (12.10.2005 в 22:48)
 

Создал форму для SQL запросов, содержащую текстовое поле и кнопку Submit.
Но теперь проблема с регулярным выражением.
Вот запрос:

INSERT INTO zagovor_category VALUES ('', 'Дела житейские');
INSERT INTO zagovor_category VALUES ('', 'Здоровье');
INSERT INTO zagovor_category VALUES ('', 'Защита');
INSERT INTO zagovor_category VALUES ('', 'Удача');
INSERT INTO zagovor_category VALUES ('', 'Хозяйство');
INSERT INTO zagovor_category VALUES ('', 'Любовь');
INSERT INTO zagovor_category VALUES ('', 'Деньги и богатство');
INSERT INTO zagovor_category VALUES ('', 'Сглаз и порча');
INSERT INTO zagovor_category VALUES ('', 'Все');


Это код PHP:


if(isset($_POST['sql_string']))
      $sql_string=$_POST['sql_string'];
else
      $sql_string="";
if(isset($_POST['submit'])){
     $sql_string_formatted = preg_split("|;[\s]*\r\n|", $sql_string);
    echo "<pre>";
      print_r($sql_string_formatted);
      echo "</pre>";
      foreach($sql_string_formatted as $query)
      {
       if(!mysql_query($query.")"))
           exit("Error - ".mysql_error());
    }
    // show confirmation
    echo 'Your informations were successfully added!';
}



А это результат:


Array
(
    [0] => INSERT INTO zagovor_category VALUES (\'\', \'Дела житейские\')
    [1] => INSERT INTO zagovor_category VALUES (\'\', \'Здоровье\')
    [2] => INSERT INTO zagovor_category VALUES (\'\', \'Защита\')
    [3] => INSERT INTO zagovor_category VALUES (\'\', \'Удача\')
    [4] => INSERT INTO zagovor_category VALUES (\'\', \'Хозяйство\')
    [5] => INSERT INTO zagovor_category VALUES (\'\', \'Любовь\')
    [6] => INSERT INTO zagovor_category VALUES (\'\', \'Деньги и богатство\')
    [7] => INSERT INTO zagovor_category VALUES (\'\', \'Сглаз и порча\')
    [8] => INSERT INTO zagovor_category VALUES (\'\', \'Все\');
)
Error - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '\'\', \'Дела житейские\'))' at line 1


Запрос из файла вроде работал, а строка не хочет.
Что здесь не так?
Спасибо.

   
 
 автор: codexomega   (12.10.2005 в 22:48)   письмо автору
 
   для: codexomega   (09.10.2005 в 07:59)
 

Вообщем так.
Поставлю я лучше форму на хост и буду через нее записи вставлять в таблицу.
Ведь таким образом данные не проходят обработку в phpMyAdmin.
Так будет проще.
Надоело возится с этими sql файлами.

   
 
 автор: codexomega   (12.10.2005 в 00:05)   письмо автору
 
   для: cheops   (11.10.2005 в 23:41)
 

Юникод, потому что в ANSI теряется кодировка букв и получаются знаки вопроса, которые ничем нельзя расшивровать.

   
 
 автор: cheops   (11.10.2005 в 23:41)   письмо автору
 
   для: codexomega   (11.10.2005 в 16:41)
 

Вы при сохранении данных в блокноте в последнем выпадающем списке что выбираете ANSI или Юникод?

   
 
 автор: codexomega   (11.10.2005 в 16:41)   письмо автору
 
   для: cheops   (11.10.2005 в 15:05)
 

4.0.25
Но дело наверное не в версии.
У меня тоже ни фига не идет с MySQL 4.1 на английском OS
Я попробовал редактировать sql файл в блокноте. При сохранении, блокнот выдает что в файле содержатся элементы unicode и если я не хочу потерять формат, то должен сохранить как unicode.
Сохраняю.
Запускаю скрипт.
Теперь данные в формате unicode, но синтаксическая ошибка:

(
Array
(
    [0] => INSERT INTO religion_articles VALUES ('', 'Статья первая','Текст статьи', NULL);
)
Error - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO religion_articles VALUES ('', 'Статья первая','Тек' at line 1


Может там какие-то дополнительные спрятанные кодировки прибавляются, которых в тексте не видно?

   
 
 автор: cheops   (11.10.2005 в 15:05)   письмо автору
 
   для: codexomega   (11.10.2005 в 09:02)
 

А на хосте версия MySQL какая?

   
 
 автор: codexomega   (11.10.2005 в 09:02)   письмо автору
 
   для: codexomega   (10.10.2005 в 22:59)
 

На хосте проверил. Но теперь вместо htmlосвких значков знаки вопроса.
Дело в том что файл .sql никак не принимается той системой и не расшивровывается, в коде ASCII не хватает значений.
Вообщем я решил не крутить мозги и воспользоваться взамен функцией html_entity_decode().
Проверю что получится.

   
 
 автор: codexomega   (10.10.2005 в 22:59)   письмо автору
 
   для: codexomega   (10.10.2005 в 19:52)
 

Поламов немного голову, я поставил в код вывод ошибки в случае неправильного запроса. Не знаю, почему раньше этого не сделал.
Короче первое что я сделал, так это удалил кавычки из запроса, в которые было заключено название таблицы.
Все пошло как надо. Ура!
Странно, но я такое уже делал вчера, но у меня оно не заработало.
Наверное тут еще и код был виноват.
Теперь он у меня такой:

          foreach($quer as $query)
          {
            if(!mysql_query($query))
                exit("Error - ".mysql_error());

          }



А это мой запрос в файле .sql:


INSERT INTO religion_articles VALUES ('', 'ABC','123', NULL);
INSERT INTO religion_articles VALUES ('', 'XY23','456', NULL);


Большое спасибо за помощь.
Осталось проверить на хосте, будет ли выполнятся все правильно и вместо значков html, увижу ли я в моей БД буквы.

   

Сообщения:  [1-10]    [11-20]  [21-29] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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