• 締切済み

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
  • 回答数1
  • ありがとう数1

みんなの回答

  • oioippo
  • ベストアンサー率100% (1/1)
回答No.1

とても見にくかったのでコードは見ず、憶測で申し上げます。 PHPで掲示板を実装する場合、高確率でDB(データベース)と連動させていると思います。(DBとは書きこんだ内容を保存しておくための場所だと思ってください。) コメントのみで画像の投稿、表示が出来ない掲示板( 以下 掲示板A ) 画像投稿出来て新着なども表示される掲示板( 以下 掲示板B ) 掲示板A を 掲示板Bのようにしたいとのことですが、掲示板Bは コメント + 画像のURL + 新着 と3つのデータを保存しておけるDBですが、掲示板A は おそらく コメント 1つのデータしか保存できないDBになっていると思われます。 ですので、いくら 掲示板A の PHPを変えたところで保存する場所( 画像のURL + 新着 の 2つのデータを保存しておく DB)がなければ望み通りの動作をさせることは出来ないと思います。 運営されている方に相談してみることをお勧めします。

el_whiz
質問者

お礼

回答ありがとうございます。 お礼遅くなってしまい申し訳ございませんでした。 なるほど、掲示板はDBと連動しているのですね…。明日、DBの辺りをもう少し調べてみようと思います。 掲示板Aを掲示板Bのようにするにはやや難しいのでしょうか。 記述を追加するだけではダメそうな感じですね。 それと、コード見にくくてすみません。 どこからどこまで貼れば良いか判断しかねてそのようにしてしまいました。 運営は会社の方でやっているのですが、このページを組んだ前任者が連絡取れない状況らしく、 他の方は門外漢だそうなので仕方なく私が手を付けている次第です。 もっとも前述したように私もphpに触れるのが初めてですので大差はないかもしれませんが…。

