Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于查询结果中的用户特定数据,使用按钮打开用户特定画布_Javascript_Session_Canvas - Fatal编程技术网

Javascript 基于查询结果中的用户特定数据,使用按钮打开用户特定画布

Javascript 基于查询结果中的用户特定数据,使用按钮打开用户特定画布,javascript,session,canvas,Javascript,Session,Canvas,我无法将用户数据与打开在画布中格式化的报告的按钮关联 下面的代码以缩进方式生成我想要从中获取信息的可能用户表 <?php $search = $_POST['search'].'%'; //echo($search); $stmt = $link->prepare("SELECT lname, fname, username FROM planner WHERE lname LIKE ?"); $stmt->bind_param('s', $search)

我无法将用户数据与打开在
画布中格式化的报告的
按钮关联

下面的代码以缩进方式生成我想要从中获取信息的可能用户表

<?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";

}
?>
好消息是会话已正确建立,并在新窗口中显示报告

坏消息是只打开了表中最后一个结果的报告。所有其他按钮也只打开最后一个报告

我需要帮助的地方(我想)是如何将从查询中提取的每个用户名与每个按钮对齐,并在单击时启动该用户名特有的会话,这样我就可以只提取他们的报告,而不是页面的最后结果

我想我需要在表中隐藏用户名,然后在每个按钮上使用隐藏的信息…但这就是我被卡住的地方

在此方面的任何帮助都将不胜感激

编辑:这是我的最新代码…我仍然不能很好地工作

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>

编辑2:我已经尝试过将每个$row['username']分配给一个离散值的方法。我想出了以下方法为每一行指定一个唯一的名称,但我仍在寻找一种方法,现在将每一个唯一的名称与表中每一行末尾生成的每个按钮关联起来

<?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>

函数getPlanner(){
var plan=window.open(“../php/planner.php”);
}

如果我理解正确,您可以将用户名传递给
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

<?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');
?>
使用
$\u GET[“u”]
从查询字符串中获取用户名,并使用检索到的值设置会话

从planner.php文件中的查询字符串设置会话的示例

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

希望对您有所帮助。

如果我理解正确,您可以将用户名传递给
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

<?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');
?>
使用
$\u GET[“u”]
从查询字符串中获取用户名,并使用检索到的值设置会话

从planner.php文件中的查询字符串设置会话的示例

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

希望这能有所帮助。

我要感谢雅科带领我走上正确的道路。我在他的回答中遗漏的关键是在
javascript
中包含
json\u encode
,因为我正在将变量从
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>

我要感谢雅科带领我走上了正确的道路。我在他的回答中遗漏的关键是在
javascript
中包含
json\u encode
,因为我正在将变量从
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>

谢谢你的输入,Jako…我不确定我在跟踪。我知道您是如何将表中的用户名与javascript关联起来的,但我不确定$\u GET[“u”]是如何建立会话的。@airider74更新了答案以使其更清楚。其思想是通过查询字符串传递用户名,然后将会话设置在planner.php文件的顶部;所以应该是一样的。在画布中,只需在设置用户名后在$\u会话['username']上进行回显,即可验证用户名是否正确传递。如果这是有效的,那么这个问题在你的代码中又是一个很长的问题,我无法帮助解决,因为它不是你问题的一部分,所以它不会返回用户名?而是文本“用户名”?确保?u=“+username”未包含在字符串中,而是使用作为参数传递的变量好的,您的预期结果是获得正确的username变量的实际值?因此它应该是变量而不是字符串,但您说使用变量会断开按钮的点击?您能提醒(username)吗;在getPlanner函数中,检查值是否为实际用户名。还要检查按钮单击上的js错误感谢输入Jako…我不确定我是否在跟踪。我知道您如何将表中的用户名与javascript相关联,但我不确定$\u如何获得[“u”]建立会话。@airider74更新了答案以使其更清晰。其思想是通过查询字符串传递用户名,然后将会话设置在planner.php文件的顶部。您正在示例代码$username=$row['username']中设置username变量;所以应该是相同的。在画布中,只需通过在$\u会话['username'上执行回显来验证用户名是否正确传递设置后。如果这样做有效,那么问题在您的代码中会更长,我无法帮助解决,因为它不是问题的一部分,所以它不会返回用户名,而是返回文本“username”?确保?u=“+username不包含在字符串中,而是使用作为参数传递的变量OK,您的预期结果是获得username变量的实际值是否正确?所以应该是变量而不是字符串,但是你说使用变量会破坏按钮的点击?你能提醒(用户名);在getPlanner函数中检查值是否为实际用户名。还可以在单击按钮时检查js错误