番号を付けたい

このQ&Aのポイント
  • プログラム初心者です。phpとmysqlで簡単な掲示板を作りました。スレ名をselectして、レス一覧を表示したいです。
  • レス一覧に番号を振る方法を教えてください。
  • タイトル(title)、テキスト(text)、書き込まれた時間(time)、書き込んだ人の名前(name)が表示されるようにしたいです。
回答を見る
  • ベストアンサー

番号を付けたい

プログラム初心者です phpとmysqlで簡単な掲示板を作りました カラムは sure、title、text、time、name selectで同じスレ名をselectします それで取得できたのがこんなかんじになります スレ名(sure) タイトル(title) テキスト(text) 書き込まれた時間(time) 書き込んだ人の名前(name) タイトル(title) テキスト(text) 書き込まれた時間(time) 書き込んだ人の名前(name) このレス一覧に番号を振る方法を教えてください こんな感じにしたいです NO2 タイトル(title) テキスト(text) 書き込まれた時間(time) 書き込んだ人の名前(name) NO1 タイトル(title) テキスト(text) 書き込まれた時間(time) 書き込んだ人の名前(name) よろしくお願いします

  • flash0
  • お礼率97% (297/306)
  • MySQL
  • 回答数3
  • ありがとう数14

質問者が選んだベストアンサー

  • ベストアンサー
  • Br6
  • ベストアンサー率64% (9/14)
回答No.3

$result = mysql_query(レス一覧取得SQL文); //最後のNo取得 $lastNo = mysql_num_rows($result); while($row = mysql_fetch_assoc($result)){ 表示処理(レスNoを出力場所で$lastNoを出力すればいい) $lastNo--; } ようは最初に最後のNoを取得し、1行表示ごとにマイナスしていけばいいということです。 mysql_queryなどと書いていますが、これは非推奨になっているのであまり使わない方がよいです。 mysqliなどを使いましょう。

flash0
質問者

お礼

回答ありがとうございます 投稿する時にカラムに番号を登録することができました コードはmysqliですご安心を

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>レス一覧に番号を振る 普通はidとして序数をカラムに埋め込んでおくものでは?

flash0
質問者

お礼

回答ありがとうございます カラムに動的にうめこめました

  • root139
  • ベストアンサー率60% (488/809)
回答No.1

PHP側でループカウンタを使って連番を付加するか、SQLで自分自身以前の同一スレのレコード数+1を取得すれば良いでしょう。 ↓はSQLで実現した例です。 SELECT (SELECT COUNT(*) FROM bbs b WHERE a.sure = b.sure AND a.time > b.time) + 1, a.* FROM bbs a WHERE sure = 's1' ;

flash0
質問者

お礼

回答ありがとうございます 参考になりました

