2016-04-19 48 views
0

我在我的網站上創建一個搜索欄功能,用戶可以使用名稱搜索用戶。搜索結果可能會出現多個用戶名稱相似(例如,如果我搜索「珍娜「,我的數據庫可能有多個用戶名爲」珍娜「,因此會顯示多個結果)。我希望用戶能夠點擊其中一個配置文件並查看特定的」珍娜「用戶配置文件。有點像Twitter,我可以在那裏搜索帳戶並查看不同的配置文件。現在我有代碼返回搜索,並使搜索結果成爲一個可點擊的鏈接。但是,當我嘗試保存用戶標識時,它只保存最新的用戶標識。鏈接到特定的用戶配置文件php

home.php(其中用戶在搜索欄中IS0

<form method="GET" action="search.php" id="searchform"> 
    Search for users: 
    <input type="text" name="search_user" placeholder="Enter username"> 
    <input type="submit" name="submit" value="Search"> 
</form> 

的search.php(打印出用戶名,該用戶搜索)

session_start(); 
$user = ''; 
$password = ''; 
$db = 'userAccounts'; 
$host = 'localhost'; 
$port = 3306; 
$link = mysqli_connect($host, $user, $password, $db); 
mysqli_query($link,"GRANT ALL ON comment_schema TO 'oviya'@'localhost'"); 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 
$search_user = $_GET['search_user']; 
$sql = "SELECT * FROM users WHERE username LIKE '%$search_user%'"; 
$result = mysqli_query($link, $sql); 
if(mysqli_num_rows($result)>0){ 
    while ($row = mysqli_fetch_assoc($result)) { 
     $a = '<a'; 
     $b = ' href="'; 
     $c = 'user_profiles.php'; 
     $d = '">'; 
     $e = $row['username']; 
     $f = '</a'; 
     $g = '>'; 
     $_SESSION['user'] = $row['user_id']; 
     $userID = $_SESSION['user']; 
     echo $a.$b.$c.$d.$e.$f.$g; 
     header("Location: user_profiles.php"); 
    } 
} 

user_profiles.php (應該是顯示特定用戶簡檔的位置,基於用戶用特定用戶ID點擊的鏈接)

session_start(); 
$userID=$_SESSION['user']; 
$link = mysqli_connect('localhost', 'x', '', 'userAccounts'); 
$query="SELECT * FROM dataTable WHERE user_id='$userID'"; 
$results = mysqli_query($link,$query); 
while ($row = mysqli_fetch_assoc($results)) { 
    echo '<div class="output" >'; 
    $entry_id = $row["entry_id"]; 
    $output= $row["activity"]; 
    echo "Activity: "; 
    echo htmlspecialchars($output ,ENT_QUOTES,'UTF-8')."<br>"."<br>"; 
    $output= $row["duration"]; 
    echo "Duration: "; 
    echo htmlspecialchars($output ,ENT_QUOTES,'UTF-8')." hrs"."<br>"."<br>"; 
    $output= $row["date_"]; 
    echo "Date: "; 
    echo htmlspecialchars($output ,ENT_QUOTES,'UTF-8')."<br>"."<br>"; 
    echo '</div>'; 
} 

我得到我的錯誤所在,search.php中的while循環只會保存最新的用戶標識,因此鏈接將始終將我帶到具有該用戶標識的用戶配置文件中。我只是不確定如何實現它,以便當用戶查看配置文件列表時,他們點擊的鏈接將根據用戶標識將它們帶到特定配置文件。

+0

'的print_r($ _ SESSION [ '用戶'])'在個人資料頁ANS發佈它的價值! – Saty

+0

@Oviya Arasu,請檢查我的答案,讓我知道如果它解決您的問題 – Nehal

回答

1

你需要在搜索和user.php的文件做改動:

的search.php:

<?php 
session_start(); 
$user = ''; 
$password = ''; 
$db = 'userAccounts'; 
$host = 'localhost'; 
$port = 3306; 

$link = mysqli_connect($host, $user, $password, $db); 
mysqli_query($link, "GRANT ALL ON comment_schema TO 'oviya'@'localhost'"); 

if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

$search_user = $_GET['search_user']; 

$sql = "SELECT * FROM users WHERE username LIKE '%$search_user%'"; 
$result = mysqli_query($link, $sql); 

if (mysqli_num_rows($result) > 0) { 

    while ($row = mysqli_fetch_assoc($result)) { 
     $id = $row['user_id']; 
     ?> 
     <a href="user_profiles.php?id=<?php echo $id; ?>" > 
      <?php echo $row['username']; ?> 
     </a> 
     <?php 
     $_SESSION['user'] = $row['user_id']; 
     $userID = $_SESSION['user']; 

     header("Location: user_profiles.php"); 
    } 
} 

User_profile。PHP:

$userid = $_GET['id']; 

$link = mysqli_connect('localhost', 'x', '', 'userAccounts'); 
$query = "SELECT * FROM dataTable WHERE user_id='$userid'"; 
$results = mysqli_query($link, $query); 

while ($row = mysqli_fetch_assoc($results)) { 
    echo '<div class="output" >'; 
    $entry_id = $row["entry_id"]; 
    $output = $row["activity"]; 
    echo "Activity: "; 
    echo htmlspecialchars($output, ENT_QUOTES, 'UTF-8') . "<br>" . "<br>"; 
    $output = $row["duration"]; 
    echo "Duration: "; 
    echo htmlspecialchars($output, ENT_QUOTES, 'UTF-8') . " hrs" . "<br>" . "<br>"; 
    $output = $row["date_"]; 
    echo "Date: "; 
    echo htmlspecialchars($output, ENT_QUOTES, 'UTF-8') . "<br>" . "<br>"; 
    echo '</div>'; 
} 
+0

它的工作!非常感謝 –

+0

很高興幫助你! – Nehal

0

首先,您將多個用戶ID保存爲一個字符串。

另一件事,你將它保存在while循環中。

因此,最新值會更新舊值。

就你而言,它將始終保存最後一個值。這是首要問題。

您可以將用戶ID數組並保存在其中。

$userIds = array(); 
while ($row = mysqli_fetch_assoc($result)) { 
     $a = '<a'; 
     $b = ' href="'; 
     $c = 'user_profiles.php'; 
     $d = '">'; 
     $e = $row['username']; 
     $f = '</a'; 
     $g = '>'; 
     $userIds[] = $row['user_id']; 
     $userID = $_SESSION['user']; 
     echo $a.$b.$c.$d.$e.$f.$g; 
     header("Location: user_profiles.php"); 
    } 
$_SESSION['user'] = $userIds; 

而在你user_profiles.php,環陣列上或使用MySQL IN()條件讓所有用戶配置文件。

此外,爲什麼你需要太多的HTML鏈接變量。您可以使用串聯像下面這樣做在單一變量:

$userIds = array(); 
while ($row = mysqli_fetch_assoc($result)) { 
$a = '<a' 
. ' href="'; 
. 'user_profiles.php'; 
. '">'; 
. $row['username']; 
. '</a'; 
. '>'; 
$userIds[] = $row['user_id']; 
$userID = $_SESSION['user']; 
echo $a; 
header("Location: user_profiles.php"); 
} 
$_SESSION['user'] = $userIds; 

另一個錯誤是,你是echo荷蘭國際集團HTML鏈接和做重定向。

這將導致headers already sent...錯誤。

0

這將顯示用戶列表與搜索的字符串

if(mysqli_num_rows($result)>0){ 

    while ($row = mysqli_fetch_assoc($result)) { 
$link="<a href='user_profiles.php?user_id=".$row['user_id']."'>".$row['username']."</a>"; 
    } 
} 

點擊鏈接後會重定向到user_profiles.php(無需頭球衝頂被用於自動重定向。) 在user_profiles.php

session_start(); 
$userID=$_GET['user_id']; 

$link = mysqli_connect('localhost', 'x', '', 'userAccounts'); 
$query="SELECT * FROM dataTable WHERE user_id='$userID'"; 
$results = mysqli_query($link,$query); 

while ($row = mysqli_fetch_assoc($results)) { 
    echo '<div class="output" >'; 
    $entry_id = $row["entry_id"]; 
    $output= $row["activity"]; 
    echo "Activity: "; 
    echo htmlspecialchars($output ,ENT_QUOTES,'UTF-8')."<br>"."<br>"; 
    $output= $row["duration"]; 
    echo "Duration: "; 
    echo htmlspecialchars($output ,ENT_QUOTES,'UTF-8')." hrs"."<br>"."<br>"; 
    $output= $row["date_"]; 
    echo "Date: "; 
    echo htmlspecialchars($output ,ENT_QUOTES,'UTF-8')."<br>"."<br>"; 
    echo '</div>'; 
} 
相關問題