我发布了完整的代码,但问题出在foreach循环中的按钮上。我已经制作了一个onclick JavaScript函数,但是当我点击按钮时,没有任何反应。有人会给我一个暗示吗?
我确定其余的工作正常。
以下是代码:
</style>
</head>
<body style="background-color:lightgrey;">
<script "text/javascript">
function show_your_message(subject,message){
<?php echo "1" ?>
$_SESSION['subject'] = subject;
$_SESSION['message'] = message;
location.href = 'show_messgae.php';
}
</script>
<?php
require 'db.php';
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
session_start();
$id = $_SESSION['email'];
$sql = "SELECT * FROM account_inbox WHERE inbox_user = '$id'";
$result=mysqli_query($conn,$sql);
$rowcount=mysqli_num_rows($result);
$type_array = array();
$from_user_array = array();
$page_link_array = array();
$message_array = array();
$subject_array = array();
while($row = $result->fetch_assoc()) {
array_push($type_array,$row['type']);
array_push($from_user_array,$row['from_user']);
array_push($page_link_array,$row['page_link']);
}
$sql = "SELECT * FROM private_messages WHERE to_user = '$id'";
$result=mysqli_query($conn,$sql);
while($row = $result->fetch_assoc()) {
array_push($message_array,$row['message']);
array_push($subject_array,$row['subject']);
}
include 'header.php';
if (isset($_SESSION["email"]) && !empty($_SESSION["email"])) {
?>
<section id="middle_table">
<div class='post feed'>
<div class="wrapper">
<table>
<tr>
<th>from</th>
<th>message type</th>
<th>Go to message</th>
</tr>
<?php foreach (range(0, $rowcount - 1) as $i): ?>
<tr>
<td><?php echo $from_user_array[$i]; ?></td>
<td><?php echo $type_array[$i]; ?></td>
<td><button onclick="show_your_message('<?php
echo $subject_array[$i]; ?>','<?php echo $message_array[$i]; ?>') "> Click to open</button></td>
</tr>
<?php endforeach; ?>
</table>
<div class="wrapper">
<input type="button" class="button" value="Next" style="float: right; cursor: pointer;">
<input type="button" class="button" value="Previous" style="float: right; cursor: pointer;">
</div>
</div>
</div>
</section>
</body>
</html>
<?php }
else {
echo "<h1> You are not logged in </h1>";
} ?>
答案 0 :(得分:1)
在尝试执行此操作时,无法使用JavaScript设置PHP变量:
function show_your_message(subject,message){
<?php echo "1" ?>
$_SESSION['subject'] = subject;
$_SESSION['message'] = message;
location.href = 'show_messgae.php';
}
这应该抛出错误消息(检查您的浏览器的控制台),因为您甚至没有将SESSION值放在PHP标记中。
为了从JavaScript设置SESSION变量,您必须使用AJAX将值发送到PHP脚本进行处理。请记住,远程设置SESSION变量可能会有问题,因为这些变量不会像您期望的那样反映在当前页面中,除非您在设置后重新加载当前页面。
另一种方法是进行页面重新加载(不需要JavaScript),在其中设置SESSION值。
答案 1 :(得分:1)
对Jay said的内容进行了扩展,并考虑到我认为您正在尝试完成的内容,您可以用以下内容替换您的javascript函数:
function show_your_message(subject,message){
location.href = "show_message.php?subject=" + subject + '&message=' + message;
}
在show_message.php
中,您可以从查询字符串中获取值并将其设置在PHP文件中。
根据主题和消息的大小,查询字符串可能不是一个好主意。