我无法将用户数据与button
操作相关联,以打开格式为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
的内容。这使用javascript
打开窗口并在单击按钮后显示报告
<?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");
}
这个好消息是会话得到正确建立,报告显示在新窗口中。
坏消息是只打开表中最后一个结果的报告。所有其他按钮也只打开上一个报告。
我需要帮助的地方(我认为)是如何将从查询中提取的每个用户名与每个按钮对齐,点击时启动该用户名唯一的会话,这样我就可以只提取他们的报告,而不是页面的最后结果。
我认为我需要隐藏表格中的用户名,然后以某种方式在每个按钮上使用隐藏的信息......但那就是我被卡住的地方。
非常感谢任何帮助
编辑:这是我的最新代码......我仍然无法开始工作。的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');
?>
编辑2:我已经开始尝试将每个$行[&#39;用户名&#39;]分配给离散值。我已经提出以下内容为每行指定一个唯一的名称,但我仍然在寻找一种方法,将每个唯一名称与表格中每行末尾生成的每个按钮相关联。
<?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>
答案 0 :(得分: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");
}
<强> planner.php 强>
使用$_GET["u"]
从查询字符串中获取用户名,并使用检索到的值设置会话。
从planner.php文件中的查询字符串设置会话的示例。
$username = $_GET["u"];
$_SESSION['username'] = $username;
希望有所帮助。
答案 1 :(得分:1)
我要感谢Jako带领我走正确的道路。我在回复中遗漏的关键是在json_encode
中包含javascript
,因为我将变量从PHP
转换为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>
var username = <?php echo json_encode($username); ?>;
function getPlanner(username) {
var plan = window.open("../php/planner.php?pln=" + username);
}
</script>
这里是使用search.php中的用户名特定信息的 planner.php 的顶部。
<?php
session_start();
$username = $_GET["pln"];
$_SESSION['username'] = $username;
if($_SESSION['username'] != true) {
header("Location: ../access_denied.html");
}
require_once('../php/connect.php');
?>