2016-03-31 54 views
1

我有一個表單,用戶輸入他們的名字和姓氏。我想檢查他們的全名是否存在於我的CSV文件中,我用它來存儲我表格的所有當前成員/用戶。數據存儲的格式是firstname,lastname。如果他們在場,我想打印出You are already a member在CSV文件中查找失敗

但是,當我運行我的代碼時,這不是我在輸出中看到的。即使輸入了存在於CSV文件中的名稱,也不會輸出。

這裏是我的源代碼:

$JLMembers = Array(); 

// Open the file of Members 
if ($handle = fopen("JLMembers.csv", "r")) { 
    // Get the next CSV line 
    while ($data = fgetcsv($handle, 1000, ",")) { 

     // Add that line to the array 
     array_push($JLMembers, $data); 
    } 
} 

foreach($JLMembers as $JLMember) { 
    $FirstName = $_GET['FirstName']; 
    $CurrentMemberFirstName = $JLMembers[0]; 

    if ($FirstName === $CurrentMemberFirstName) { 

     foreach($JLMembers as $JLMember) { 
      $SecondName = $_GET['LastName']; 
      $CurrentMemberSecondName = $JLMembers[1]; 

      if ($SecondName === $CurrentMemberSecondName) { 
       print "<br>You are already a member<br>"; 
      } 
     } 
    } 
} 
+0

發佈一些代碼也許... – vove

+0

請發表您的代碼和一些樣本數據來重現問題。 –

+3

歡迎來到Stack Overflow! [請不要將您的代碼作爲圖像發佈。](http://meta.stackoverflow.com/q/285551/3933332) – Rizier123

回答

2

您使用$JLMembers[0],其中包含了CSV,當你應該使用$JLMember[0],其中包含在當前行的第一列的第一行foreach循環。而且你不需要兩個循環,只需要在一個循環中比較兩個列。

的代碼應該是:

$FirstName = $_GET['FirstName']; 
$LastName = $_GET['LastName']; 
foreach ($JLMembers as $JLMember) { 
    if ($FirstName == $JLMember[0] && $LastName == $JLMember[1]) { 
     echo "<br>You are a member<br>"; 
     break; // Exit the loop once we found a match 
    } 
} 
+0

謝謝!現在我需要弄清楚如何阻止它說我是一個成員,當時姓和名都來自兩個不同的人。 – Mintblaze

+0

它不應該那樣做。它只在名稱匹配一行時匹配,而不匹配不同的行。 – Barmar

+0

這是你的嵌套循環的問題,而不是我的代碼。 – Barmar