2013-06-03 82 views
2

是否可以使用當前登錄用戶的登錄信息(即輸入的用戶名)來搜索與該用戶名關聯的表中的數據?我可能無法正確地問這個問題,但生病了,我一直在尋找關於如何使工作人員使用用戶名和密碼登錄並進入該頁面時使用他們的用戶名的信息查詢數據庫以找出哪個學校ID與該登錄相關,之後將生成針對該學校ID的應用列表。表「school_info」包含在該領域「schoolID」和用戶名掛在「用戶名」的學生證,表「EOI_AC_Data」包含字段「onlocal_schoolID_choice1」所申請學校的ID的,「onlocal_schoolID_choice2」和「onlocal_schoolID_cho ice3」。如果我沒有解釋得很好,這裏有一張截圖,希望能夠澄清關於桌子的事情。使用登錄詳細信息進行查詢?

http://i40.tinypic.com/2yn07l1.png

我已經寫了一些代碼,但基本上只是找回我想要顯示的數據,我真的不知道從哪裏開始就如何找回我想要顯示的具體數據,所以任何種類的幫助將非常有用。這裏是頁面本身的代碼:

<?php 

require_once("nocache.php"); 
session_start(); 

$schoolID = $_SESSION["schoolID"]; 

$conn = mysqli_connect("localhost", "username", "password"); 
mysqli_select_db(twa312, $conn) 
or die ('Database not found ' . mysqli_error()); 

$sql = "SELECT ApplicationID, given_name, family_name, dob, primary_school FROM EOI_AC_Data WHERE nonlocal_schoolID_choice2 = '$schoolID' order by dob"; 
$rs = mysqli_query($sql, $conn) or die ('Problem with query' . mysqli_error()); 
?> 

<p><b>Listing of applications<b></p> 

<?php while ($row = mysqli_fetch_array($rs)) { ?> 
<p><a href="offerstatus.php?appid=<?php echo $row["ApplicationID"]?>"> 
<?php echo $row["ApplicationID"]?></a> 
<?php echo $row["given_name"]?> 
<?php echo $row["family_name"]?> 
<?php echo $row["dob"]?> 
<?php echo $row["primary_school"]?></p> 

<?php } mysqli_close($conn); ?> 

這裏是我的登錄頁面代碼:

<body> 

<?php 
require_once("nocache.php"); 
$id = $_POST["id"]; 
$pword = $_POST["pword"]; 
$msgp = ""; 

if(!empty($_POST)) { 
if(!empty($id) && !empty($pword)) { 
require_once("dbconn.php"); 
$sql = "select username, school_type, schoolID from school_info where username = '$id' and password = '$pword'"; 

$rs = mysqli_query($sql, $dbConn); 

if(mysqli_num_rows($rs) > 0) { 
session_start(); 
$_SESSION["who"] = $id; 
$_SESSION["schoolID"] = mysql_result($rs, 0, "schoolID"); 
$_SESSION["school_type"] = mysqli_result($rs, 0, "school_type"); 

header("location: EOI_home.php"); 
} 
} else { 
    header("location: login.php"); 
    $msgp = '<span class="error>Incorrect username and/or password</span>';  
} 
} 
?> 

<form method="POST" action="<?php echo $_SERVER["PHP_SELF"];?>" id="login"> 

<div id="menu-wrapper"> 
<div id="menu"> 
    <ul> 
     <li><a href="EOI_home.php">Home</a></li> 
    </ul> 
</div> 
</div> 

<div id="wrapper"> 
<div id="page"> 
<div id="page-bgtop"> 
<div id="page-bgbtm"> 
<h2>Enter Login Details</h2> 
<div> 
     <p>Username: <input type="text" name="id" id="id" /></p> 
     <p>Password: <input type="password" name="pword" id="pword" /></p> 
     <input type="submit" value="log in" />&nbsp; 
     <input type="reset" /> 
</div> 
</div> 
</div> 
</div> 
</div> 
</form> 
+0

對於這個問題還有比我明白的更多嗎?你爲什麼不使用where子句中的字段查詢eoi_ac_data表,就像你是school_info表一樣? –

+0

你的意思是我爲什麼不按照我發佈的第二組代碼中的結構? – AJJ

+0

我的意思是你爲什麼不以同樣的方式(用簡單的where子句)查詢與第一個表匹配的第二個表格行? –

回答

1

好吧,我想我已經想通了,你問什麼(如果指正這是對錯誤問題的解決方案)。

要檢索上進行(EOI_AC_Data)給定附加到學校用戶名一所學校的所有應用程序的數據。

你後的查詢是:

SELECT 
    EOI_AC_Data.* 
FROM EOI_AC_Data 
JOIN school_info 
ON school_info.schoolID IN 
    (EOI_AC_Data.nonlocal_schoolID_choice1, 
    EOI_AC_Data.nonlocal_schoolID_choice2, 
    EOI_AC_Data.nonlocal_schoolID_choice3) 
WHERE 
    school_info.username='<username>' 

的想法是,你試圖從多個表中合併數據,所以你必須使用JOIN將它們連接在一起。

+0

而,通常的警告:觀看我們的SQL注入攻擊。特別是在線路:'$ ID = $ _POST [ 'ID'];'和'$ SQL = 「從school_info選擇用戶名,school_type其中username = '$ ID' 和口令= '$ PWORD'」;' –

+0

事實上你在正確的道路上,我實際上解釋了一些不正確的地方,我現在編輯了我原來的帖子,似乎也有大部分工作(編輯我的上面的代碼以及顯示現在工作的代碼),現在我是試圖找出如何查詢3場simaltaneously(nonlocal_schoolID_choice1,nonlocal_schoolID_choice2和nonlocal_schoolID_choice3只是nonlocal_schoolID_choice1代替)。 – AJJ

+1

只需用'OR'運算符擴展您的'WHERE'子句。 'WHERE nonlocal_schoolID_choice1 ='$ schoolID'或nonlocal_schoolID_choice2 ='$ schoolID'或nonlocal_schoolID_choice3 ='$ schoolID''。 –