За последние 24 часа нас посетили 51443 программиста и 1759 роботов. Сейчас ищут 872 программиста ...

Отображение знаками вопроса после выборки из базы

Тема в разделе "Прочие вопросы по PHP", создана пользователем Golovastik, 26 окт 2010.

  1. Golovastik

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

    С нами с:
    14 июл 2010
    Сообщения:
    193
    Симпатии:
    0
    Вот полное состояние моей базы, выражены на фото.

    У меня есть файл 1.php в нём такой код:


    Код (Text):
    1. <?php
    2. include '../blocks/database.php';  /*Соединяемся с Базой Данных*/
    3.    
    4.  
    5. ?>
    6. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    7. <html xmlns="http://www.w3.org/1999/xhtml">
    8. <head>
    9. <link rel="stylesheet" type="text/css" href="../style.css" />
    10. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    11. <title>Видеокурсы по заработку в Интернет</title>
    12. </head>
    13. <body>
    14.  
    15. <!--Шапка сайта -->
    16. <?php include '../blocks/header.php' ?>
    17.  
    18. <!--Левая навигация-->
    19. <?php include '../blocks/navigator_left_zar_v_internet.php' ?>
    20.    
    21. <!--Правая навигация-->
    22. <?php include '../blocks/navigator_right_zar_v_internet.php' ?>
    23.    
    24. <!--Контент-->
    25. <?php include '../blocks/kontent1.php' ?>
    26.    
    27.  
    28. <!--Copyright-->
    29. <?php include '../blocks/footer.php' ?>    
    30.  
    31. </body>
    32. </html>
    Через файл kontent1.php я вывожу всё с базы на экран, вот содержимое
    kontent1.php


    Код (Text):
    1. <div class="center">
    2. <div class="zagolovok">Компьютерные видеокурсы для начинающих</div> <br />
    3. <?php
    4. include '../blocks/database.php';  /*Соединяемся с Базой Данных*/
    5. ?>
    6.  
    7.                
    8. <?php
    9. //Число постов выводящих на странице
    10. $num = 3;
    11. @$page = $_GET['page'];
    12. if(empty($page)){
    13. $page = 1;
    14. }
    15.  
    16.  
    17. $result = mysql_query("select COUNT(*) FROM lessons2",$connect);
    18. $posts = mysql_result($result,0);
    19. //Находим общее количество страниц
    20. $chislo_str = intval(($posts-1)/$num)+1;
    21. $page = intval($page);
    22. //empty($page) Если переменной не существует или ее значение равно нулю
    23. if(empty($page) or $page<0) $page = 1;
    24. if($page > $chislo_str) $page = $chislo_str;
    25. // Если ввести $page=7  тогда 7*3-3=18  
    26. //с 18 поста будет выводится пост 18,19,20 на странице №7
    27. $start = $page * $num - $num;  
    28.  
    29.  
    30. /*--------------------Выводов Постов--------------------------------------*/
    31.  
    32. if ( isset ( $_GET['id'] ) ) {
    33.    
    34.     //Увеличиваем заданный счетчик
    35.     $update = mysql_query ( "UPDATE `lessons2` SET `lessons2`.`obnovlenie` = `lessons2`.`obnovlenie` + 1 WHERE `lessons2`.`id` = {$_GET['id']} LIMIT 1" ) or die ( mysql_error() );
    36.  
    37.     //Запрос на выборку из нашей таблицы
    38.     $query = mysql_query ( "SELECT * FROM `lessons2` WHERE `lessons2`.`id` = {$_GET['id']} LIMIT 1" ) or die ( mysql_error() );
    39.  
    40.     //Получаем результат
    41.     $resalt = mysql_fetch_assoc ( $query );
    42.  
    43.     //Выводим полную новость
    44.        
    45.          echo $resalt['podrobnosti'];
    46.        
    47.          // '<br /><a href="', $_SERVER['HTTP_REFERER'], '" title="Назад">Назад</a>';
    48.  
    49. }
    50. else{
    51.  
    52.     //Запрос на выборку из нашей таблицы
    53.  
    54. $query = mysql_query ( "SELECT * FROM lessons2 LIMIT $start, $num" ) or die ( mysql_error() );
    55. while ( $resalt = mysql_fetch_assoc ( $query ) ) {
    56.  
    57.    echo $resalt['text'],  '</a> <span class="prosmotrov" style="line-height:45px;">Просмотров: <span class="green schetok1">',$resalt['obnovlenie'], '</span></span> ';
    58.    }
    59.    
    60.  
    61.  
    62. //------------------------------------------------
    63. // Стрелка назад  
    64. if($page>1)
    65. $nazad= '<a class="knopka_nazad1" href= ./1.php?page='.($page-1).'>Назад</a>';
    66. else $nazad= '<span class="knopka_nazad2">Назад</span>';
    67.        
    68. //Стрелка вперед  
    69. if($page<$chislo_str)
    70. $vpered = '<a class="knopka_vpered1" href= ../videolessons/1.php?page='.($page + 1).'>Вперёд</a>';
    71. else $vpered= '<span class="knopka_vpered2">Вперёд</span>';
    72.  
    73. // Вывод меню  
    74. $expand_to = 4; // сколько страниц должно показываться слева и справа от текущей
    75.  
    76. // начало и конец "соседних" страниц
    77. $a = $page - $expand_to; if ($a < 1) $a = 1;
    78. $b = $page + $expand_to; if ($b > $chislo_str) $b = $chislo_str;
    79.  
    80. if ($a > 1) // надо ли показывать отдельно ссылку на первую и "..."
    81. {
    82.     $navigation[] = "<a href=\"./1.php?page=1\">1</a>";
    83.     if ($a > 2) $navigation[] = "...";
    84. }
    85.  
    86. // генерируем ссылки на "соседние" страницы
    87. for ($i = $a; $i <= $b; $i++)
    88.     $navigation[] = ($page == $i) ? '<span class="tek_str">'.$i.'</span>' : "<a class='str_nav' href=\"./1.php?page=$i\">$i</a>";
    89.  
    90. if ($b < $chislo_str) // надо ли показывать отдельно "..." и ссылку на последнюю
    91. {
    92.     if ($b < $chislo_str - 1) $navigation[] = '...';
    93.     $navigation[] = "<a href=\"./1.php?page=$chislo_str\">$chislo_str</a>";
    94. }
    95.  
    96. // выводим готовую навигацию
    97. echo '<div class="navig"'.$nazad.'&nbsp;&nbsp; '.implode(' ', $navigation).'&nbsp;&nbsp;'.$vpered.'</div>';
    98. }
    99. ?>
    100.  
    101. <!---------------------------------------------------------------------------->
    102.        
    103.    
    104.  
    105.            
    106.        
    107. </div>
    108.  
    109. <!---------------------------------------------------------------------------->
    Файл database.php
    Код (Text):
    1. <?php
    2.  
    3. $server = 'localhost'; //Имя сервера
    4. $user = 'xai'; //Логин  
    5. $password = '12345'; //Пароль
    6. $db = 'video';
    7. $table = 'lessons'; //Название таблицы
    8. $error_database = '<h2>Произошла ошибка в базе данных,<br/>
    9. в ближайшее время она будет устранена!</h2>';
    10. $connect = mysql_connect($server,$user,$password);
    11.  
    12. if(!$connect){
    13. echo $error_database;
    14. exit;
    15. };
    16. //$connect по какому соединению мы работаем
    17. $select = mysql_select_db($db,$connect);
    18. if(!$select){
    19. echo $error_database;
    20. exit;
    21. };
    22.  
    23. ?>
    На локальном компьютере всё достаёт русским, как пробую на
    phpmyadmin 5 версии(там хостинг), такие кракозябры вылетают, уже не знаю что делать.

    [​IMG]
    [​IMG]
    [​IMG]
     
  2. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Golovastik
    1 - выбросьте видеоуроки и купите нормальную книжку (если нет времени читать, бросьте программирование, это не для вас)
    2 - KOI8-R и cp1251 это прошлый век, переходите на UTF8
    3 - есть РНР такая функция как mysql_set_charset
    4 - но и это уже вчерашний день, используйте Mysqli (MySQL Improved Extension) или PDO (PHP Data Objects)
    5 - в этом коде есть большая дыра, видеоурок видимо этого вам не пояснил, а значит ничему хорошему он не научит (см.п1)
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    попробуй в самом начале сдалть так
    mysql_query ( "SET NAMES CP1251");
     
  4. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    mysql_set_charset делает тоже самое, только не через (_|_) а нормально...
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Vladson
    я так думаю, что "нормально" это когда у тебя диалог с БД-сервером идет на одном с твоей кодировкой языке, а не когда приходится применять костыли =)
     
  6. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    я так думаю, что ты не совсем понял что делает mysql_set_charset и SET NAMES кстати тоже.
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я вобще этого не понимаю и понимать не хочу =)
     
  8. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    а я хочу, всегда юзал SET NAMES и до сих пор никаких проблем не было
    Vladson почему mysql_set_charset лучше?
     
  9. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    http://phorror.livejournal.com/71614.html
     
  10. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    Внатуре, и в mysqli такая же херня.
    И коллекшен устанавливается тоже нормально. Надо юзать mysql_set_charset()
     
  11. Golovastik

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

    С нами с:
    14 июл 2010
    Сообщения:
    193
    Симпатии:
    0
    Для теста, создал 1 файл без никаких других файлов, чисто для того чтоб достать одну фразу с базы данных и вывести её на экран, всё равно выдало знаками вопроса.

    Вот содержимое файла index.php.
    Код (Text):
    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    2. <html xmlns="http://www.w3.org/1999/xhtml">
    3. <head>
    4. <link rel="stylesheet" type="text/css" href="style.css" />
    5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    6. <meta name="description" content=" " />
    7. <meta name="keywords" content="" />
    8. <title>Главная</title>
    9. </head>
    10. <body >
    11.  
    12.  
    13.  
    14.  
    15. <!--Главная страница -->
    16.  
    17.  
    18. <div style="text-align:center; margin-top:20px; color:#006633; font-family:Verdana, Arial, Helvetica, sans-serif;" >
    19. <br />
    20.  
    21. <?php
    22.  
    23.  
    24. $server = 'localhost'; //Имя сервера
    25. $user = 'voxri119_xai'; //Логин  
    26. $password = 't37du78ah4'; //Пароль
    27. $db = 'voxri119_video';
    28. $table = 'lessons'; //Название таблицы
    29. $error_database = '<h2>Произошла ошибка в базе данных,<br/>
    30. в ближайшее время она будет устранена!</h2>';
    31. $connect = mysql_connect($server,$user,$password);
    32.  
    33. if(!$connect){
    34. echo $error_database;
    35. exit;
    36. };
    37. mysql_query("set names utf-8");
    38. //$connect по какому соединению мы работаем
    39. $select = mysql_select_db($db,$connect);
    40. if(!$select){
    41. echo $error_database;
    42. exit;
    43. };
    44.  
    45.  
    46. $z = mysql_query("select * from voxri119_video.privet",$connect);
    47.  
    48. $rez = mysql_fetch_assoc($z);
    49.  
    50. echo $rez['text'];
    51.  
    52.  
    53.  
    54. ?>
    55.  
    56.  
    57. </div>
    58.  
    59.  
    60.  
    61. </html>
    ВЫДАЁТ ЗНАКАМИ ВОПРОСА!!! Что делать?

    http://ipicture.ru/uploads/101031/3uTmbxD35R.jpg
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
    [​IMG]
     
  12. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    измени через Операции koi8r_bin на uft8_general_ci
     
  13. Golovastik

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

    С нами с:
    14 июл 2010
    Сообщения:
    193
    Симпатии:
    0
    Скажите, везде настроил как ві сказали, сработало наконец-то. Вопрос такой.
    почему если не прописать mysql_query("set names utf8"); не будет работать?
     
  14. Golovastik

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

    С нами с:
    14 июл 2010
    Сообщения:
    193
    Симпатии:
    0
    Как базу данных создать чтоб именно в кодировке нужной была ютф?
    Пробую созданную изменить, не выходит, пробую так:
    Код (Text):
    1. alter database video default character set utf8_general_ci
    Меня интересует именно как запросом написать, как ни пробовал постоянно ошибки.
    Код (Text):
    1. CREATE DATABASE video WITH ENCODING 'utf8';
     
  15. Golovastik

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

    С нами с:
    14 июл 2010
    Сообщения:
    193
    Симпатии:
    0
    Как базу данных создать чтоб именно в кодировке нужной была ютф?
    Пробую созданную изменить, не выходит, пробую так:
    Код (Text):
    1. alter database voxri119_video default character set utf8_general_ci
    Меня интересует именно как запросом написать, как ни пробовал постоянно ошибки.
    Код (Text):
    1. CREATE DATABASE voxri119_video WITH ENCODING 'utf8';

    Ошибка

    SQL-запрос :

    ALTER DATABASE `voxri119_video` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci

    Ответ MySQL:
    #1064 - You have an error in your SQL syntax near 'DATABASE `voxri119_video` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci' at line 1

    [Документация] · [Назад]
     
  16. Golovastik

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

    С нами с:
    14 июл 2010
    Сообщения:
    193
    Симпатии:
    0
    Ввоже в адресной строке браузера.
    privet.ru test1.ru localhost/phpmyadmin и ничего не запускается, выдаёт 404

    Скачал по ссылке: http://www.denwer.ru/ Апач 5.3, что не запускаю, выдаёт 404, запускаю тестовую test1.ru не запускается 404, положил сайт, privet.ruв нём папка www - файл index.php в нём банальное
    <?php echo 'Privet'; ?> не запускается, что делать?
     
  17. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Golovastik

    В топку пхп.

    Заводы стоят, а в стране одни программисты. Уверен у тебя там получится больше.
     
  18. Vladson

    Vladson Старожил

    С нами с:
    4 фев 2006
    Сообщения:
    4.040
    Симпатии:
    26
    Адрес:
    Estonia, Tallinn
    Ещё есть спорт, бокс например :)
     
  19. Mat

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

    С нами с:
    12 дек 2006
    Сообщения:
    391
    Симпатии:
    0
    интересно...