2012-03-14 1 views
0

私はユーザーに自分のユーザー名とパスワードを入力させたいプロジェクトに取り組んでいます。正しい場合は、小さなログインセクションの下にあるテーブルのフィールドにPHPスクリプトを記入してください。これは可能ですか?これは私が今までに持っているものであり、ちょっと薦められています。私は2つの異なるテーブルのデータを結合する必要があるので、私はクエリでLEFT JOINを使用しました。データが複数のテーブルから来た場合、フォームでフィールドを入力するのに、PHPとMYSQLを使用するにはどうすればよいですか?

<?php 
$connect = mysql_connect("localhost","*********","******") or die ("Couldn't Connect"); //host,username,password 
mysql_select_db("virtua15_j*1**") or die ("Could not find database"); 

$query = mysql_query("SELECT * FROM jos_users LEFT JOIN jos_comprofiler ON jos_users.id=jos_comprofiler.id WHERE jos_users.id = $id"); 


?> 
<html> 
<form action="populate.php" method='post'> 
<table> 
<tr> 
     <td>VAE&nbsp;Username:</td> 

     <td><input type='text' name='username' value=''></td> 
     </tr> 
     <tr> 
     <td>VAE&nbsp;Password:</td> 

     <td><input type='password' name='password' value=''></td> 
     </tr> 
</table> 
    <p><input type='submit' name='submit' value='Search & Populate!'></p> 
</form> 
<hr> 

<form action="dafreg.php" method='post'> 
<table> 
<tr> 
<td>Fristname:</td> 
<td><input type='text' name='firstname' value='<?php echo $firstname; ?>'></td> 
</tr> 
<tr><td>Lastname:</td> 
<td><input type='text' name='lastname' value='<?php echo $lastname; ?>'></td> 
</tr> 
<tr> 
<td>Login:</td> 
<td><input type='text' name='login' value='<?php echo $username; ?>'></td> 
</tr> 
<tr><td>Password:</td> 
<td><input type='text' name='pass' value=''></td> 
</tr> 
<tr><td>Country:</td> 
<td><input type='text' name='country' value=''></td> 
</tr> 
<tr><td>Pilot:</td> 
<td><input type='checkbox' name='pilot' value=''></td> 
</tr> 
<tr><td>ATC:</td> 
<td><input type='checkbox' name='atc' value=''></td> 
</tr> 
<tr><td>Email:</td> 
<td><input type='text' name='email' value=''></td> 
</tr> 
</table> 
<p><input type='submit' name='submit' value='Register'></p> 
</form> 





</form> 


</html> 

答えて

2

私はSELECT必要なフィールドだけだろうがあなたは、あなたのクエリが正しい持ち - (おそらくあなたが唯一の2つのまたは3つのフィールドを必要とするとき、なぜ、すべてのフィールドとそのデータをプル)*を避けるようにしてください。また、クエリを実行するときに常に変数をエスケープするようにしてください。これにはmysql_real_escape_string()を使用できます。

クエリの結果をループする方法はいくつかありますが、私はmysql_fetch_assoc()を使用します。

だからあなたのコードは、(あなたが複数のテーブルを結合しているので、あなたは、各フィールドにテーブル名を指定する必要があります)最初と最後の名前を取得するには、次のようになります

$query = mysql_query("SELECT jos_users.FirstName, jos_users.LastName FROM jos_users LEFT JOIN jos_comprofiler ON jos_users.id=jos_comprofiler.id WHERE jos_users.id = " . mysql_real_escape_string($id)); 

if ($row = mysql_fetch_assoc($query)) 
{ 
    $firstname = $row['FirstName']; //This is whatever the field is called in your table 
    $lastname = $row['LastName']; 
} 
+0

これで、SELECTの後に両方のテーブルから必要なすべてのフィールドを入力しますか? – David

+0

@David correct - フィールドがjos_usersとjos_comprofilerの両方に存在する場合は、各フィールドにテーブル名を追加する必要があります。おそらく、安全のためだけにそれを行うべきです。したがって、たとえば、 'SELECT jos_users.FirstName、jos_users.LastName' –

0

利用POST取得するにはユーザ生成値、例えば

$username = $_POST["username"]; 
$password = $_POST["password"]; 

この情報で適切なSQLクエリを実行します。ログイン情報を保存しているので、機密情報をデータベースに保存するためのベストプラクティスをお読みください。 This threadは良いスタート地点の一例です。

あなたのクエリがそのあとなど$ firstnameのに適切な値をコピーするプロセスの$クエリ、$の姓を、

$query = mysql_query("SELECT firstname, lastname, ... FROM jos_users LEFT JOIN jos_comprofiler ON jos_users.id=jos_comprofiler.id WHERE jos_users.username = " . $username); 

のようなものになり見て、あなたがしたようにそれらをエコーでしょう。

関連する問題