Заполнение бд

Discussion in 'PHP' started by Kverter, 7 Jun 2011.

  1. Kverter

    Kverter New Member

    Joined:
    8 Oct 2009
    Messages:
    57
    Likes Received:
    2
    Reputations:
    1
    ребят такая трабла в общем,создаю бд mysql с кодировкой cp1251,беру rss с сайта в кодировке cp1251,но в базу попадают крокозяблы,как от этого избавится




    PHP:
    <?php
    echo $url 'http://ithappens.ru/rss/'//àäðåñ RSS ëåíòû
    $rss simplexml_load_file($url); //Èíòåðïðåòèðóåò XML-ôàéë â îáúåêò
    echo iconv("UTF-8""CP1251""Ïîðà ïåðåõîäèòü íà þíèêîä.");
    mysql_connect("localhost","root","768768") or die("No connection");
    mysql_select_db("rss") or die("oshibka podkly4enia");
    mysql_query("
    SET character_set_client=cp1251;
    SET character_set_connection=cp1251;
    SET character_set_database=cp1251;
    SET character_set_results=cp1251;
    SET character_set_server=cp1251;
    SET collation_connection=cp1251_general_ci; "
    );
    mysql_query('CREATE TABLE IF NOT EXISTS jos_rss3(id INT AUTO_INCREMENT PRIMARY KEY,
    jtitle TEXT, jpubdate TEXT, jdescription TEXT) DEFAULT CHARSET = cp1251'
    ) or die("Íåâîçìîæíî ñîçäàòü òàáëèöó");
    foreach (
    $rss->channel->item as $item)
    {
    $jtitle=iconv("UTF-8","CP1251",'<strong>'.$item->title.'</strong><br>'); 
    $jpubbate=iconv("UTF-8","CP1251",'<strong>'.$item->pubDate.'</strong><br>');
    $jdescription=iconv("UTF-8","CP1251",$item->description);//âûâîäèì íà ïå÷àòü òåêñò ñòàòüè
    $a=iconv('UTF-8','WINDOWS-1251',$jdescription);
    $b=iconv('UTF-8','WINDOWS-1251',$jpubbate);
    $c=iconv('UTF-8','WINDOWS-1251',$jdescription);
    echo 
    $c;
    sleep(0);
    mysql_query("INSERT INTO jos_rss3 (jtitle,jpubdate,jdescription) VALUES ('$a','$b','$c');") or die( mysql_error());
    }
    $result=mysql_query('select * from jos_rss3 order by id DESC') or die("Îøèáêà
    èçâëå÷åíèÿ äàííûõ èç ÁÄ"
    );
    $row=array();
    while(
    $row=mysql_fetch_array($result)) {
    echo 
    $row[jtitle];
    echo 
    $row[jpubdate];
    echo 
    $row[jdescription];
    }
    sleep(2)
    ?>
     
    #1 Kverter, 7 Jun 2011
    Last edited by a moderator: 7 Jun 2011
  2. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Во-первых, mysql_query() не поддерживает множественных запросов - на каждый запрос должен быть свой вызов mysql_query(). Во-вторых, существует такая функция, как mysql_set_charset(). В-третьих, если берете из CP1251, пишете в CP1251, то на кой фиг в коде iconv()?
     
  3. Kverter

    Kverter New Member

    Joined:
    8 Oct 2009
    Messages:
    57
    Likes Received:
    2
    Reputations:
    1
    <?php
    echo $url = 'http://ithappens.ru/rss/'; //адрес RSS ленты
    $rss = simplexml_load_file($url); //Интерпретирует XML-файл в объект
    echo iconv("UTF-8", "CP1251", "???? ?? ??????"); //текст в utf-8 а на консоль выводит знаки "????? "
    sleep(10);
    mysql_connect("localhost","root","768768") or die("No connection");
    mysql_select_db("rss") or die("oshibka podkly4enia");
    mysql_set_charset("cp1251");
    mysql_query('CREATE TABLE IF NOT EXISTS jos_rss3(id INT AUTO_INCREMENT PRIMARY KEY,
    jtitle TEXT, jpubdate TEXT, jdescription TEXT) DEFAULT CHARSET = cp1251') or die("Невозможно создать таблицу");
    foreach ($rss->channel->item as $item)
    {
    $jtitle=$item->title;
    $jpubdate=$item->pubDate;
    $jdescription=$item->description;//выводим на печать текст статьи
    mysql_query("INSERT INTO jos_rss3 (jtitle,jpubdate,jdescription) VALUES ('$jtitle','$jpubbate','$jdescription');") or die( mysql_error());
    }
    $result=mysql_query('select * from jos_rss3 order by id DESC') or die("Ошибкаизвлечения данных из БД");
    $row=array();
    while($row=mysql_fetch_array($result)) {
    echo $row[jtitle];
    echo $row[jpubdate];
    echo $row[jdescription];
    }
    sleep(2)
    ?>
    Не рабит,ни как не вкурю в чем беда((((
     
  4. Kverter

    Kverter New Member

    Joined:
    8 Oct 2009
    Messages:
    57
    Likes Received:
    2
    Reputations:
    1
    Еще такой вопрос,возможно сохранить результат запроса из бд в переменную в скрипте?????если да то как?
    $result= mysql_query('select id from jos_rss where id=5') or die("ошибка");
    $d=mysql_result($result);
     
    #4 Kverter, 8 Jun 2011
    Last edited: 8 Jun 2011
  5. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    http://ru.php.net/manual/en/function.mysql-fetch-array.php
    и иже с нею (mysql_fetch_*)
    У вас в вышеприведенном коде кусок
    PHP:
    while ($row mysql_fetch_array ($result)) {
      echo 
    $row['jtitle'];
      echo 
    $row['jpubdate'];
      echo 
    $row['jdescription'];
    }
    именно этим и занимается
     
    #5 krypt3r, 9 Jun 2011
    Last edited: 9 Jun 2011