За последние 24 часа нас посетили 15816 программистов и 1668 роботов. Сейчас ищут 807 программистов ...

проблемы с кодировкой

Тема в разделе "PHP для новичков", создана пользователем writer, 8 дек 2012.

  1. writer

    writer Активный пользователь

    С нами с:
    17 авг 2012
    Сообщения:
    131
    Симпатии:
    0
    есть 2 страницы.На одной текст показывает норм а на другой вопросами.
    Кодировки в хтмл на обоих CP-1251.В connect.php прописана кодировка та же самая. Идентично абсолютно все.
    index.php
    [​IMG]
    user.php
    [​IMG]

    index.php
    Код (PHP):
    1.     <?php
    2.  include('connect.php') ;
    3. $db = mysql_connect($db_host, $db_user, $db_password) or exit(mysql_error());
    4. mysql_select_db($db_name, $db) or exit(mysql_error());
    5. if(isset($_POST['id'])){$id=(int)$_POST['id'];}else{$id='';}
    6. if(isset($_POST['radio'])){$radio=(int)$_POST['radio'];}else{$radio='';}
    7. if(isset($_POST['minus'])){$minus=(int)$_POST['minus'];}else{$minus='';}
    8. if(isset($_POST['plus'])){$plus=(int)$_POST['plus'];}else{$plus='';}
    9. if($radio==0){$plus=$plus+1;}elseif($radio==1){$minus=$minus+1;}else{}
    10. if(isset($_POST['name'])){$name = $_POST['name'];}else{$name='';}
    11. if(isset($_POST['localsfere'])){$localsfere = (int)$_POST['localsfere'];}else{$localsfere='';}
    12. mysql_query ( "UPDATE `opros` SET
    13.     `plus` = '" .$plus . "',
    14.     `name` = '" . $name. "',
    15.     `minus` = '" .$minus . "',
    16.     `localsfere` = '" .$localsfere . "'
    17. WHERE `id` = {$id}");
    18.  
    19. $id=rand(1,4);//МЕНЯТЬ РАНДОМ НА СУЩЕСТВУЮЩИЕ ВОПРОСЫ
    20.  
    21. $sql_data2 = mysql_query("SELECT * FROM `opros` WHERE id='$id'");
    22.     $sql_data0 = mysql_num_rows($sql_data2);
    23.     for ($i=1; $i <=$sql_data0; $i++) {
    24. $sql_data = mysql_fetch_assoc($sql_data2);
    25. echo '<div class="success"><form action="index.php" method="POST">
    26. '.$sql_data['name'].'</br><input type="radio" name="radio" value="0">Да</input>
    27. <input type="radio" name="radio" value="1" >Нет</input>
    28. <input type="hidden" name="id" value="'.$sql_data['id'].'" ></input>
    29. <input type="hidden" name="name" value="'.$sql_data['name'].'" ></input>
    30. <input type="hidden" name="plus" value="'.$sql_data['plus'].'" ></input>
    31. <input type="hidden" name="minus" value="'.$sql_data['minus'].'" ></input>
    32. <input type="hidden" name="localsfere" value="'.$sql_data['localsfere'].'" ></input>
    33.   <input style="margin-left:20px;padding:2px 2px 2px 2px ;" type="submit"></form></div>';
    34.   //КОНЕЦ ТЕСТА
    35. }    
    36.  
    37. ?>
    user.php
    Код (PHP):
    1.  include('connect.php') ;
    2. $db = mysql_connect($db_host, $db_user, $db_password) or exit(mysql_error());
    3. mysql_select_db($db_name, $db) or exit(mysql_error());
    4. if(isset($_POST['id'])){$id=(int)$_POST['id'];}else{$id='';}
    5. if(isset($_POST['radio'])){$radio=(int)$_POST['radio'];}else{$radio='';}
    6. if(isset($_POST['minus'])){$minus=(int)$_POST['minus'];}else{$minus='';}
    7. if(isset($_POST['plus'])){$plus=(int)$_POST['plus'];}else{$plus='';}
    8. if($radio==0){$plus=$plus+1;}elseif($radio==1){$minus=$minus+1;}else{}
    9. if(isset($_POST['name'])){$name = $_POST['name'];}else{$name='';}
    10. if(isset($_POST['localsfere'])){$localsfere = (int)$_POST['localsfere'];}else{$localsfere='';}
    11. mysql_query ( "UPDATE `opros` SET
    12.     `plus` = '" .$plus . "',
    13.     `name` = '" . $name. "',
    14.     `minus` = '" .$minus . "',
    15.     `localsfere` = '" .$localsfere . "'
    16. WHERE `id` = {$id}");
    17.  
    18. $id=rand(1,4);//МЕНЯТЬ РАНДОМ НА СУЩЕСТВУЮЩИЕ ВОПРОСЫ
    19.  
    20. $sql_data2 = mysql_query("SELECT * FROM `opros` WHERE id='$id'");
    21.     $sql_data0 = mysql_num_rows($sql_data2);
    22.     for ($i=1; $i <=$sql_data0; $i++) {
    23. $sql_data = mysql_fetch_assoc($sql_data2);
    24. echo '<div class="success"><form action="user.php?id='.$_SESSION['id'].'" method="POST">
    25. '.$sql_data['name'].'</br><input type="radio" name="radio" value="0">Да</input>
    26. <input type="radio" name="radio" value="1" >Нет</input>
    27. <input type="hidden" name="id" value="'.$sql_data['id'].'" ></input>
    28. <input type="hidden" name="name" value="'.$sql_data['name'].'" ></input>
    29. <input type="hidden" name="plus" value="'.$sql_data['plus'].'" ></input>
    30. <input type="hidden" name="minus" value="'.$sql_data['minus'].'" ></input>
    31. <input type="hidden" name="localsfere" value="'.$sql_data['localsfere'].'" ></input>
    32.   <input style="margin-left:20px;padding:2px 2px 2px 2px ;" type="submit"></form></div>';
    33.   //КОНЕЦ ТЕСТА
    34. }     

    connect.php
    Код (PHP):
    1. <?php
    2. $db_host="127.0.0.1";  
    3. $db_user="root";  
    4. $db_password="";   
    5. $db_name = "stat";  
    6. mysql_query("SET NAMES 'cp1251'");
    7. mysql_query("SET CHARACTER SET 'cp1251'");
    8. mysql_connect($db_host, $db_user, $db_password) or die (mysql_error());
    9. mysql_select_db($db_name) or die (mysql_error());
    10. ?>
     
  2. Encoder

    Encoder Активный пользователь

    С нами с:
    1 ноя 2012
    Сообщения:
    32
    Симпатии:
    0
    А сам документ в какой кодировке сохраняли?
     
  3. writer

    writer Активный пользователь

    С нами с:
    17 авг 2012
    Сообщения:
    131
    Симпатии:
    0
    Все документы в 1251. БД в 1251. все документы сейчас повторно перекодировал во все и потом снова на 1251 и результат 0.Странно вообще на самом деле как так это возможно? вообще не ожидал подвоха тут
     
  4. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Попробуй в html
    charset=windows-1251 а не CP-1251
     
  5. writer

    writer Активный пользователь

    С нами с:
    17 авг 2012
    Сообщения:
    131
    Симпатии:
    0
    не помогло(
     
  6. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Как показано на скринах не все :)
    В вашем случае проблема при выводе из бд это однозначно.

    Немного не по теме, но про кодировку на страницах:
    -------------------------------------------------
    Можно глобально через .htaccess задать
    или через headers (в самом начале исполняемого скрипта)
    p.s вместо utf-8 подставляйте нужную кодировку
     
  7. writer

    writer Активный пользователь

    С нами с:
    17 авг 2012
    Сообщения:
    131
    Симпатии:
    0
    Invision,нет часть кода отвечающая за вывод голосования идентична.Вывод из БД ведь на второй странице проходит правильно...ну ладно я понял что в коде не найти ошибку...придеться как то обходить ее. глобально решать так проблему чет не хочется.возможно переносить потом с сервера на сервер придется и это потом опять гадания создаст)
     
  8. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    Ясно, в любом случае значит копай глубже )
     
  9. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Попробуй в самом-самом начале проблемного скрипта добавить:
    Код (PHP):
    1. <?php
    2. header('Content-Type: text/html; charset=Windows-1251');
    3. ?>