2016-04-19 13 views
0

私は、ユーザが名前を使ってユーザを検索できるウェブサイト上に検索バー機能を作成しています。検索結果には、複数の結果が表示されます)。ユーザーがプロファイルの1つをクリックし、その特定の "Jenna"のユーザープロファイルを参照できるようにします。 Twitterのようなもので、アカウントを検索してさまざまなプロフィールを表示できます。今、私は検索を返し、検索結果をクリック可能なリンクにするコードを持っています。ただし、ユーザーIDを保存しようとすると、最新のユーザーIDのみが保存されます。ユーザーの検索バーが特定のユーザプロファイルへのリンク

<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をIS0

home.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ループは最新のuserIDのみを保存するので、リンクは常にそのuseriDを持つユーザープロフィールに連れて行きます。私はそれを実装する方法がわからないので、ユーザーがプロファイルのリストを見ると、クリックするリンクがユーザーIDに基づいて特定のプロファイルに移動するようになります。

+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を文字列に保存します。

もう1つのことは、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リンクをINGのとリダイレクトを行っているということです。

これにより、エラーheaders already sent...が発生します。

0

これは、それがuser_profiles.phpないようにリダイレクトされるリンクをクリックした後、検索文字列

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で

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>'; 
} 
関連する問題