2014-04-25 65 views
-1

暈,我在這裏得到了一個If語句,但不起作用。 系統只是將我傳遞給我設置的最後一頁。 這不是我想要的。 我在這裏想要的是當用戶登錄時,系統自動檢查用戶屬於哪個部門並將他們發送到正確的頁面。我的if語句與mysql數據沒有比較?

$departmentsql="SELECT department FROM staff_table"; 
$departmentsqlresult=mysql_query($departmentsql); 
$departmentcount=mysql_num_rows($departmentsqlresult); 
if($departmentcount == "A"){ 
header("location:departmentA.php"); 
} 
else if($departmentcount == "B"){ 
header("location:departmentB.php"); 
} 
else if ($departmentcount == "C"){ 
header("location:departmentC.php") 
} 

系統每次都會把我送到departmentC.php,無論我登錄哪個用戶。 這不是我想要的。 任何人都可以告訴我什麼是我的代碼錯了嗎? 感謝您的回答。由於

+2

mysql_num_rows返回結果中的行數,而不是一個字母。請選擇[mysql_fetch_assoc](http://us1.php.net/manual/en/function.mysql-fetch-assoc.php)。最後不要使用mysql_ *它已棄用,請使用mysqli或PDO。 – Dexa

+2

'mysql_num_rows'返回一個數字,但您將它與一個字符串進行比較。 –

回答

1

你有2個錯誤:

if($departmentcount == "A"){ 
    header("location:departmentA.php"); 
} 

>>$departmentcount將包含numric值

PHP不implictyly類型轉換,所以當你比較兩個值,它把他們兩個相同類型

在比較,因爲你是一個比較char$departmentcount,它會希望$departmentcount包含字符值太大,這是不是這樣的......這樣的條件對所有的ifelseif,因此沒有輸出變爲假

比較像

if($departmentcount == 10) //compare with number 

>>時,你會成功的比較,頭部不會重定向,因爲你的header語法也是不正確

正確這樣說:

header("Location: departmentA.php"); 
    /* you need a ^^ space here */ 
+0

當然你*可以*比較一個int到一個字符串在php – PeeHaa

+0

@PeeHaa:更新與解釋...檢查它是否合適! :) – NoobEditor

+0

最後一個挑剔的評論。 「位置」標題需要完整的絕對URI :-) – PeeHaa

0

首先好像你根本沒把登錄的用戶和這樣做的方式,似乎目前你將返回各部門不管是誰已經登錄的用戶的查找英寸

下一頁mysql_num_rows返回該查詢你需要和mysql_fetch_row,mysql_fetch_object等

0

你做了錯誤的使用mysql_fetch_array

返回的行數
$departmentsql="SELECT department FROM staff_table"; 
$departmentsqlresult=mysql_query($departmentsql); 
$departmentcount=mysql_fetch_array($departmentsqlresult); 
if($departmentcount[0] == "A"){ 
header("location:departmentA.php"); 
} 
else if($departmentcount[0] == "B"){ 
header("location:departmentB.php"); 
} 
else if ($departmentcount[0] == "C"){ 
header("location:departmentC.php") 
}