У меня есть код PHP для выбора категорий из tbl_categorie. Теперь у меня есть множественный выбор в форме, где статья может содержать более одной категории. При вставке значений в базу данных я хочу сохранить несколько значений категорий в одном столбце/атрибуте. Если атрибут ID_CAT хранит только идентификаторы категорий tbl_categorie, разделенные запятой (,). У меня есть две таблицы в одной БД,Хранить и извлекать столбцы CSV из базы данных с помощью implode и magic __get()
tbl_blog:
ID_BLOG ID_CAT TITLE ARTICL DATE
1 1,3 title1 article1 2013-03-04
2 4,10 title2 article2 2013-03-04
3 3,6 title3 article3 2013-03-04
tbl_categorie:
ID_CAT NOM_CAT
1 HTML
2 CSS
3 DESIGN
4 PHP
5 ..
У меня есть проблема в первую очередь добавить буксировочный ID_CAT для одной статьи, хотя я использовал взрываться() Постулаты, но она работает, когда я изменить тип ID_CAT от ИНТ к VARCHAR, и это процесс, чтобы добавить статью:
Article::creatArticle(0,$_POST['title'],implode(', ', $_POST['id_categorie']),$_POST['article']);
и это функция, чтобы добавить статью из class_article:
/**
* function créeArticle
*/
public static function creatArticle($id_article,$title,$id_categorie,$article)
{
global $db;
$req = $db->prepare("INSERT INTO blog (ID_BLOG,TITLE,ID_CAT, ARTICLE,DATE) VALUES ('',:title,:id_categorie,:article,'".date('Y-m-d')."')");
$ok = $req->execute(Array('title' =>$title,'id_categorie' => $id_categorie,'article' => $article));
return $db->lastInsertId();
//$erreur = $req->errorInfo();
}
теперь у меня есть Prob чтобы получить все категории, для которых в каждой статье есть, и именно так я забираю в своем бэк-офисе таблицу статей, используя магический метод get(), который она возвращает только в первом значении в столбце:
<?php
foreach(Article::getAllArticle()as $blog){
$article= new Article($blog->ID_BLOG);
$categorie = new Categorie($article->getIDCategorie());
echo'
<tr>';
echo '<td><input type="checkbox" /></td>';
echo '<td>'.$article->getTitlearticle().'</td>';
echo '<td>'.$categorie->getNomCategorie().'</td>';
echo '<td>'.$article->getDatearticle().'</td>';
echo '<td>35</td>';
echo ' <td class="actions">';
echo '<a href="javascript:editArticle('.$article->getIDarticle().');" title="Edit this content"><img src="img/icons/actions/edit.png" alt="" /></a>';
echo ' <a href="javascript:deleteArticle('.$article->getIDarticle().');" title="Delete this content"><img src="img/icons/actions/delete.png" alt="" /></a></td>';
echo '</tr>';
} ..
Я знаю, что мне нужно использовать statode explode() или создать цикл, но я не могу понять, как это сделать :(, и у меня есть сомнения относительно типа ID_CAT, должен быть varchar сделать проблему? спасибо!