関連するQ&A

  • sqlのデータを多次元配列に入れた時

    phpとmysqlの組み合わせです。 例えばですがテーブル名「post」に下記のようなカラムがあって(スペースがカラムの区切りです) no title content time 下記のデータが入っている場合 1 記事1のタイトル 記事1の内容 2016/09/01 10:00:00 2 記事2のタイトル 記事2の内容 2016/09/01 10:10:00 これを下記sqlでセレクトして $st = $pdo->query("SELECT * FROM post") 下記で配列に入れて $posts = $st->fetchAll() 内容を表示してソースを見ると print_r($posts) 下記の様になると思うのですが Array (  [0] => Array   (    [no] => 1    [0] => 1    [title] => 記事1タイトル    [1] => 記事1タイトル    [content] => 記事1の内容    [2] => 記事1の内容    [time] => 2016/09/01 10:00:00    [3] => 2016/09/01 10:00:00   )  [1] => Array   (    [no] => 2    [0] => 2    [title] => 記事2タイトル    [1] => 記事2タイトル    [content] => 記事2の内容    [2] => 記事2の内容    [time] => 2016/09/01 10:10:00    [3] => 2016/09/01 10:10:00   ) ) 何故カラム名と配列の番号?の内容が同じものができるのでしょう?

    • ベストアンサー
    • MySQL
  • UNIONについて

    お世話になっております。UNIONについて伺いたいことあり質問させていただきます。(MySQL5.1系) 2つのテーブルがあり、縦に?検索したくUNIONを使ってSQL文を作ってみました。 この検索対象となる2つのテーブルは構成も違えば、カラム名も違うのですが、 SELECT name, address FROM member UNION SELECT c_name, c_address FROM class とこのようにしたら欲していた結果を得ることが出来ました。 そ、ここで質問なのですが、今回、UNIONを使うのは初めてなのですが、色々と調べていると、 UNIONを使うときは、カラム名が同一なものが条件のように書かれているものが多くあり、 多くのサイトのサンプルソースを見てみると、以下のようにカラム名が同一なものばかりと、 そんな印象があるのですが、UNIONを使う場合は、カラム名が同一でないと駄目なのでしょうか? SELECT name, address FROM member UNION SELECT c_name, c_address FROM class また、もう1点伺いたいのですが、UNIONを使い、ORDER BYを場合、以下のように SELECT文ごとにカッコで括るとも調べたのですが、結果は何も変わらない状態になっています。 (SELECT no, name, address FROM member ORDER BY no desc) UNION (SELECT c_no, c_name, c_address FROM class ORDER BY c_no desc) 上記にあるように、テーブル名classのORDER BY c_no descが利くようにするには どのようにすべきなのでしょうか? お忙しい中恐縮ですが、宜しくお願い申し上げます。

    • ベストアンサー
    • MySQL
  • mysql と php で、2テーブル結合の検索!

    mysql と php を勉強しはじめで、解からないので、どなたか教えてください! 2テーブルあります。( 例 ’name’ と ’jusyo’ テーブルです。) ’name’テーブルは、NO int、IC_NO char(5)、NAME char(18)、 ・・・・・です。 ’jusyo’テーブルは、NO int、NAME_KANA char(30)、TEL char(6)、JUSYO char(50)、 ・・・・です。 この2テーブルを、《NO int、》で、左結合(レフトジョイン)させます。 テキスト入力フィールド、があり、検索ボタンで検索させようと思っています。 テキスト入力フィールドには、IC_NO を入力し、’jusyo’テーブルの、NAME_KANA TEL JUSYO・・・ を表示させたいと思っています。 <?php extract($_POST); echo " <form action=\"kensaku2.php\" method=\"post\" > <p>検索番号 : <input type=\"text\" name=\"nam\" value=\"$nam\" size=\"10\">   <input type=\"submit\" value=\"検索\"></p>\n </form> "; if($nam<>''){ mysql_connect('localhost','root','******'); mysql_select_db('データベース名'); $sql= "select * from name left join jusho on NO=NO"; $sql= "select * from name where IC_NO like '%$nam%'"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>\n"; } else { while($row = mysql_fetch_array($result)){ echo "詳細情報"; echo "<br />\n"; echo "<br />\n"; echo "インター名 : "; echo $row["NAME_KANA"]; echo "     "; echo "<p>";               ↓ としてますが、NAME_KANAが表示されません、どこが間違っていますか? 考え方がおかしいのでしょうか?

  • カラムにデータがあるかないか確認したいです。

    環境:mySQL、PHP セレクト文で対象カラムの中にデータが入っているか否かを 確認するphpの書き方を教えていただけないでしょうか。。 例: たとえば、カラム名 no に1が入っていて そのレコードにある bunsyo の中にデータが入っているか否かを確認したいと 考えてます。 $kakunin = mysql_query("select bunsyo from テーブル名 where no=1 "); 上記だとデータを参照するだけなので、、、 入っているかいないかを確認したいと考えてます。 返ってくるのが true=1、false=0 とかで返ると次の処理がしやすいので助かります。。。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 新着表示

    プログラム初心者です シンプルな掲示板をつくりました ホームページのトップページに新しく書き込まれたスレッドを表示したいです bbsに書き込まれたらbbsテーブルに行番号を付けてどんどんインサートしていくようにしてます トップページはindex.phpです id (オートインクリメントでつけた行番号) sure_id (タイトルごとのid。これでタイトルごとにまとめています) mes 書き込まれた文章 name 書いた人の名前 time 型はdatetimeです(書き込まれた日付) bbs番号3番のスレ 2番目の書き込み 2013-09-12←これが新着で取得したい値 1番目の書き込み 2013-09-10←なぜかこちらを取得してしまう 下記のようにindex.phpで表示したいです bbs番号3番のスレが2013-09-12 しかしやってみたら新着順にはなるものの3番目のレスの古いほうから値を取得していました SELECT * FROM bbs GROUP BY sure_id ORDER BY MAX(time) DESC LIMIT 1,10 bbs番号3番のスレが2013-09-10 bbs番号5番のスレが2013-09-11 bbs番号6番のスレが2013-09-09 こうなるようにしたいです bbs番号3番のスレが2013-09-12 ←最新の書き込まれたスレッドのなかから一番新しい日付を表示したい bbs番号5番のスレが2013-09-11 bbs番号6番のスレが2013-09-09 よろしくお願いします

    • ベストアンサー
    • MySQL
  • GROUP BY の指定で

    MySqlには不慣れな者です。 来店table id|text_date |name 1 |20120101010101|山田 2 |20120222001227|鈴木 3 |20120309035932|福田 4 |20120309035932|館山 5 |20120713121211|大沢 6 |20120822120127|矢島 といったテーブルがあるとします。 カラムtext_dateはCHARで、日時データを持っています。 (ちょっと解り辛いサンプルで失敬) SELECT text_date, count(*) FROM 来店table WHERE text_date >= "20120101010101" GROUP BY text_date; とするとid 3・4の同日時のみカウント2として以外はカウント1で出ると思います。 希望ですが、カラムtext_dateの時間部(8・9番目の数字)でカウントを取りたいのですが。 GROUP BY の指定方法でそのような事はできるのでしょうか? MySqlのリファレンスを色々探し回っているのですが、見つけることができません。 ご助力いただけると助かります。

    • ベストアンサー
    • MySQL
  • NULLについて

    NULLについて伺います。 現在、strutsで入力画面にて入力した内容がデータベース(MYSQL)に反映されるWEBアプリケーションを作っているのですが、Column 'title' cannot be nullとコンソールでエラーが出ており、「not nullでテーブルを作り直せばいいのかな」と思い、一旦テーブルを削除してからもう一度作り直したのですが、エラーが変わりません。何かしらご教授頂ければ幸いです。よろしくお願いいたします。下記にテーブル構造と、その下にエラーを貼り付けておきます。(文字数の関係上、エラー全文は貼り付けられませんでした) mysql> desc input; +--------------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+---------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | title | text | NO | | NULL | | | movie_url | text | NO | | NULL | | | material_url | text | NO | | NULL | | | explanation | text | NO | | NULL | | +--------------+---------+------+-----+---------+----------------+ com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'title' cannot be null

    • ベストアンサー
    • MySQL
  • 非常に複雑な複数テーブル間の問い合わせ

    threadTable no/スレッドNo datetimes/スレッド更新時間 title/スレッドタイトル resTable no/レス通しNo resNo/このレスが同スレッドで何番目か(0始まりで、0だとスレッド作成時の記事) threadNo/対象スレッドNo name/記入者名 このようなテーブルを用いて threadTable.no|threadTabletitle|resTable.name(*1)|resTable.name(*2)|合計レス数|threadTable.time という結果をスレッド更新時間が新しい順に10件得たいです。 MySQLのバージョンは5.0.37ですが、 4でも動くようにサブクエリを使わない方法と合わせて教えていただけると助かります。 よろしくお願いします *1:resTable.resNo = 0 *2:resTable.resNoが最大

  • document.titleというものがありますが、titleタグに付

    document.titleというものがありますが、titleタグに付ける名前を定義できると思うのですけど、 metaのkeywordsを定義するものはあるのでしょうか。 以下のようなtitleを付ける為の仕組みがあります。 そのscript箇所に、 document.title = "<!--{$title_text}-->" + "|" + document.title; と同じような仕組みで、keywordsを定義する事はできませんでしょうか? どなたかご教示いただけると幸いです。 <!--{php}--> $db_connect = false; $sql_category = "SELECT category_id,category_name,parent_category_id FROM dtb_category WHERE category_id = "; $db = mysql_connect(DB_SERVER,DB_USER,DB_PASSWORD); //mysql_query("SET NAMES utf8"); if(mysql_select_db(DB_NAME, $db)) $db_connect = true; $title_text = ''; if ($db_connect) { $sql = $sql_category.$_GET['category_id']; $result = mysql_query($sql); $row = mysql_fetch_assoc($result); mysql_free_result($result); $title_temp = $row['category_name']; while ($row['parent_category_id'] != 0) { $sql = $sql_category.$row['parent_category_id']; $result = mysql_query($sql); $row = mysql_fetch_assoc($result); mysql_free_result($result); $title_text = $row['category_name']; } if ($title_text != '') $title_text = $title_text." | ".$title_temp; else $title_text = $title_temp; } $this->assign("title_text", $title_text); <!--{/php}--> <script type="text/javascript"> //<![CDATA[ function setEventListener(el, evt, func) { if (el.addEventListener) el.addEventListener(evt, func, false); else el.attachEvent("on"+evt, func); } function html_load() { document.title = "<!--{$title_text}-->" + "|" + document.title; } setEventListener(window, 'load', html_load); //]]> </script>

  • このスクリプトは何ベース???

    ↓これってCベースのスクリプトですか? もしくは他のベースになるのですか? 先日ゲーム会社の面接で聞かれて全く答える事が出来ず、恥をかきました・・・。 下記は個人で作ったADVゲームのスクリプトです。 //セーブ画面で表示されるタイトル <SAVETITLE TITLE="恋"> //ウィンドウ非表示 <WINDOW VISIBLE=FALSE> //立ち絵表示 <IMG="..\img\c_b4.bmp" EFFECT="FADE" TIME=20 PLACE="PERSON1"> <IMG="..\img\c_b2.bmp" EFFECT="FADE" TIME=20 PLACE="PERSON2" X=250 Y=0> //画面効果発生 <EFFECT="WIPE_BLIND_RIGHT" DIR="IN" TIME=20> //名前ウィンドウに表示させる名前 <NAME="大男"> //発生するボイスのパス <SOUND SRC="..\..\sound\voice\15\vosad10.mid" CHANNEL="3"> 「はあ、はあ、はあ……」 //選択肢です↓ <SELECT TEXT="選択肢のテキスト1"> <END> <SELECT TEXT="選択肢のテキスト2"> <END> <SELECT TEXT="選択肢のテキスト3" COND="フラグ1 = 1"> <END> いきなりこんなもん見せられても、きっと答えづらいんだろうなぁ、と思うのですが なにかわかる方、いっらしゃいましたら、オネガイシマス。