2017-08-04 11 views
0

アクションにユーザーデータを関連付ける際に問題が発生しました。canvasという形式のレポートを開きます。クエリ結果のユーザー固有のデータに基づいてユーザー固有のキャンバスをボタンで開きます

以下のコードは、情報を取得したいユーザーのテーブルを生成するためにインデントされています。私は次何をしたいのか

<?php 

$search = $_POST['search'].'%'; 

//echo($search); 

    $stmt = $link->prepare("SELECT lname, fname, username FROM planner WHERE lname LIKE ?"); 
    $stmt->bind_param('s', $search); 
    $stmt->execute(); 
    $result = $stmt->get_result(); 


if ($result->num_rows > 0) { 
    echo "<table><tr><th>Last Name</th><th>First Name</th><th></th></tr>"; 
    while($row = $result->fetch_assoc()) { 
     echo "<tr><td>".$row['lname']."</td><td>".$row['fname']."</td><td>".$row['username']."</tr>"; 
    } 
    echo "</table>"; 

} else { 
    echo "0 results"; 

} 
?> 

は、彼らの特定のレポートを開きます。各結果の横buttonを追加することです。これらのレポートにアクセスするには、ユーザ名に基づいてsessionを起動する必要があります。ここで私はユーザー名に基づいてsessionを作成するためにこれまでに何を得ているのですか?ボタンが

<?php 

$search = $_POST['search'].'%'; 

//echo($search); 

    $stmt = $link->prepare("SELECT lname, fname, username FROM planner WHERE lname LIKE ?"); 
    $stmt->bind_param('s', $search); 
    $stmt->execute(); 
    $result = $stmt->get_result(); 


if ($result->num_rows > 0) { 
    echo "<table><tr><th>Last Name</th><th>First Name</th><th></th></tr>"; 
    while($row = $result->fetch_assoc()) { 
    $username = $row['username']; 
    $_SESSION['username'] = $username; 
     echo "<tr><td>".$row['lname']."</td><td>".$row['fname']."</td><td><button onClick=getPlanner();>Get Planner</button></td></tr>"; 
    } 
    echo "</table>"; 

} else { 
    echo "0 results"; 

} 
?> 
<script> 
function getPlanner() { 
var plan = window.open("../php/planner.php","height=700,width=1200,menubar=no,toolbar=no"); 
} 

をクリックされたら、これはウィンドウを開き、レポートを表示するjavascriptを使用してこれで良いニュースが正しく確立されますとレポートが新しいウィンドウに表示されたセッションです。

悪い知らせは、テーブルの最後の結果からのレポートだけが開かれていることです。他のボタンはすべて最後のレポートだけを開きます。

私は助けが必要です(私は思う)は、クエリから引っ張られた各ユーザー名を各ボタンに合わせる方法と、そのユーザー名に固有のセッションをクリックして起動すると、ページの最終結果。

私はテーブルのユーザー名を非表示にする必要があると思っています。そして、各ボタンでその隠し情報を何とか使用してください...しかし、それは私が立ち往生する場所です。

これですべてのヘルプは大歓迎です

編集:ここで私はまだ非常に動作させることはできません私の最新のコードは...です。

Search.php:

<?php 

$search = $_POST['search'].'%'; 

//echo($search); 

    $stmt = $link->prepare("SELECT lname, fname, username FROM planner WHERE lname LIKE ?"); 
    $stmt->bind_param('s', $search); 
    $stmt->execute(); 
    $result = $stmt->get_result(); 


if ($result->num_rows > 0) { 
    echo "<table><tr><th>Last Name</th><th>First Name</th><th></th></tr>"; 
    while($row = $result->fetch_assoc()) { 
     $username = $row['username']; 
     echo "<tr><td>".$row['lname']."</td><td>".$row['fname']."</td><td><button onClick=getPlanner('".$username."')>Get Planner</button></td></tr>"; 
    } 
    echo "</table>"; 

} else { 
    echo "0 results"; 

} 
?> 
<script> 
function getPlanner() { 
var plan = window.open("../php/planner.php?pln="+ username,"height=700,width=1200,menubar=no,toolbar=no"); 
} 
</script> 

Planner.php

<?php 
session_start(); 
$username = $_GET["pln"]; 
$_SESSION['username'] = $username; 
echo($_SESSION['username']); 
if($_SESSION['username'] != true) { 
header("Location: ../access_denied.html"); 
} 
require_once('../php/connect.php'); 
?> 

