0

我希望我能正确描述我的问题。我为自助餐厅创建了一个数据库。这有以下表格:订单、成员 ISA 管理器和服务器、产品和类别。在表订单中,我应该插入相应服务器的标题、数量、日期时间、总和和用户名等特征。我已经设法通过我之前在这个论坛上发布的文件中的 php 来做到这一点(点击链接:将数据从文本框和复选框插入数据库)。

到目前为止的 Web 环境包括:a)index.php、members.php(这些文件负责任何类型的用户的登录和身份验证,无论是管理员还是服务。b)addorder_form.php 和 addorder.php至于订单表格和数据库中订单详细信息的插入。我无法让我的系统为每个订单打印每个服务器的用户名。我试过这样的事情,但我得到了未定义索引用户名的错误:

 <?php
    session_start();
            include_once("buzzcafe_fns.php");
            include_once("members.php");
            do_html_header("");

    $conn = mysql_connect("localhost", "root", "");
    $db=mysql_select_db("buzzcafe" ,$conn);
    db_connect();
    if (isset($_SESSION['username']){
    if (isset($_POST['products'])) {
      if (isset($_POST['quantity'])) { 
           foreach($_POST['products'] as $key => $products){
                $quantity = isset($_POST['quantity'][$key])? $_POST['quantity'][$key]:'Not selected';
                date_default_timezone_set('Europe/Athens');
                $date = date('Y-m-d H:i:s');
                $message[] = $products.' - x'.$quantity;
                $insertOrder = mysql_query("INSERT INTO orders (datetime,title,quantity,username) VALUES('".$date."','".$products."','".$quantity."', '".$_SESSION['username']."')")or die(mysql_error());
                echo $_SESSION['username'];
                }
            }
            echo implode(',', $message);
            echo "<br/>";
            echo "<br />Record inserted";
            echo "<br/>";
            echo $date;
        }
        else { echo "You did not choose a quantity."; }
     }else { echo "You did not choose any product."; }
    }
    ?>

为什么用户名未定义?

members.php 的一部分:

  <?php 
    if (isset($_POST['username']) && isset($_POST['password'])) {
        $username = $_POST['username'];
        $password = $_POST['password'];

        if ((!$username) || (!$password)) {
            do_html_header('');

            echo '<h3 style="color:#800000;">Please fill in both fields</h3><br><br></br></br>';
            display_login_form();
        }       
        else {
        $sql = mysql_query('SELECT * FROM members WHERE username="'.$_POST['username'].'" AND password=sha1("'.$_POST['password'].'")') or die(mysql_error());
        $login_check_member = mysql_num_rows($sql);
        if($login_check_member > 0) {
                 while($row = mysql_fetch_array($sql)) {
                    $role = $row["role"];
                    $_SESSION['role'] = $role;
                    $us = $row["username"];
                    $_SESSION['username'] = $us; 
                    $username = $_SESSION['username'];
                }
            }

我将此文件包含在我的 addorder.php 文件中。

4

1 回答 1

0

可能是因为它没有定义?

似乎人们比任何事情都更关心您的 SQL —— 但这可能会帮助您解决实际问题。

在嵌套条件之前将其放入其中:

if (defined($_SESSION['username'])) {
    echo 'Username is defined!';
}
else {
   die('Username is undefined!');
}
于 2013-09-25T13:25:54.467 回答