PHPの画像表示関連(?)プログラムで困っています
初めまして、おはようございます。
私はhtmlを少しかじった程度です。phpに関しては、これから勉強しようと思っていますが現状ではここ数日webで調べてみた程度の知識しかありません。また、php自体も触れるのは初めてです。どうかご助力願えたらと思います。
現状
1)現在運営されているwebサイトに掲示板がいくつかあります。
そのうち、携帯やpcから画像投稿出来て新着なども表示される掲示板と、コメントのみで画像の投稿、表示が出来ない掲示板の2ヶ所があります。
2)表示させていない掲示板にも画像を投稿、表示させるようにしたい。
問題点
・解決するためにどうしたらいいのか、また原因となっているプログラムが分からない
恐らく原因はこの辺りなんじゃないか、と思われる場所のプログラムは以下の通りです。
file名はthread_controller.phpになります。
<!---------------------thread_controller.php----------------------->
var $name = 'Threads';
var $paginate = array(
'limit' => 10,
'order' => array('Thread.created' => 'desc')
);
var $uses = array('Thread', 'Comment', 'Pic');
var $components = array('Search.Prg');
var $presetVars = array(
array('field' => 'content', 'type' => 'value'),
);
function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow("*");
}
function index($forum_id = null) {
$this->Prg->commonProcess();
if (!$forum_id) {
$this->Session->setFlash('ページが存在しません', 'error');
$this->redirect("/");
}
$this->Thread->recursive = 1;
$threads = array();
// multi threads
if ($forum_id == 34 || $forum_id == 41 || $forum_id == 42) {
$sql = 'select id from (select id, name, created from threads where forum_id = ' . $forum_id .' and locate("-", name) = 0 union all select min(id) as id, substring(name, 1, locate("-", name)-1) as name, created from threads where forum_id = '.$forum_id.' and locate("-", name) != 0 group by 2) Thread order by created';
$res = $this->Thread->query($sql);
$ids = array();
foreach ($res as $thread) {
$ids[] = $thread['Thread']['id'];
}
$threads = $this->paginate(array('Thread.forum_id' => $forum_id, 'Thread.id' => $ids));
$sql = 'select id, title, name from ( select id, substring(name, 1, locate("-", name)-1) as title, name, created from threads where forum_id = ' . $forum_id .' and locate("-", name) != 0 ) Thread order by title, id';
$res = $this->Thread->query($sql);
$subthreads = null;
$prev = null;
foreach ($res as $thread) {
if ($prev != null && $prev['Thread']['title'] == $thread['Thread']['title']) {
$data = $this->Thread->read(null, $thread['Thread']['name']);
$names = explode('-', $thread['Thread']['name']);
$data['Thread']['name'] = $names[1];
$subthreads[$prev['Thread']['id']][] = $data;
} else {
$prev = $thread;
}
}
for($i = 0; $i < count($threads); $i++) {
$id = $threads[$i]['Thread']['id'];
if (array_key_exists($id, $subthreads)) {
$threads[$i]['Thread']['children'] = $subthreads[$id];
}
}
<!------------------------------------------->
もし、このコードが原因じゃないという場合、この辺りなんじゃないか?
というような意見でも幸いです。宜しくお願いいします。m(_ _)m
お礼
貴重なアドバイスありがとうございます。 今日、PHP構文を駆使して力技で何とか 実現できました。 ご提示いただいたSQL文の方も、 うなずくばかりで、納得です。 (明日、追試させていただきます)