EDIT 2:私は、各$行[ 'ユーザ名']を割り当てるための方法で周りにプレイしました離散値。私は各行に一意の名前を割り当てるために次のものを考え出しましたが、テーブルの各行の最後に生成された各ボタンに各固有の名前を関連付ける方法を探しています。

<?php 

$search = $_POST['search'].'%'; 

//echo($search); 

    $stmt = $link->prepare("SELECT lname, fname, username FROM planner WHERE lname LIKE ?"); 
    $stmt->bind_param('s', $search); 
    $stmt->execute(); 
    $result = $stmt->get_result(); 
    $i=0; 
    $array = array(); 

if ($result->num_rows > 0) { 
    echo "<table><tr><th>Last Name</th><th>First Name</th><th></th></tr>"; 
    while($row = $result->fetch_assoc()) { 
     $i++; 
     $array["username$i"] = $row['username']; 
    echo "<tr><td>".$row['lname']."</td><td>".$row['fname']."</td><td><button onClick=getPlanner();>Get Planner</button></td></tr>"; 
    } 
    $username = $array['username1']; 
    $_SESSION['username'] = $username; 
    echo "</table>"; 

} else { 
    echo "0 results"; 
} 
?> 
<script> 
function getPlanner() { 
var plan = window.open("../php/planner.php"); 
} 
</script> 

答えて

1

私は正しい道を導いてくれたJakoに感謝したい。私が彼の応答から逃した重要なことはjavascriptに変数をPHPから変換していたので、javascriptjson_encodeを含めることでした。

<?php 

$search = $_POST['search'].'%'; 

//echo($search); 

    $stmt = $link->prepare("SELECT lname, fname, username FROM planner WHERE lname LIKE ?"); 
    $stmt->bind_param('s', $search); 
    $stmt->execute(); 
    $result = $stmt->get_result(); 


if ($result->num_rows > 0) { 
    echo "<table><tr><th>Last Name</th><th>First Name</th><th></th></tr>"; 
    while($row = $result->fetch_assoc()) { 
    $username = $row['username']; 
     echo "<tr><td>".$row['lname']."</td><td>".$row['fname']."</td><td><button onClick=getPlanner('".$username."');>Get Planner</button></td></tr>"; 
    } 
    echo "</table>"; 

} else { 
    echo "0 results"; 

} 
?> 
<script> 
var username = <?php echo json_encode($username); ?>; 
function getPlanner(username) { 
var plan = window.open("../php/planner.php?pln=" + username); 
} 
</script> 

ここsearch.phpからユーザー名特定の情報を使用していますplanner.phpのトップです:ここで

search.phpファイル内のコードがあります。

<?php 
session_start(); 
$username = $_GET["pln"]; 
$_SESSION['username'] = $username; 
if($_SESSION['username'] != true) { 
header("Location: ../access_denied.html"); 
} 
require_once('../php/connect.php'); 
?> 
1

私が正しく理解していれば、あなたがgetPlanner関数にユーザー名を渡すと、クエリ文字列パラメータとしてユーザ名を追加することができます。ユーザ名を取得したら、ユーザ固有のレポートを表示する代わりに、planner.phpでユーザ名セッションを設定することができます。

echo "<tr><td>".$row['lname']."</td><td>".$row['fname']."</td><td><button onClick=getPlanner('".$username."');>Get Planner</button></td></tr>"; 

ユーザ名を渡すユーザ名

function getPlanner(username) { 
    var plan = window.open("../php/planner.php?u="+ username,"height=700,width=1200,menubar=no,toolbar=no"); 
} 

プランナーを受け入れます。PHP

$_GET["u"]を使用して、クエリ文字列からユーザー名を取得し、取得した値でセッションを設定します。

planner.phpファイルのクエリ文字列からセッションを設定する例。

$username = $_GET["u"]; 
$_SESSION['username'] = $username; 

希望します。

+0

入力Jakoをありがとう...私は追跡しているか分からない。私はあなたがテーブルとJavaScriptのユーザ名をどのように関連づけているかを見ていますが、$ _GET ["u"]がどのようにセッションを確立しているのか分かりません。 – airider74

+1

@ airider74は答えをもっと明確にするように更新しました。考え方は、クエリ文字列を介してユーザー名を渡してから、代わりにplanner.phpファイルの先頭にセッションを設定することです。 –

+0

私はあなたが今話していることを追跡しています。問題は、ボタンが関連付けられている各テーブルエントリに一意のユーザー名をまだ設定していないことです。 $ username = $ row ['username'];を使用します。 $ _SESSION ['username'] = $ username;上記のコードの2番目のラウンドではそれを行いません。もし私がそれを削除して調整を使用すると、ボタンは機能しません... – airider74

関連する問題