Запись при отсутствии границы

Тема в разделе "Решение различных задач по парсингу", создана пользователем Xpite, 7 апр 2017.

Метки:
  1. Xpite

    Xpite Member Пользователи

    Регистрация:
    13 мар 2017
    Сообщения:
    103
    Пишу сразу в базу, там в поле xfields в ДЛЕ допполя устроены таким образом img|ur||name|nazvanie| и тд.
    Столкнулся с проблемой, если на сайте например img поле пустое, то все просто, прописываешь писать в базу img|||name|nazvanie| и все работает, но если поля нет в принципе на странице (это касается у меня в основном таких позиций, как картинка и цена, то он не пишет ничего и, соответственно, все остальные поля в xfields тоже слетают, т.к. нарушается структура. Подскажите пожалуйста, как задать не только запись при пустой границе, но и при ее отсутствии?
     
  2. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    С помощью макроса [CHECKENTRY] можно проверять наличие нужного вхождения в коде документа ([DOCSOURCE]) и в зависимости от этого выводить или не выводить весь код шаблона вывода (который, естественно, взят в макрос [CHECKENTRY]).
     
    Последнее редактирование: 7 апр 2017
  3. Xpite

    Xpite Member Пользователи

    Регистрация:
    13 мар 2017
    Сообщения:
    103
    Спасибо за ответ, но мне несколько не это нужно. У меня есть допустим 3 допполя. img, price и category
    когда все поля есть пишется в базу значение для xfields img|site.ru/img.jpg||price|10||category|tovar|
    Вот такая конструкция (помимо других full_story, short_story и тд и тп. (для которых ничего не нужно проверять)
    И вот если нет img, то все остальные значения уже не будут отображены даже если они есть и записались, т.к. нарушается структура.
    А нужно чтобы при отсутствии границы для img (ну просто нет там картинки или цены, не указана на сайте и нет этого div который за вывод отвечает), чтобы программа записала img||| - такое значение. Это можно реализовать легко при пустом границе, но при отсутствующей - не получается...
     
  4. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    читаем внимательно описания макроса Ссылки недоступны для гостей
    Код:
    [CHECKENTRY(333||55[ALLMUSTBE])]55555[/CHECKENTRY] -> ничего не выведет, так как параметр [ALLMUSTBE] требует наличия всех вхождений в тексте
     
  5. Xpite

    Xpite Member Пользователи

    Регистрация:
    13 мар 2017
    Сообщения:
    103
    Так мне НЕ нужен как раз [ALLMUSTBE], мне нужно записать img||| при отсутствии границы (она не пустая, ее нет в коде), мне не нужно ничего не записывать если чего-то нет, мне нужно сохранять структуру, чтобы остальные записи ячейке не потерялись из-за отсутствия одной границы.
    При отсутствии одной из границ мне нужно сохранить ВСЕ остальные, а не просто ничего не записывать.
    Т.е. при отсутствии img пишется img|||price|10||category|tovar|
    При отсутствии price пишется img|site.ru/img.jpg|price|||category|tovar|

    Ваш пример предлагает мне просто ничего не писать в ячейку при отсутствии одной из границ как я понимаю.
     
  6. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    ну там есть и другие варианты) Просто почитайте про них. Хотя есть и другие способы это осуществлять. (IF + CHARCOUNT)
     
  7. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Вам сказал сразу какой макрос использовать. Уговаривать его использовать еще нужно! Ппц!
     

Поделиться этой страницей