関連するQ&A

  • PHPとSmartyの関連について

    PHPとSmartyの関連について PHPからSmartyに出力しているのですが中身がNULLになります。 データベースアクセスにはPDOを使用しています。 PHPソース DBアクセス $SQL = "select ITEM_ID from ITEM_TBL limit 0, 3"; $STMT = $GLOBALS["PDO"] -> query($SQL); $ROW = $STMT -> fetchAll(PDO::FETCH_ASSOC); Smartyでアサイン $smarty -> assign("ITEM_LIST", $ROW); Smartyソース <table> {{foreach from=$ITEM_LIST item=LIST}} <tr> <td>{{$LIST.ITEM_ID}}</td> </tr> {{/foreach}} </table> のような感じでページ出力したいのですが、表示をすると中身がNULLでした。 PHP側で var_dump($ROW); を行うと array(3) { [0]=> array(1) { ["ITEM_ID"]=> string(1) "1" } [1]=> array(1) { ["ITEM_ID"]=> string(1) "2" } [2]=> array(1) { ["ITEM_ID"]=> string(1) "3" } } 中身が配列で格納されています。 smarty側で {$ITEM_LIST|@var_dump} を行うと array(3) { [0]=> NULL [1]=> NULL [2]=> NULL } でした。 いろいろとやってみたのですが、わからなくなってしまったので どなたかご教授いただけませんでしょうか。よろしくお願いします。

    • 締切済み
    • PHP
  • php pear mdb2に質問です。

    php pear mdb2に質問です。 以下の関数でエラーが出ます。 間違っているところがあれば、回答お願いします。 function product_info($id) { global $db; $res = $db->query("SELECT * FROM product WHERE id=?", array($id)); if ($res != null) { $row = $res->fetchrow(MDB2_FETCHMODE_ASSOC); return $row; } return null; }

    • ベストアンサー
    • PHP
  • PHP mysql の戻り値

    PHP内にて、下記の処理、上手くINSERTはされているのですが、 デバッグで埋めた print のところで res1 == Object id #6 が表示されます。 (1) Object id #6とはなんでしょうか? (2)正常、異常のときの $stmt の戻り値は何が返りますか?   (3)正常、異常のときの $res  の戻り値は何が返りますか? ~~~(一部抜粋)~~~ $sql = "insert into thread ( id, name, insert_datetime ) values (?, ? , now())"; $stmt = self::$_conn->prepare($sql); $res = $stmt->execute(array($id_mx,$this->get('name'))); print "res1 == ".$res."</br>"; die_if_dberror($res); ~~~~~~~~~~~

    • ベストアンサー
    • PHP
  • PHPでスレッド式掲示板を作りたいです

    こんにちは。現在Androidアプリで掲示板を作ろうと思いPHPとDBを活用してスレッド式掲示板を作成しています。 テーブルはこのような感じで構成しています。 スレッド一覧テーブル sureid(int ai) surename(text) name(text) time(text) rescount(int) コメントテーブル sureid(int) surename(text) name(text) msg(text) id(text) time(text) 作っていく途中で躓いてしまったので御教授願います。 1つ目 スレッド一覧画面で選択したsureidをGETしスレッドの中の画面でGETしたsureidの投稿を表示させたい。 2つ目 スレッド一覧画面で各スレッド一覧の横にスレッドのレス数を表示させたい。 <?php $USER= ''; $PW= ''; $dnsinfo= ""; $user= array(); $pdo = new PDO($dnsinfo,$USER,$PW); $sql = "SELECT * FROM thread"; $stmt = $pdo->prepare($sql); $stmt->execute(null); while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ $user[] = array ('surename'=> $row["surename"] ,'name' => $row["name"] ,'rescount' => $row["rescount"]; } $res = array_reverse($user); echo json_encode($res); ?> スレッド一覧のプログラムはこのようになっています。

    • 締切済み
    • PHP
  • mysqlからphpに表示ですべての項目を出したい

    phpとmysqlの勉強をしているのですが、出したい項目がでてきてくれません。 今mysqlでidとnameとpriceの項目を作っているのですが、以下だとどうしてもnameしか出てきてくれません。 どうすれば3つの項目がでてくれますでしょうか? よろしくお願いします。 <?     mysql_connect('localhost' , 'root' , '') or die(mysql_error());     mysql_select_db('db1'); mysql_query('SET NAMES UTF8'); $sql="SELECT * FROM syouhin"; $res=mysql_query($sql); $options=""; while($row = mysql_fetch_array($res,MYSQL_ASSOC)){ $options.="<input type=\"radio\" name=\"syouhin1\" value='{$row['id']}' checked>        {$row['name']}\n<br>"; } $select="{$options}</select>\n";     print $select; ?>

    • ベストアンサー
    • PHP
  • SELECT 文の NULL列は?

    ある人に、こんなSQLを教えてもらいました。 ----------------------------- select id,tid,NULL as "res_no",account_id,name,date from t_game_bbs as a union select id,tid,res_no,account_id,name,date from t_game_res as b where del_flg != 1'; order by date DESC limit 10; -------------------------------- 不思議に思ったのが、”NULL as "res_no"”のところです。 これについて、ググッて見たのですが、明確な説明が見つかりませんでした。 これって、SQLの隠し機能なのですか?

  • phpのリストボックスについて

    よろしくお願いします。 phpを利用し、条件にあった内容を表示させる画面を作っています。 リストボックスで選択した内容を次のリストボックスの選択キーとして 別テーブルの検索条件に利用できるものでしょうか?? 以下のソースなんですが、 //------------------------------------------------------------- ソースA: print "<select name='brand' id='brand' style='width:190'>"; $sql ="select * from brand ORDER by no"; $res = mysql_query($sql); if ($res and mysql_num_rows($res)) { while($rec=mysql_fetch_array($res)){ echo "<option value='{$rec['name']}' >{$rec['name']}</option>"; } } print "</select>"; //-------------------------------------------------------------- とbrandテーブルからnameをリストボックス表示させます。 この表示し、選択した内容(仮にダイヤ)を同画面にあるもう一つの リストボックスで同じようなソースで別テーブルをselect文の検索キーに したいのです。以下のような感じ・・ //------------------------------------------------------------- ソースB: $sql ="select * from item where = 'ダイヤ'"; $res = mysql_query($sql); if ($res and mysql_num_rows($res)) { while($rec=mysql_fetch_array($res)){ echo "<option value='{$rec['itemname']}' >{$rec['itemname']}</option>"; } } print "</select>"; //-------------------------------------------------------------- の$sql ="select * from item where = 'ダイヤ'";←このダイヤを ソースAからもってきたいのですが、何かよい方法はありますか? 変数作ってやってみましたが、うまくいかずです。phpだけでは無理でしょうか?よろしくお願いします。

    • 締切済み
    • PHP
  • PHP+MySQLで高速化

    mysql_query()が返したresourceの行数は得られませんか? 例をあげると データが id p (フィールド) 42 651 23 357 67 123 28 385 このように4レコード有ったとして $res = mysql_query('select p from tbl where p="123"'); これで、$resから3行目というのを得て、3を使ってidの67を得たいのですが、 $res = mysql_query('select id,p from tbl where p="123"'); のようにして$resのidを見るようにする以外の方法は無理なんでしょうか? もし前者が可能ならそちらの方が速いと思うのですが。

    • ベストアンサー
    • PHP
  • phpでの再帰関数を利用したツリー表示

    ・やりたいこと 一つのIDの下にいくつの階層があるかカウントする。 コードは既にできているのですが、いざ運用しようとしたときに Fatal error: Maximum function nesting level of '100' reached, > aborting! と出てしまいました。 色々調べた結果、phpでは100を超える再帰呼び出しはできないというのを見つけました。 本当にできないのでしょうか?他にやる方法はあるのでしょうか? php側の設定で何とかなるもんなんでしょうか? ~~~以下DB構造~~~~~~~~~~~~~~~~~~~~~~ id(int) | lid(int) | rid(int) ~~~以下コード~~~~~~~~~~~~~~~~~~~~~~ Class tree_show { var $i_ = 0; var $ar_ = array(); function findid2($colm) { foreach($colm as $value){ $value = $this->findid($value); } } function findid($id) { if(!empty($id)) { $rs = mysql_query("select * from tree_all where id='".$id."'"); $row = mysql_fetch_array($rs); $dim = $row['id']; $this->i_++; $this->addarray($dim); $arr = array($row['lid'],$row['rid']); $this->findid2($arr); } } function printid() { return $this->i_; } function addarray($dim) { array_push($this->ar_,$dim); } function printarray() { return $this->ar_; } } $id= $_REQUEST[id]; $db = mysql_connect(); $sql = "select * from tree_all where id = '".$id."'"; $rs = mysql_query($sql,$db); $row = mysql_fetch_array($rs); $class = New tree_show(); $class->findid($row['lid']); echo $left = $class->printid(); print_r($class->printarray()); echo "<br>"; $class2 = New tree_show(); $class2->findid($row['rid']); echo $right = $class2->printid(); echo "<br>"; print_r($class2->printarray());

    • ベストアンサー
    • PHP
  • 複雑なorder by

    例えば、テーブルが以下 <<T_BOARD(掲示板テーブル)>> ・id(スレッドID) ・parent_id(親スレッドID) ・created(作成日) データが以下(親スレッドはparent_id = 0) (id,parent_id,created) 1,0,2011/5/10 2,1,2011/4/11 3.0.2011/1/13 4,3,2011/5/20 5,0,2011/6/23 のようにあるとしたら、 スレッドを親スレッドごとに取得し、作成日の降順に取得したいです。 (id,parent_id,created) 5,0 (親スレッド自身が最新) 3,0(id2が2011/5/20) 1,0(id4が2011/4/11) 現在は select buid_id,created from T_ROOM where parent_id = 0 order by created; これだと、親スレッドの作成日降順にしかとれないので、 5,0 2011/6/23 1,0,2011/5/10 3.0.2011/1/13 となってしまいます。

    • ベストアンサー
    • MySQL

専門家に質問してみよう