В базу данных в поле вместо текста вставляются цифры.

Тема в разделе "Базы Данных", создана пользователем Pavll, 7 июл 2020.

  1. Pavll

    Pavll

    Регистрация:
    23 фев 2019
    Сообщения:
    6
    Симпатии:
    0
    Добрый день!
    Делаю парсинг сайта.
    Скрипт нормально работает, за исключением одного момента.
    В базе данных есть поле comments. В это поле должны вводиться комментарии в виде текста. В одной из строк кода я пишу:
    Код:
    PHP:
    $comments pq($topic)->find('ul.threadstats a')->text();
    То есть, данные должны заносится в базу данных в виде текста, но они заносятся в виде чисел - количества комментариев, а не самих комментариев.
    Почему так происходит?

    PHP:
    require 'C:\OSPanel\vendor\autoload.php';

    $host 'localhost'// адрес сервера
    $database 'mysite'// имя базы данных
    $user 'root'// имя пользователя
    $password ''// пароль

    // подключаемся к серверу
    $link mysqli_connect($host$user$password$database)
    or die(
    "Ошибка " mysqli_error($link));



    $url 'определённый сайт';

    $message '';

    $mainPage file_get_contents($url);
    $pq phpQuery::newDocument($mainPage);
    $urlsRazdela$pq->find('div.forumdata h2 a');
    foreach(
    $urlsRazdela as $elem){
    $urlRazdela $url.pq($elem)->attr('href');
    $page file_get_contents($urlRazdela);
    $pq phpQuery::newDocument($page);
    $topics $pq->find('li.threadbit');
    foreach(
    $topics as $topic){
    $nameTopic trim(pq($topic)->find('h3.threadtitle a')->text());
    $nameTopic str_replace('\'','`',$nameTopic);
    $nameTopic str_replace('\"','`',$nameTopic);
    $hrefTopic $url.pq($topic)->find('h3.threadtitle a')->attr('href');
    $comments pq($topic)->find('ul.threadstats a')->text();

    //делаем проверку на новые темы
    $query="SELECT name FROM content6 WHERE name='".$nameTopic."'";
    $resultmysqli_query($link,$query);
    $data mysqli_fetch_assoc($result);
    if(empty(
    $data)){
    $query htmlspecialchars("INSERT INTO content6 SET name='".$nameTopic."', href='".$hrefTopic."', comments='".$comments."'");
    //$query = sprintf("INSERT INTO content6 SET name='%s', href='%s', comments='%s'",
    // mysqli_real_escape_string($nameTopic),
    // mysqli_real_escape_string($hrefTopic),
    //mysqli_real_escape_string($comments));
    mysqli_query($link,$query);
    // и добавляем новую строчку в текст письма
    $message .= "Новая тема: ".$nameTopic."<br>";
    }
    }
    }
    //echo $message.'<hr>';
    // отправим письмо
    $headers ="Content-type:text/html;charset = utf-8 \r\n";
    $headers .= "From: zzz@d0015161.atservers.net \r\n";
    mail("xxxxxx@yandex.ru","Новые темы на форуме ",$message);
     
  2. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.575
    Симпатии:
    1.478
    проверить что возвращает
    PHP:
    pq($topic)->find('ul.threadstats a')->text()
    и исправить
     
  3. Pavll

    Pavll

    Регистрация:
    23 фев 2019
    Сообщения:
    6
    Симпатии:
    0
    Если написать echo $comments, то выводится строка со множеством чисел - то есть, количество комментариев вместо самих комментариев...
    Правильно ли я создаю саму строку?:
    PHP:
    $comments pq($topic)->find('ul.threadstats a')->text();
    Небольшой фрагмент исходного кода страницы, исходя из которого создаю эту строку:
    PHP:
    <!-- threadstats -->
            
            <
    ul class="threadstats td alt" title="">
                <
    li>Ответов: <a href="misc.php?do=whoposted&amp;t=2845" onclick="who(2845); return false;" class="understate">89</a></li>
                <
    li>Просмотров100,477</li>
                <
    li class="hidden">Рейтинг5 5</li>
            </
    ul>
     
  4. $iD

    $iD Команда форума

    Регистрация:
    13 мар 2012
    Сообщения:
    3.575
    Симпатии:
    1.478
    ваш код возьмёт цифру 89 из вашего примера.

    зависит от того что вы хотите взять из этого фрагмента