【问题标题】:Display the item selected by specific user in status page for that specific user在特定用户的状态页面中显示特定用户选择的项目
【发布时间】:2017-08-09 08:44:27
【问题描述】:

请问如何显示基于信息的用户名?我的意思是当我登录时,它会引导我选择数据页面。我的选择数据页面有用户名、姓名和日期。名称是微调器中项目的名称,我将这些项目放在微调器中。例如,用户名 john 在 spinner 中选择项目 1,它将发送到数据库。然后当进入状态页面时,它只会在 John 帐户中显示 John 选择的项目。与其他帐户一样,在他们的帐户中只会显示他们自己选择的项目。 以下是我的选择项 php:

<?php 

if($_SERVER['REQUEST_METHOD']=='POST'){

    //Getting values
    $username = $_POST['username'];

    $name = $_POST['name'];
    $date = $_POST['date'];
    //Creating an sql query
    $sql = "INSERT INTO Selection (username, name, date) VALUES 
    ('$username','$name', '$date')";

    //Importing our db connection script
    require_once('dbConnect.php');

    //Executing query to database
    if(mysqli_query($con,$sql)){
        echo 'Selected Successfully';
    }else{
        echo 'Sorry, You Already Select this item';
    }

    //Closing the database 
    mysqli_close($con);
}
?>

查看状态php:

<?php 
//Importing Database Script 
require_once('dbConnect.php');

//Creating sql query
$sql = "SELECT * FROM Selection";

//getting result 
$r = mysqli_query($con,$sql);

//creating a blank array 
$result = array();

//looping through all the records fetched
while($row = mysqli_fetch_array($r)){

    //Pushing name and id in the blank array created 
    array_push($result,array(
                    "id"=>$row['id'],
                    "username"=>$row['username'],
                    "name"=>$row['name'],
                    "date"=>$row['date']
                    )   
            );
}

//Displaying the array in json format 
echo json_encode(array('result'=>$result));

mysqli_close($con); 
?>

我正在使用 localhost 和 phpmyadmin。

Selection 的表结构如下:-

id - primary key Not Null
username NOT NULL,
name NOT NULL,
date NOT NULL,
ALTER TABLE `Selection` ADD UNIQUE `unique_index`(`username`, `name`);

【问题讨论】:

  • 如果可能,请也分享您的表结构。
  • 您之前参加过会议吗?
  • @ManojShukla 我已经在我的问题中更新了我的表结构,请检查谢谢。
  • @Jok3r 我不使用会话
  • 从您的问题中,我了解到您想要用户从数据库中选择的特定项目吗?

标签: php mysql mysqli


【解决方案1】:

由于您没有提到 Spinner 和选择表的架构,假设您是一个简单的案例,解决方案将如下所示..

  1. 当用户登录时,将其捕获为username(通常将其存储在会话中,直到他/她退出)。
  2. 在您的 Status.php 中,您的查询将是

    Select * from Selection where username = '$YOUR_USER_NAME_FROM_SESSION_HERE';
    

根据您的要求,这应该足够了。

注意:直接在查询中使用变量会导致 SQL 注入的暴露。为防止Sql注入,也请参考this answer

【讨论】:

  • 那意味着需要使用会话?
  • 这取决于你......如果你不熟悉会话,你可以避免它们,但这是一个非常糟糕的做法。但是,没有会话的方法很简单。当用户提交表单以登录您的应用程序时,也将其用户名复制到其他变量中,并在您的查询中使用它,但是当您需要浏览您的应用程序时,您将不得不将该变量从一个页面传递到另一个页面。这很乏味,但对于单页或两页应用程序来说很好。
【解决方案2】:

当用户登录时使用$_SESSION["name"] = "$username"; 设置会话 现在会话已设置,然后您可以从您检索会话的视图页面中的任何位置访问会话变量 $user= $_SESSION["name"].

现在您从数据库中获取项目 喜欢

$sql = "SELECT * FROM Selection where username='$user'";

试试看

【讨论】:

  • $_SESSION["name"] = "$username";只放入选择页面?
  • 你在哪里登录检查,在那个页面?放在那里并将用户名存储到名称变量。你能把你的登录代码贴在这里吗
  • 因为我用的是facebook登录
  • 登录成功,你的代码中的那个条件对吗?
  • 我在android studio中写的那个
猜你喜欢
  • 2016-05-16
  • 2017-07-28
  • 1970-01-01
  • 1970-01-01
  • 2021-03-18
  • 2020-08-20
  • 2018-03-27
  • 1970-01-01
  • 2019-08-12
相关资源
最近更新 更多