-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtopic-post203.html
132 lines (117 loc) · 8.05 KB
/
topic-post203.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja" dir="ltr">
<head>
<title>日本PHPユーザ会 掲示板: PHP事はじめ » PHP + MySQL で自動連番</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="description" content="日本PHPユーザ会運営の掲示板です。※ただいまテスト運用中です。" />
<meta name="keywords" content="php,web,php.gr.jp,community,usebb" />
<link rel="stylesheet" type="text/css" href="./templates/phpgrjp0.3/styles.css" />
<link rel="shortcut icon" href="./templates/phpgrjp0.3/gfx/usebb.ico" />
<link rel="alternate" type="application/rss+xml" title="日本PHPユーザ会 掲示板 RSS フィード" href="rss.xml" />
<script type="text/javascript" src="sources/javascript.js"></script>
</head>
<body onload="javascript:init_external()">
<div id="pagebox-bg">
<div id="shadow-left">
<div id="shadow-right">
<p id="logo"><a href="index.html"><img src="./templates/phpgrjp0.3/gfx/usebb.png" alt="UseBB" title="ホーム" /></a></p>
<h1 id="boardname"><span id="line">日本PHPユーザ会 掲示板</span></h1>
<h2 id="boarddescr">日本PHPユーザ会運営の掲示板です。※ただいまテスト運用中です。</h2>
<div id="topmenu"><ul>
<li><a href="index.html">ホーム</a></li><li><a href="faq.html">FAQ</a></li><li><a href="active.html">活発なトピック</a></li>
</ul></div>
<div id="topmenu-shadow"></div>
<p class="locationbar">
• <a href="index.html">日本PHPユーザ会 掲示板</a> » <a href="forum-2.html">PHP事はじめ</a> » PHP + MySQL で自動連番
</p>
<h3 id="forumname"><a href="topic-84.html">PHP + MySQL で自動連番</a></h3>
<p id="forummods"></p>
<p id="toolbartop"> </p>
<p id="pagelinkstop">ページ: 1</p>
<table class="maintable">
<tr>
<th>投稿者</th>
<th>投稿</th>
</tr>
<tr class="tr1">
<td class="postername">
<div class="posternamecontainer"><a href="profile-116.html">sats</a></div>
</td>
<td class="postinfo">
<div class="postlinks"></div>
<div class="postdate"><a href="topic-post203.html#post203" name="post203" rel="nofollow">#1</a> 2008 年 7 月 20 日(日) 16:50</div>
</td>
</tr>
<tr class="tr1">
<td class="posterinfo">
会員
<div class="avatar"></div>
<div class="field">登録者: 7 2008</div>
<div class="field">返信数: 2</div>
<div class="field"></div>
</td>
<td class="postcontent">
<div class="post">関連する本を買い込みましたが、全然情報がないのでご助言下さい!<br /><br />複数テーブルから文字列を抽出してIDを振るような入力フォームを作っています。<br />具体的には以下のような形を考えているのですが、どのように記述をしてよいのかさっぱりです・・・。<br /><br />table1:<br />+-----+-------------+------+------+--<br />| ID0 | ID1 | col1 | col2 |<br />+-----+-------------+------+------+--<br />| 1 | KW0807-0001 | A | 3323 |<br />| 2 | KX0807-0002 | B | 1122 |<br />| 3 | KY0807-0003 | C | 4441 |<br />| 4 | KW0807-0004 | A | 1256 |<br />+-------------------+------+------+--<br /><br />table2:<br />+-----+------+------+--<br />| ID2 | col3 | col4 |<br />+-----+------+------+--<br />| 1 | A | W |<br />| 2 | B | X |<br />| 3 | C | Y |<br />| 4 | D | Z |<br />+-----+------+------+--<br /><br />・ID0 は AUTO INCREMENT<br />・ID1 -> [K(規定値)] + [col1で入力する値よりcol4を抽出] + 入力した年 (08) + 入力した月 (07) + 0001 から始まる4桁の連番<br />・col1, col2の入力と同時に、ID1 を自動で生成、入力 (table2は既存です)<br /><br />ひとまずこんな感じかな・・・と書いてみましたが、全然ダメです。<br />ID1の入力値は「KResource id #30807-」となってしまいました。<br /><br />$y = date("y",time());<br />$m = date("m",time());<br /><br />$renban = mysql_query("<br />select col4 from table1 INNER JOIN table2 //LEFT JOINでも可?<br />ON col1.table1 = col3.table2<br />where '$col1' = col3<br />");<br /><br />$ID1 = "K$renban$y$m-0000";<br /><br />$sql = "insert into table1 values('$ID1', '$col1' '$col2');<br /><br />※4桁の連番もどうしてよいか分からないので、ひとまず「0000」としました。<br /><br />何が足りないのか誤ってるのか・・・ご教授いただければ幸いです。</div>
</td>
</tr>
<tr class="tr2">
<td class="postername">
<div class="posternamecontainer"><a href="profile-36.html">kona@m</a></div>
</td>
<td class="postinfo">
<div class="postlinks"></div>
<div class="postdate"><a href="topic-post204.html#post204" name="post204" rel="nofollow">#2</a> 2008 年 7 月 22 日(火) 23:22</div>
</td>
</tr>
<tr class="tr2">
<td class="posterinfo">
会員
<div class="avatar"></div>
<div class="field">登録者: 10 2007</div>
<div class="field">返信数: 71</div>
<div class="field"></div>
</td>
<td class="postcontent">
<div class="post">とりあえず私の知っている所だけですが・・・。<br /><br />まず、mysql_query()関数の返り値ですが、これはSQLの実行結果そのものが返ってくるわけではありません。一旦、「結果リソース」というものになって返されてきますので、これをお好みのmysql_fetch_???関数などで実際の結果を取得していきます。<br /><br />この例の場合だと、次のようにして実際の結果を取得することが出来ると思います。<br /><pre class="code">$renban_result = mysql_query( /*...中略...*/ );<br />list($renban) = mysql_fetch_row($renban_result);</pre>このmysql_fetch_row()の関数の詳細については書籍やPHPマニュアルに載っていると思いますので調べてみて下さい。他にも<br />mysql_fetch_array()<br />mysql_fetch_assoc()<br />mysql_fetch_field()<br />mysql_fetch_lengths()<br />mysql_fetch_object()<br />が、あります。</div>
</td>
</tr>
<tr class="tr1">
<td class="postername">
<div class="posternamecontainer"><a href="profile-36.html">kona@m</a></div>
</td>
<td class="postinfo">
<div class="postlinks"></div>
<div class="postdate"><a href="topic-post224.html#post224" name="post224" rel="nofollow">#3</a> 2008 年 8 月 20 日(水) 10:24</div>
</td>
</tr>
<tr class="tr1">
<td class="posterinfo">
会員
<div class="avatar"></div>
<div class="field">登録者: 10 2007</div>
<div class="field">返信数: 71</div>
<div class="field"></div>
</td>
<td class="postcontent">
<div class="post">今更かもしれませんが、念のため書いておきます。<br /><br />MySQL5で、1度のSQL発行で入力処理を行うには次のSQL文でできました。<br />ただし、ID1の「-0001」の部分はID0と同じものとします。<br /><pre class="code">set @col1 = 'C';<br />set @col2 = 4441;<br />INSERT INTO table1 (ID1,col1,col2) VALUES (CONCAT('K',(SELECT col4 FROM table2 WHERE col3=@col1),DATE_FORMAT(NOW(),'%y%m'),'-',LPAD(CAST(LAST_INSERT_ID()+1 AS CHAR),4,'0')), @col1, @col2);</pre><br />PHPで処理するにはset文や@変数の代わりに、SQL文を生成する時点でデータを埋め込むこともできます。</div>
</td>
</tr>
</table>
<p id="toolbarbottom"> </p>
<p id="pagelinksbottom">ページ: 1</p>
<div id="bottomfix"></div>
<p id="actionlinks"></p>
<p class="locationbar">
• <a href="index.html">日本PHPユーザ会 掲示板</a> » <a href="forum-2.html">PHP事はじめ</a> » PHP + MySQL で自動連番
</p>
<p id="linkbar">
</p>
<p id="bottom">
日本PHPユーザ会 掲示板 は <a href="http://www.usebb.net">UseBB 1 フォーラムソフトウェア</a> を使用しています
</p>
<div id="bottom-shadow"></div>
</div>
</div>
</div>
</body>
</html>