2012-03-14 69 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 2012-03-14 02:52:10

+0

@David正確 - 如果該字段同時存在於jos_users和jos_comprofiler中,則可能需要將表名添加到每個字段。可能應該這樣做纔是安全的。所以,例如,'SELECT jos_users.FirstName,jos_users.LastName' – 2012-03-14 03:01:07

0

使用POST檢索用戶生成的值,例如

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

然後用該信息運行任何適當的SQL查詢。由於您正在存儲登錄信息,因此您應該閱讀將敏感信息存儲在數據庫中的最佳做法。 This thread是一個很好的開始的例子。

您的查詢會看起來像

$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); 

你可以這樣處理$查詢到相應的值複製到$名字,姓氏$等,並回應他們像你一樣。

相關問題