投稿者 メッセージ
<  PHPプログラミング  ~  カラムの連結による違うテーブルデータの取得
ktzw3
投稿1時間: 月 12月 24, 2007 3:18 pm  引用



登録日: 2007年12月 24日
投稿記事: 1

始めまして。
前任が蒸発して火消しに必死な初心者です。
PHP+MySQLで会員認証つきHPを制作しています。

仕様により会員データテーブル(x_member)と
アクター情報テーブル(x_person)に分かれて個人情報が格納されており、
(つまり x_member.mbr_id ≠ x_person.prsn_id)
会員認証時にログインした会員の個人情報(例えばprsn_nameとprsn_id)を
変数($prsn_name,$prsn_id)にとりたいのですがわからず困っています。
登録アドレス(prsn_email)をログイン名(mbr_login_name)にしているので
それを連結すればprsn_iもdprsn_nameもとれそうな気はするのですが
色々調べたのですがどうにもわからず・・・・
もしおわかりになる方がいらっしゃいましたらお願いします。

認証のコードとテーブル構造は下記の通りです。


function login_check($con, $user_id, $password)
{
$sql = "select * from x_member where mbr_login_name = '".$user_id."' and mbr_login_pwd = '".$password."'";
$rst = mysql_query($sql, $con);
return $rst;
}

if(($user_id!="")&&($password!="")){
//ログインチェック
$rst = login_check($con, $mbr_login_name, $password);
$cnt = mysql_num_rows($rst);
if($cnt==1){
$login_flg = 1;
$col = mysql_fetch_array($rst);
$member_id = $col['mbr_id'];
$member_mail = $col['mbr_login_name']
//ここにいれたい
//
//
}
else{
$pid = 0;
}
}


table:X_member
_________________________
|mbr_id | mbr_pwd | mbr_login_name |
−−−−−−−−−−−−−−−−−−−−−−−−−
|0001  | aaaaaaaa | AAAA@.....      |
−−−−−−−−−−−−−−−−−−−−−−−−−
|0002  | bbbbbbbb | BBBB@.....      |
−−−−−−−−−−−−−−−−−−−−−−−−−
|0003  | CCCCCCCC | CCCC@.....      |
−−−−−−−−−−−−−−−−−−−−−−−−−
|0004  | DDDDDDDD | DDDD@.....      | 
−−−−−−−−−−−−−−−−−−−−−−−−−

table:X_person
_______________________
|prsn_id |prsn_name| prsn_email |・・・・
−−−−−−−−−−−−−−−−−−−−−−−−
|0001  | 吉田   | AAAA@.....  |・・・・
−−−−−−−−−−−−−−−−−−−−−−−−
|0002  | 加藤   | XXXX@.....  |・・・・
−−−−−−−−−−−−−−−−−−−−−−−−
|0003  | 佐藤   | BBBB@.....  |・・・・
−−−−−−−−−−−−−−−−−−−−−−−−
|0004  | 鈴木   | ZZZZ@.....  |・・・・
−−−−−−−−−−−−−−−−−−−−−−−−
|0005  | 小倉   | CCCC@.....  |・・・・
−−−−−−−−−−−−−−−−−−−−−−−−
|0006  | 松本   | DDDD@.....  |・・・・
−−−−−−−−−−−−−−−−−−−−−−−−
トップに移動
ユーザー情報を表示 メッセージを送信
ach
投稿1時間: 火 12月 25, 2007 10:01 pm  引用



登録日: 2006年8月 19日
投稿記事: 19

Quote:
変数($prsn_name,$prsn_id)にとりたいのですがわからず困っています。
登録アドレス(prsn_email)をログイン名(mbr_login_name)にしているので
それを連結すればprsn_iもdprsn_nameもとれそうな気はするのですが

そのとおりだと思います.
Code:
$sql = "SELECT * FROM x_person WHERE prsn_email = '".$member_name;
$rst = my_sql_fetch_array(mysql_query($con, $sql)); //ここlogin_checkで逆に書いてるけど,通るのかな?

でいいと思いますが?


その他
mbr_login_nameは最低でも"UNIQUE NOT NULL"(であるべき)なのでmysql_num_rowsといった冗長な書き方はやめて
Code:
if ($col = @mysql_fetch_array($rst)) {...
が工程が少なくて幸せな気がするのは気のせいかもしれない.(何が言いたいんだ)
それと,login_checkはそれ以前の領域と処理が完全に分離していないから関数にする意味は無いんじゃ......

変なアクセスしないとだめなデータベースはよくない(理想的にもだめだけど,処理も重い).
正規化について勉強するといいかもしれない.
トップに移動
ユーザー情報を表示 メッセージを送信
特定期間内の記事を表示:   
All times are GMT +9:00

次のトピックを表示
前のトピックを表示
Page 1 of 1
フォーラム一覧  ~  PHPプログラミング

トピックの新規投稿   返信


 
移動先:  

新規投稿: 不可
返信: 不可t
自分の記事の編集: 不可
自分の記事の削除: 不可
投票への参加: 不可




Powered by phpBB
customized by phpspot.