Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Создание тегов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Kohana
skutor
Отправлено: 12 Февраля, 2012 - 20:32:36
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Есть массив с тегами, типа:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $tagsname
  2. ~~~~~~~~~~~~~~~~~~
  3. array(2) { [0]=> string(4) "тег1" [1]=> string(4) "тег2" }


и есть функция на вход которой приходит идентификатор материала и 1 тег.
CODE (htmlphp):
скопировать код в буфер обмена
  1.     public function tagadd($matid, $tags)
  2.     {
  3.         $url=$_SERVER["HTTP_ORIGIN"];   // определяем доменное имя сайта до первого слеша(http://hello.ru)
  4.         $this->name = Security::xss_clean($tags);        //  в таблицу tags поле name записываем тег
  5.           // проверим заодно введенные теги , чтоб были без скриптов и др гадостей
  6.         $this->url = '';                // ссылка тега изначальна как пустая, поскольку у него еще нету идентификатора
  7.         $this->save();     // записываем в таблицу и получаем идентификатор
  8.         $tagid=$this->id;       // берем данный идентификатор в переменную tagid
  9.         $TagsMaterial = new Model_Tagsmaterial;     //  объявляем класс для работы с бд(нужно для таблицы tags_materials)
  10.         $TagsMaterial->tag_id=$tagid;       // записываем в таблицу tags_materials идентификтаор нашего тега
  11.         $TagsMaterial->material_id = $matid;  // записываем в эту же таблицу идентификатор тега к этому материалу
  12.         $TagsMaterial->save();                  // сохраняем в таблицу
  13.         $tags = ORM::factory('tag', array('id'=>$tagid));       // находим записанную строчку у таблицы tags
  14.         $this->url = "$url/materials/showcontent/$tagid";       //  теперь заполним нашу пустую ссылку ссылкой на идентификтаор материала
  15.         $this->save();                  // произведем сохранение записи
  16.     }


функция создает запись в таблицы tags и tags_material
поля таблицы tags(id(идентификтаор тега, счетчиком),name(наименование тега),url(ссылка на материал))

поля таблицы tags_materials(tags_id(идентификтаор из таблицы tags), material_id(идентификатор материала к тегу))

Вопрос такой: как мне не по 1 тегу на функцию сувать как описано сейчас, а заставить ее обрабатывтаь этот массив описанный в самом вверху.
Чтобы пользователь через запятую теги описал , они разбились на этот массив и как потом этот массив по 1 элементу подать на функцию????
Пробывал через foreach что-то не получилось, может кто-то подскажет..
 
 Top
Plusminuz
Отправлено: 12 Февраля, 2012 - 21:11:46
Post Id



Частый гость


Покинул форум
Сообщений всего: 156
Дата рег-ции: Апр. 2011  
Откуда: Россия


Помог: 2 раз(а)




PHP:
скопировать код в буфер обмена
  1. foreach ($tagsname as $tag){
  2.  tagadd ($matid, $tag);
  3. };


так?

(Отредактировано автором: 12 Февраля, 2012 - 21:12:10)



-----
учусь... Улыбка
 
 Top
skutor
Отправлено: 12 Февраля, 2012 - 21:14:19
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




ну вот так
CODE (htmlphp):
скопировать код в буфер обмена
  1.                 $tag = new Model_Tag;
  2.                 foreach ($tagnames as $tags)
  3.                 {
  4.                 $tag->tagadd($matid, $tags);
  5.                 }
я и пробывал получилось что в tags_material 3 строчки записалось с одинаковыми идентификаторами, а в таблицу tags записалась одна строчка с последним тегом в массиве

(Отредактировано автором: 12 Февраля, 2012 - 21:19:11)

 
 Top
Plusminuz
Отправлено: 12 Февраля, 2012 - 21:20:03
Post Id



Частый гость


Покинул форум
Сообщений всего: 156
Дата рег-ции: Апр. 2011  
Откуда: Россия


Помог: 2 раз(а)




я не любитель копаться в чужом коде, но вроде вот это
PHP:
скопировать код в буфер обмена
  1. $this->name = Security::xss_clean($tags);        //  в таблицу tags поле name записываем тег
отвечает у вас за запись тега в таблицу, соответственно здесь и надо колдовать с массивом


-----
учусь... Улыбка
 
 Top
skutor
Отправлено: 12 Февраля, 2012 - 21:26:22
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Plusminuz пишет:

я не любитель копаться в чужом коде, но вроде вот это
PHP:
скопировать код в буфер обмена
$this->name = Security::xss_clean($tags);        //  в таблицу tags поле name записываем тег
отвечает у вас за запись тега в таблицу, соответственно здесь и надо колдовать с массивом



эта строчка отвечает за запись в поле name
а там 3 поля вообще и сама запись происходит при $this->save();

там проблема такова первую таблицу он обрабатывает лишь один раз записывая лишь последний элемент массива.
а вторую таблдицу он как положено обрабатывает все разы цикла но пишет их с одним и тем же идентификатором(сводя к проблеме таблицы 1 - tags)

короче говоря он почемуто не сохраняет в поле счетчика(id) в таблице tags несколько раз а сохраняте лишь последний

(Отредактировано автором: 12 Февраля, 2012 - 21:29:18)

 
 Top
skutor
Отправлено: 13 Февраля, 2012 - 10:32:45
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




ау?
 
 Top
snikers987
Отправлено: 13 Февраля, 2012 - 10:34:46
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)




skutor пишет:
ау?

маугли чтоли?


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
skutor
Отправлено: 13 Февраля, 2012 - 12:34:01
Post Id


Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Разобрался.
Нужно было добавить создание экземпляра класса tags в тело цикла.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Объектно-ориентированное программирование »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB