【问题标题】:PHP setting session variables on button clickPHP在按钮单击时设置会话变量
【发布时间】:2019-04-17 15:04:27
【问题描述】:

当用户点击 4/6 的“每次发货零食”和每周/每两周/每月的“发货频率”时,一个函数会在按钮上方的右侧显示详细信息。

我是一名新手开发人员,希望在单击“选择您的零食”按钮后将用户选择的任何信息存储为会话变量。在此示例中,我希望每两周存储 4 个。

这是我开始会话时的 PHP 代码

<?php
session_start();

include_once 'dbconnect.php';

if(isset($_POST['choose']))
{

$unit = document.getElementById('unit').innerHTML;
$frequency = document.getElementById('frequency').innerHTML;


// Set session variables
$_SESSION["unit"] = $unit;
$_SESSION["frequency"] = $frequency;

}

?>

这里是按钮相关的代码

<div class="pricing-button" method="POST">
<a href="session.php" class="btn btn-yellow btn-rounded btn-lg"
name="choose" type="submit">Choose Your Snacks</a>
</div>

这是我与抓取用户选择的内容相关的代码

<script>
function change(unit){
document.getElementById('unit').innerHTML = unit;
}

function frequency(frequency){
document.getElementById('frequency').innerHTML = frequency;
}
</script>

这是我正在测试会话变量是否正常工作的地方

 <?php
 session_start();
 ?>
<!DOCTYPE html>
<html>
<body>

 <?php
// Echo session variables that were set on previous page
echo "Customer wants " . $_SESSION["unit"] . "<br>";
echo "This many times " . $_SESSION["frequency"] . "<br>";
?>

【问题讨论】:

  • 我可能对此完全不感兴趣,但是这个 javascript 不是与 php 错误地混合在一起吗? $unit = document.getElementById('unit').innerHTML;
  • div 标签有method="post"?方法是表单的属性。你需要先花时间学习这些语言。你刚刚混合了一切!
  • 你在这里似乎很困惑。 if(isset($_POST['choose'])) 是 PHP,但是你有 $unit (PHP) = document.getElementById('unit').innerHTML; (JavaScript)。你不能像那样挑选语言。
  • Div 方法?一种类型??
  • 正如其他人所说,您正在混合 PHP 和 JavaScript。您可以使用 JavaScript 将这些信息存储为变量并使用 AJAX 提交,或者使用 JS 将这些信息设置为隐藏的 html 表单字段的值属性( ) 然后通过提交按钮或通过 JS 的 form.submit 函数提交包含隐藏输入字段的表单。

标签: php session


【解决方案1】:

在第一个代码中,您混合了 PHP/JS...

提交后,尝试将单位和频率放在同一个表单上。

记住...打开 php.ini

上的 display_errors 指令

【讨论】:

    【解决方案2】:

    需要在页面加载之前分配会话变量。你不能用 JavaScript 来操作它们。您应该将完全确定的结果提交到另一个页面,然后在新页面加载时使用 PHP 获取结果,或者如果您想处理更复杂的事情,请使用 ajax 或其他方式提交。

    您的 PHP 也应该看起来更像这样,因为您最初将它与 JavaScript 混合在一起。

    include_once 'dbconnect.php';
    
    if(isset($_POST['choose']))
    {
    
    $unit = $_POST['unit'];
    $frequency = $_POST['frequency'];
    
    
    // Set session variables
    $_SESSION["unit"] = $unit;
    $_SESSION["frequency"] = $frequency;
    
    }
    
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 2013-04-16
      • 1970-01-01
      • 2016-06-28
      • 2014-02-03
      • 2012-02-06
      • 2013-09-06
      相关资源
      最近更新 更多