HiveBrain v1.2.0
Get Started
← Back to all entries
patternphpMinor

Getting a value from a database table dynamically

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
dynamicallygettingvaluedatabasefromtable

Problem

I am trying to create a forum using php in a MVC architecture.

This is my database setup:

Table: forum_categories

`forum_categories (
cat_id INT(8) NOT NULL AUTO_INCREMENT,
cat_title VARCHAR(255) NOT NULL,
cat_desc TEXT NOT NULL,
PRIMARY KEY (cat_id),
UNIQUE KEY (cat_title)


Table: forum_topics

forum_topics (
topic_id INT(8) NOT NULL AUTO_INCREMENT,
cat_id INT(8) NOT NULL COMMENT 'foreign key with forum_categories table',
user_id INT(11) NOT NULL COMMENT 'foreign key with users table',
topic_title VARCHAR(255) NOT NULL,
topic_desc TEXT NOT NULL,
topic_date DATETIME DEFAULT NULL,
PRIMARY KEY (topic_id),
FOREIGN KEY (cat_id) REFERENCES forum_categories (cat_id) ON DELETE CASCADE ON UPDATE CASCADE


Example of the functionality, I would like to achieve:


Category 1 has cat_id = 1

Category 2 has cat_id = 2


Topic 1 has cat_id = 1

Topic 2 has cat_id = 2

Now when category 1 is selected I just want topic 1 to show.

If category 2 is selected I just want topic 2 to show.

The following code does that:

Controller

/**
* Show all the topics in the chosen category
*/
public function showForumTopicsCat1()
{
$topic_model = $this->loadModel('Forum');
$this->view->forum_topics = $topic_model->getForumTopics(1);
$this->view->render('forum/viewTopics');
}

public function showForumTopicsCat2()
{
$topic_model = $this->loadModel('Forum');
$this->view->forum_topics = $topic_model->getForumTopics(2);
$this->view->render('forum/viewTopics');
}

public function showForumTopicsCat3()
{
$topic_model = $this->loadModel('Forum');
$this->view->forum_topics = $topic_model->getForumTopics(3);
$this->view->render('forum/viewTopics');
}

public function showForumTopicsCat4()
{
$topic_model = $this->loadModel('Forum');
$this->view->forum_topics = $topic_model->getForumTopics(4);
$this->view->render('forum/viewTopics');
}


Model

/**
* Gets an array that contains all the forum topics in

Solution

you could do something like that :

public function showForumTopicsByCat($catId)
{
    $topic_model = $this->loadModel('Forum');
    $this->view->forum_topics = $topic_model->getForumTopics($catId);
    $this->view->render('forum/viewTopics');
}


and on view

forum_categories) {
   for($i=o; $i Category1';
    }
   } else {
    echo 'There are no categories.';
}
?>

Code Snippets

public function showForumTopicsByCat($catId)
{
    $topic_model = $this->loadModel('Forum');
    $this->view->forum_topics = $topic_model->getForumTopics($catId);
    $this->view->render('forum/viewTopics');
}
<?php
if ($this->forum_categories) {
   for($i=o; $i < $numberCat; $i++){
       echo '<a href="'. URL . 'forum/showForumTopicsCat'.$i.'/">Category1</a>';
    }
   } else {
    echo '<p>There are no categories.</p>';
}
?>

Context

StackExchange Code Review Q#68177, answer score: 4

Revisions (0)

No revisions yet.