Tri d'un tableau résultant de 2 requetes SQL (Codeigniter)
Bonjour tout le monde
je voulais vous présenter mon problème en l'attente que quelqu'un puisse m'aider.Je sais que mon message est relativement long mais c'est pour que vous comprenez de quoi il s'agit exactement.
Dans ma base SQL j'ai 2 tables "post" et "job" dont les structures:
la table job:
Citation:
`job_id` int(11) NOT NULL,
`job_parent` varchar(45) CHARACTER SET utf8 DEFAULT NULL,
`job_description` text CHARACTER SET utf8,
`job_label` varchar(45) CHARACTER SET utf8 DEFAULT NULL,
`job_insert_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`job_status` tinyint(1) DEFAULT NULL
et la table post:
`post_id` int(11) NOT NULL AUTO_INCREMENT,
`post_company` int(11) NOT NULL COMMENT ' ',
`post_responsable` int(11) NOT NULL,
`post_commercial` int(11) NOT NULL,
`post_job` int(11) NOT NULL,
`post_title` varchar(255) CHARACTER SET utf8 NOT NULL
KEY `post_job` (`post_job`)
Avec 'post_job' est une clé étrangère de la table job.
j'ai une fonction dans mon modèle 'jobDao'
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
public function getParent(){
$this->load->model("PostDao");
$job_list = array();
$query = $this->db->query("SELECT * FROM job WHERE job_parent = 0");
$result = $query->result();
foreach($result as $job){
$job->post_number = $this->PostDao->getNbPostJob($job->job_id);
$job_list[$job->job_id] = $job;
}
foreach($job_list as $job_id=>$post_number){
sort($job_list, $job_list[$post_number]);
}
return $job_list;
} |
Et un autre dans le modèle postDao:
Code:
1 2 3 4 5
|
public function getNbPostJob($job = NULL){
$query = "SELECT post_id FROM post WHERE post_job =".$this->db->escape($job);
return $this->db->query($query)->num_rows;
} |
La fonction dans le controller est la suivante
Code:
1 2 3 4 5 6 7 8 9 10 11
|
public function index(){
$this->load->model('PostDao');
$this->load->model('JobDao');
$list_job = $this->JobDao->getParent();
$data["list_job"] = $list_job;
$this->template->set_template('site');
$this->template->write_view('main', "site/home", $data);
$this->template->render();
} |
lorsque je fait un "print_r($list_job);", le résultat affiché dans le navigateur est le suivant:
Citation:
Array ( [0] => stdClass Object ( [job_id] => 1 [job_parent] => 0 [job_description] => [job_label] => Agro-Alimentaire [job_insert_time] => 2011-07-24 13:07:40 [job_status] => 1 [post_number] => 1 ) [1] => stdClass Object ( [job_id] => 14 [job_parent] => 0 [job_description] => [job_label] => Automobile [job_insert_time] => 2011-07-24 13:07:40 [job_status] => 1 [post_number] => 1 ) [2] => stdClass Object ( [job_id] => 19 [job_parent] => 0 [job_description] => [job_label] => Banque-Assurances-Immo [job_insert_time] => 2011-07-24 13:07:40 [job_status] => 1 [post_number] => 3 ) [3] => stdClass Object ( [job_id] => 57 [job_parent] => 0 [job_description] => [job_label] => Be-Methodes-Qualite [job_insert_time] => 2011-07-24 13:07:40 [job_status] => 1 [post_number] => 3 ))
Maintenant je veut trier ce résultat suivant la colonne 'post_number' et je n'ai pas trouvé l'astuce.
Tri d'un tableau résultant de 2 requetes SQL (Codeigniter)[résolu]
Bon mon problème est résolu il fallait que je mette
Code:
1 2
|
usort($job_list, function($e1, $e2) { return $e1->post_number - $e2->post_number; }); |
dans ma fonction getParent()
j'espère que ça aidera quelqu'un d'autre :)