PHP+MYSQLでレコードの表示させ方
- PHP MYSQLを使用して、会員制ページで複数の条件に基づいてレコードを表示する方法についての質問です。
- 質問者は、名前、出身県、性別の情報を持つ1件のレコードに基づいて、個別のページにリンクする方法を知りたいとしています。
- 現在のコードでは1つの県についての条件だけが実装されており、他の条件についてはうまく処理できていないとのことです。
- ベストアンサー
PHP+MYSQLでレコードの表示させ方
いつも初心者の質問でスミマセン。 PHP MYSQL で 会員制ページを作っています。 このような時にはどういう風にしたらいいか教えてください。 1件のレコードに 名前 出身県 性別 がある時に 下記のようにその個人のページにリンクしたいのですが ひとつの県だけなら出来るのですが、 このように条件を色々と設定するにはどうしたらいいか ヒントだけでもお願いいたします。 沖縄県出身者 男 A B C 女 D E F 東京出身者 男 G H I 女 J K L このようにしていました。 <?php require_once("dbini.php"); $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); $selectdb = mysql_select_db($DBNAME, $con); $sql = "select * from mem where seibetu = 1 and area = 1 " ; $rst = mysql_query($sql, $con); $body1 .= ""; while($col = mysql_fetch_array($rst)) { $body1 .= "⇒" . "<A href='" . $col["id"] . "j.html'>" . $col["name"] . "</A>"; $body1 .= "<br>\n"; } mysql_free_result($rst); $con = mysql_close($con); ?> これでボディに<?= $body1 ?> を張っていました。 これを<?= $body2 ?> と繰り返したらいいのかと思い色々していましたが どうしてもうまくいきません。 宜しくお願いいたします。
- kiyomidesuyo
- お礼率51% (55/107)
- PHP
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
例えばこんな感じで階層でデータを吸い出せば 分けて表示することは簡単です。 <?PHP //$host,$user,$pass,$dbを設定 $link=mysql_connect($host,$user,$pass); mysql_select_db($db,$link); $sql="SELECT * FROM `mem` ORDER BY `area` ASC,`seibetu` ASC,`id` ASC"; $res=mysql_query($sql,$link); while($rows = mysql_fetch_array($res,MYSQL_ASSOC)){ $members[$rows['area']][$rows['seibetu']][$rows['id']]=$rows['name']; } foreach($members as $key1=>$val1){ $body.= "shusin={$key1}<br>"; foreach($val1 as $key2=>$val2){ $body.="seibetu={$key2}<br>"; foreach($val2 as $key3=>$val3){ $body.="<a href='{$key3}j.html'>{$val3}</a><br>"; } } } print $body; ?>
関連するQ&A
- PHP+MYSQLで直近3件のデータ表示
直近のデータを3件表示するのに $sql =" select * from テーブル order by フィールド(date型) desc limit 3" ; だとうまくいくのですが DATETIME形に変えるとうまくいかないのは、何か変な事してますでしょうか? $sql =" select * from テーブル order by フィールド(datetime型) desc limit 3" ; 他の箇所は両方とも全く一緒です。 データは入れてあります。 宜しくお願いいたします。 全文は書けなかったので <?php require_once("dbini.php"); $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); $selectdb = mysql_select_db($DBNAME, $con); $sql =" select * from mem order by rupdate desc limit 3" ; $rst = mysql_query($sql, $con); $recmax = mysql_num_rows($rst); $body = "<B>$recmax 件のデータがみつかりました。</B>"; $body .= "<TABLE border='1' cellpadding='2' cellspacing='0'> <TR> <TH bgcolor='#00CCCC'>会員ID</TH> <TH bgcolor='#00CCCC'>会員名</TH> <TH bgcolor='#00CCCC'>性別</TH> <TH bgcolor='#00CCCC'>ジャンル</TH> <TR>\n"; while($col = mysql_fetch_array($rst)) { $body .= "<TR>\n"; $body .= "<TD>" . $col["id"] . "</TD>\n"; $body .= "<TD>" . $col["name"] . "</TD>\n"; $body .= "<TD>" . $col"seibetu"] . "</TD>\n"; $body .= "<TD>" . $col["cate"] . "</TD>\n"; $body .= "</TR>\n"; } $body .= "</TABLE>\n"; mysql_free_result($rst); $con = mysql_close($con); ?> 以下 <?= $body ?> を貼り付けています
- ベストアンサー
- PHP
- PHPとMYSQLでカウンターを作っています
アクセス数を管理画面で表示しようとしています。 **全く変な事をしているかも知れません。。。 DBはこのようになっています、同じ会員のページを合算して表示したいので 0001の会員にはpagename 0001 0001a と言う具合につけて、 0002の会員にはpagename 0002 0002a とつけて行きます pagename varchar(20) access int(11) カウントは出来ているのですが、表示させることが出来ません。 多分、全く的外れなことをしていると思います <?php require_once("dbini.php"); $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); $selectdb = mysql_select_db($DBNAME, $con); $sql = "select access from count where like pagename = '0001%'"; $rst = mysql_query($sql, $con); $body = ""; while($col = mysql_result($rst)) { $body .= "総アクセス数". "<br>"; $body .= $col["0001"]+$col["0001s"]. "<br>"; $body .= "トップページアクセス数". "<br>"; $body .= $col["0001"]. "<br>"; $body .= "紹介ページアクセス数". "<br>"; $body .= $col["0001s"]. "<br>"; } mysql_free_result($rst); $con = mysql_close($con); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <TITLE></TITLE> </HEAD> <BODY> <?= $body ?> </BODY> </HTML> 分かりにくい説明かと思いますが、 どなたか分かる方ヒントでも頂けると幸いです よろしくお願いいたします。
- 締切済み
- PHP
- 入門書のPHPサンプル内で、MySQL関数を使いたい
環境:PHP5.0.3+MySQL4.0.14です。PHPどころか、プログラムも素人です。 検索結果をHTML表に一覧化する仕組みを作っているのですが WHERE条件に合致した数値データを平均化したり、 WHERE条件合致した日付データの書式を【MySQL関数によって】加工したいです。 それぞれ、mysql.exe(DOS窓上)での書き方はわかったものの (SELECT AVG(HOGE1) WHERE (HOGE <= 1) のように)、 これをPHPに組み込んだ際ににどう使えばわからないです。 今回使っているPHP入門書のサンプルは以下の通りです。ここで mysql_fetch_arrayに格納されたテーブル(カラム)を取り出しているらしい ことはわかりますが、以下のサンプルで加工したい対象である $col["DATE1"]、$col["HOGE1"]を $col["date_format(DATE1, '%y/%m/%d')"] や $col["AVG(HOGE1)"]などと してもだめみたいです。 以下の例で、これらを取り出すにはどのように記述したらいいでしょうか。 よろしくお願い致します。 <?php require_once("dbini.php"); $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); $selectdb = mysql_select_db($DBNAME, $con); $sql = "select * from mytable"; $rst = mysql_query($sql, $con); $recmax = mysql_num_rows($rst); $body = "結果: $recmax 件"; $body .= "<table>"; for ($recnum = 0; $recnum < $recmax; $recnum++) { $col = mysql_fetch_array($rst); $body .= "<td>" . $col["DATE1"] . "</td>"; $body .= "<td>" . $col["HOGE1"] . "</td>"; $body .= "</tr>"; } $body .= "</table>\n"; mysql_free_result($rst); $con = mysql_close($con); ?> <html> <head></head> <body> <?= $body ?> </body> </html>
- ベストアンサー
- PHP
- [PHP+MySQL] データをランダムに表示する方法について(order by)
ID ・ 名前 ・ 都道府県名 ・ エリア名 ・ TEL というデータがあります。 表示順序(order by)ですが、都道府県名・エリア名の順で表示させたいのですが、 その次の順序条件をランダムに表示したいのです。 つまり、都道府県名・エリア名が同じデータの場合に、決まった順序ではなく、ランダムにすることによって、公平な順序条件で表示したいのです。 (誰もが上に表示されたいと思っています。なので、ランダムにすることによって、公平になるのではないかと考えました。ランダム表示以外にも、良い案があれば教えて頂きたいです。) どなたか、良い方法があれば、ご指南頂ければ有難いです。宜しくお願い致します。 <?php require_once("../***.php"); $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); $selectdb = mysql_select_db($DBNAME, $con); $sql = "select * from YTABLE order by ken, area, ★"; $rst = mysql_query($sql, $con); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <title></title> </head> <body> <table border="1" cellspacing="0" cellpadding="10"> <?php while($col = mysql_fetch_array($rst)) { ?> <tr> <td><?php echo $col["name"]; ?></a></td> <td><?php echo $col["ken"]; ?></a></td> <td><?php echo $col["area"]; ?></a></td> <td><?php echo $col["tel"]; ?></a></td> </tr> <?php } ?> </table> </body> </html> <?php mysql_free_result($rst); $con = mysql_close($con); ?>
- ベストアンサー
- PHP
- mysql_num_rowsなどのWarningの原因がわからない
以下のプログラム、何が誤っているのでしょうか。 違う箇所で使ったPHPの使いまわし(そちらは問題なく動いている) なのですが、サーバー上で実行しても Warning: mysql_num_rows(): supplied argument is not a valid MySQL result ... Warning: mysql_free_result(): (以下同上) となり、どうしても原因が究明できません。。 以下、省略してますが、本質は変わりません。SQL文($sql)を phpMyAdminで通すとなんら問題なく問い合わせ結果が得られます。 <?php $con = mysql_connect(localhost, username, pss); $selectdb = mysql_select_db(mydb, $con); $sql = "SELECT Kaisya FROM MYTABLE"; $rst = mysql_query($sql, $con); $recmax = mysql_num_rows($rst);//■←この行がWarning■ $body = "<table border='1'>"; $body .= "<tr>"; $body .= "<td style=\"text-align: center;\">会社名</td>"; for ($recnum = 0; $recnum < $recmax; $recnum++) { $col = mysql_fetch_array($rst); $body .= "<tr>"; $body .= "<td>" . $col['Kaisya'] . "</td>"; $body .= "</tr>"; } $body .= "</table>"; mysql_free_result($rst);//■←この行がWarning■ $con = mysql_close($con); ?> <html><head></head><body> <?= $body ?> </body></html>
- ベストアンサー
- PHP
- select文
こんばんは。PHPでデータベースからレコードとフィールドを表として取り出そうとしてますが、うまく行きません。 MySQLへの接続はうまくいってると思うので、while文が間違ってるのでしょうか?PHPのバージョンはPHP Version 4.4.2です。 よろしくお願いしますm(__)m <?php require_once("dbini.php"); $con = mysql_connect($server, $user, $pass); $select = mysql_select_db($dbname, $con); $sql = "select * from book"; $rst = mysql_query($sql, $con); $body = "<table border='0' cellpadding='5' cellspacing='5' width='500'><tr><td>\n"; while($col = mysql_fetch_array($rst)) { $body .= "<b><font size='+2'>".$col["title"]."</font></b>" $body .= "</td></tr>"; $body .= "<tr><td colspan='2'>".$col["article"]."</td></tr></table>"; } mysql_free_result($rst); $con = mysql_close($con); ?> <html> <body> <?= $body ?> </body> </html>
- ベストアンサー
- PHP
- if文で、レコードが無い場合だけ変数が表示しなくなる
いつもお世話になっています。 やりたい事から説明します。 リストボックスで絞込みを2段階にしています。 その2段階目で、レコードがあればきちんと表示するのですが 無い場合に、一段階戻したいのです。 やってみた事。 前のページから、POST で 【genreno = $sgenreno】を送っています。 うまく表示するのですが、レコードが無いときにうまく表示できません。 *レコードが無いので、前のページに戻るリンクを表示したいのです 下は私なりに書いてみたのですが、if文にしない時はうまくいくのですが if文にすると、レコードが無い場合にだけ変数が表示しません。 **変数以外の部分は表示するので、分岐は出来てると思うのですが 変な事をしているのだと思いますが、色々やってみてもうまくいきません。 宜しくアドバイスをお願いいたしますm(__)m <?php require_once("dbini.php"); $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); $selectdb = mysql_select_db($DBNAME, $con); //1ページ当りの表示件数を設定します $PAGESIZE = 10; if (!isset($page)) { $sql = "select count(*) as cnt from テーブルA where genreno = $sgenreno"; $rst = mysql_query($sql, $con); $col = mysql_fetch_array($rst); $tcnt = $col["cnt"]; mysql_free_result($rst); $page = 1; } $totalpage = ceil($tcnt / $PAGESIZE); $pagehead = "$tcnt 件の登録があります。 " . "[" . ($PAGESIZE * ($page - 1) + 1) . "-"; if ($page < $totalpage) { $pagehead .= ($PAGESIZE * $page) . "] を表示しています</p>"; } else { $pagehead .= "$tcnt] を表示しています</p>"; } //1ページ分だけ抽出するSQL文を組み立てます $sql = "select * from テーブルA where genreno = $sgenreno order by id desc limit " . $PAGESIZE * ($page - 1) . ", $PAGESIZE"; $rst = mysql_query($sql, $con); //結果セットからデータを読み込みます while($col = mysql_fetch_array($rst)) { $genreno=$col["genreno"]; $genre=$col["genre"]; $sgenre=$col["sgenre"]; } //△△△△△△△うまくいかないのはこの部分△△△△△△△ if($tcnt == 0 ){ $navi .= "<a href='1setubi_search.php?genreno=$genreno'>【".$genre."】"."</a>"."【".$sgenre."】は登録がありません。" ; } else{ $navi .= "今表示しているのは<a href='1setubi_search.php?genreno=$genreno'>【".$genre."】"."</a>"."【".$sgenre."】です。" ; //↑この行はレコードがある場合は表示します } mysql_free_result($rst); //△△△△△△△うまくいかないのはこの部分まで△△△△△△△
- ベストアンサー
- PHP
- PHP+MYSQLでページのカウントを取る方法
会員ページでページビューを見たくて 下記のように作ろうとしていますが 表示をどのようにしたらいいか分かりません。 **カウントは取れています** テーブル count sn pagename access (フィールド) 1 001top 10 2 001a 13 3 001b 8 4 002t 23 5 002a 18 6 002b 20 このように入れて、表示は下記のようにしたいのです ID: 001 合計アクセス 31 topページアクセス 10 aのページアクセス 13 bのページアクセス 8 似たような質問が多くてスミマセン、 頭が固くて応用が利きません。。。 アドバイス、お願いいたします。 ちなみに、カウントを取るのは下記のようにしています カウントを取るページに以下を張る <IMG src="pgview.php?pagename=001t" height="1" width="1"> pgview.php <?php require_once("dbini.php"); $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); $selectdb = mysql_select_db($DBNAME, $con); $sql = "update count set access = access + 1 where pagename = '$pagename'"; mysql_query($sql, $con); $con = mysql_close($con); ?> MYSQL ver4.0.26 PHP ver4.2.2
- ベストアンサー
- PHP
- phpとjavascriptで画像を切り替える
こんにちは。phpで掲示板を作っているんですが、画像差し替えのためのjavascriptを入れると上手く動作しません。どなたかお手数ですがご教授いただけませんでしょうか?以下がスクリプトです。 <?php require_once("****.php"); $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD); $selectdb = mysql_select_db($DBNAME, $con); $sql = "select * from stock where no = '$no'"; $rst = mysql_query($sql,$con); $body =""; while($col = mysql_fetch_array($rst)) { $img = $col["imgfilename"]; $img1 = $col["imgfilename1"]; $body .= "<p style='text-align: center;'> <img src ='upload/$img' name='imgs' alt='*'><br> <a href ='#' onClick='roimg('upload/$img1'); return false;'>差し替え画像</a> </p>"; } $con= mysql_close($con); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <script type="text/javascript"> <!-- function roimg(i){ if (document.images){ document.imgs.src=i; } } //--> </script> </HEAD> <center> <?= $body ?> </center> </BODY> </HTML>
- ベストアンサー
- PHP
- リストから詳細画面に遷移するためのリンク作成と詳細画面の表示
PHP5とMySQL4.0の組み合わせで、初歩的なことがわかりません。 例えば、(1)社員IDと、(2)年齢、(3)名前をリストアップする画面があるとして、 IDのところをハイパーリンクにして、それを押すとその社員の レコード内容を更新する画面を出す、みたいなことをしたいのですが、 これって method="POST" でなく、GETでやるのですよね? 「IDのリンク」とは、<a href="syain_detail.php?id=100">みたいなカタチに なるのでしょうが、具体的なスクリプトでご教示いただけないでしょうか。 単純に(IDへのリンクを考えずに)DBのレコードをPOSTでざーっと リストアップするHTMLまではできるのですが、 IDをハイパーリンクにして次の画面を構成するPHPがさっぱり わからないのです。下記、DBのサンプルと、わたしにわかるスクリプトです。 --------syainmaster---------- id age name ---------------------- 100 20 suzuki 200 24 sato 300 30 tanaka ----------------------- <?php $con = mysql_connect(localhost, root, mypass); $selectdb = mysql_select_db(mydb, $con); $sql = "select * from syainmaster"; $rst = mysql_query($sql, $con); $recmax = mysql_num_rows($rst); $body = "<TABLE>"; for ($recnum = 0; $recnum < $recmax; $recnum++) { $col = mysql_fetch_array($rst); $body .= "<TR>"; $body .= "<TD>" . $col["id"] . "</TD>"; $body .= "<TD>" . $col["age"] . "</TD>"; $body .= "<TD>" . $col["name"] . "</TD>"; $body .= "</TR>"; } $body .= "</TABLE>"; $con = mysql_close($con); ?> <HTML> <BODY> <?= $body ?> </BODY> </HTML>
- ベストアンサー
- PHP
お礼
お騒がせいたしました、出来ました!! 大変感謝しています。 お忙しい中、回答頂きましてありがとうございました。 また、機会がありましたら宜しくお願いいたします。
補足
ありがとうございます、出来ました!! 追加でスミマセンが。。。 これを特定の出身地(area)だけで1ページ作ると どのように変えたらいいでしょうか? 後は自分でやろうとしていたのですが出来ませんでした。。 宜しくお願いいたします。