最好不要用完列表索引(Best way not to run out of list index)
假设我有2D列表,我想检查前一个/下一个元素是否等于某个东西。 确保我不会访问
list[-1][-1]
或list[len + 1][len + 1]
什么?这是我正在尝试做的一个例子:
if list[y + 1][x] == value and list[y - 1][x] == value: do something elif list[y][x + 1] == value and list[y][x - 1] == value: do something else ... # end so on
除了做以下事情,我看不到任何其他选项:
if y - 1 > 0 and y + 1 < len(list) and x - 1 > 0 and x + 1 < len(list[y]):
哪个看起来不对......
Let's say I have 2D list and I want to do a check if previous/next element equals something. What is the best way to make sure that I will not access
list[-1][-1]
orlist[len + 1][len + 1]
?Here's an example of what I'm trying to do:
if list[y + 1][x] == value and list[y - 1][x] == value: do something elif list[y][x + 1] == value and list[y][x - 1] == value: do something else ... # end so on
I can't see any other options except for doing:
if y - 1 > 0 and y + 1 < len(list) and x - 1 > 0 and x + 1 < len(list[y]):
Which doesn't seem right...
原文:https://stackoverflow.com/questions/11813574
最满意答案
假设用户的名称存储在名为
name
的数据库列中,您可以将此值保存到会话变量并将其显示给用户,如下所示:登录代码:
<?php if(isset($_POST['login'])){ include("koneksi.php"); $username = $_POST['username']; $password = md5($_POST['password']); $level = $_POST['level']; $query = mysqli_query($koneksi, "SELECT * FROM users WHERE username='$username' AND password='$password'"); if(mysqli_num_rows($query) == 0){ echo '<div class="alert alert-danger">Upss...!!! Login gagal.</div>'; }else{ $row = mysqli_fetch_assoc($query); if($row['level'] == 1 && $level == 1){ $_SESSION['username']=$username; $_SESSION['level']='admin'; $_SESSION['name']=$row['name']; header("Location: user.php"); }else if($row['level'] == 2 && $level == 2){ $_SESSION['username']=$username; $_SESSION['level']='dosen'; $_SESSION['name']=$row['name']; header("Location: user.php"); }else if($row['level'] == 3 && $level == 3){ $_SESSION['username']=$username; $_SESSION['level']='mahasiswa'; $_SESSION['name']=$row['name']; header("Location: user.php"); }else{ echo '<div class="alert alert-danger">Upss...!!! Login gagal.</div>'; } } } ?>
显示代码:
<div class="login"> <p>Login Succes</p> <p>Username: <?php echo $_SESSION['username']; ?><br> Name: <?php echo $_SESSION['name']; ?><br> Level: <?php echo $_SESSION['level']; ?></p> <p><a href="logout.php" class="btn btn-primary" onclick="return confirm('are you sure?')">Log out</a></p> </div>
现在,如果用户的名称实际存储在2列中,例如
first_name
和last_name
,那么您可以将其保存到会话中,如下所示:$_SESSION['name']=$row['first_name'].' '.$row['last_name'];
Assuming the user's name is stored in a database column called
name
, you could save this value to a session variable and display it to the user like so:Login code:
<?php if(isset($_POST['login'])){ include("koneksi.php"); $username = $_POST['username']; $password = md5($_POST['password']); $level = $_POST['level']; $query = mysqli_query($koneksi, "SELECT * FROM users WHERE username='$username' AND password='$password'"); if(mysqli_num_rows($query) == 0){ echo '<div class="alert alert-danger">Upss...!!! Login gagal.</div>'; }else{ $row = mysqli_fetch_assoc($query); if($row['level'] == 1 && $level == 1){ $_SESSION['username']=$username; $_SESSION['level']='admin'; $_SESSION['name']=$row['name']; header("Location: user.php"); }else if($row['level'] == 2 && $level == 2){ $_SESSION['username']=$username; $_SESSION['level']='dosen'; $_SESSION['name']=$row['name']; header("Location: user.php"); }else if($row['level'] == 3 && $level == 3){ $_SESSION['username']=$username; $_SESSION['level']='mahasiswa'; $_SESSION['name']=$row['name']; header("Location: user.php"); }else{ echo '<div class="alert alert-danger">Upss...!!! Login gagal.</div>'; } } } ?>
Display code:
<div class="login"> <p>Login Succes</p> <p>Username: <?php echo $_SESSION['username']; ?><br> Name: <?php echo $_SESSION['name']; ?><br> Level: <?php echo $_SESSION['level']; ?></p> <p><a href="logout.php" class="btn btn-primary" onclick="return confirm('are you sure?')">Log out</a></p> </div>
Now, if the user's name is actually stored in 2 columns, for example
first_name
andlast_name
, then you could save it to the session like so:$_SESSION['name']=$row['first_name'].' '.$row['last_name'];
相关问答
更多-
像这样更改您的查询。 $sql="SELECT* FROM users INNER JOIN details ON users.id= details.id WHERE users.id ='$loggedin_id' LIMIT 1" ; Change your query like that. $sql="SELECT* FROM users INNER JOIN details ON users.id= details.id WHERE users.id ='$loggedin_id' LIMIT ...
-
如何通过$ _SESSION将$ _POST数组传递给$ _GET?(how to pass the $ _POST array through $ _SESSION to $ _GET?)[2022-06-16]
session_start(); $_SESSION['display_name'] = $_POST['display_name']; 然后是 bar session_start(); $_SESSION['display_name'] = $_POST['display_name']; then later on在开始分配变量会话之前,必须调用session_start() 。 You have to call session_start() before you start assigning variable sessions.因为您使用电子邮件地址设置$_SESSION['uid'] ,然后尝试匹配数据库记录,其中id=email $query = "SELECT * FROM studentdetails WHERE id='".$_SESSION['uid']."'"; 如果您正在分配电子邮件地址,那么您应该尝试将您的选择查询更改为(类似): $query = "SELECT * FROM studentdetails WHERE email='".$_SESSION['uid']."'"; 或者分配用户ID( $_SE ...显示的代码没有明确显示这一点,但我强烈怀疑整个表格是你的form 。 这意味着无论您点击哪个按钮, 都会提交所有值。 对于初学者来说,浏览器不知道你“意味着”哪一个,任何给定的值只会覆盖POST形式的前一个值。 (这解释了你所看到的行为......你总是得到最后的记录。)但是,除此之外......为什么? 当您真正需要所选记录的单个标识符时,为什么要提交所有数据 ? 对于表中的每一行,放置一个完整的自包含form 。 像这样的东西: