2011-12-20 61 views
-2

tl,dr: if(isset($ _ SESSION [“school”]))== true,那么它工作,否则它不会。

因此,在我的首页上,如果用户决定需要更多关于其本地分支的信息,则会出现一个设置$ _SESSION [“school”]的下拉菜单。然后,我想确保他们在注册期间设置正确。所以,我有一个下拉菜单,显示$ _SESSION [“school”](如果存在),然后显示下面的所有分支以防万一需要更改。当$ _SESSION [“school”]不存在时,我希望它只显示学校列表,并忽略$ _SESSION [“school”]。

但是,如果设置了任何$ _SESSION [“school”],那么即使您在注册过程中更改了下拉选项,该信息也会将其发送到数据库。如果没有设置$ _SESSION [“school”],则即使在注册期间设置该信息,该信息也不会将其记录到数据库中。更有趣的是,我对这个空白进行了验证,这意味着该页面正在识别菜单!=“”......如果$ _SESSION [“school”]没有找到数据库的信息,先前已设置。我认为下面的代码是相关的代码,因为这是我使用$ _SESSION [“school”]来设置菜单选项的地方,但是如果需要它,我可以发布一些其他代码。

schoolsList.php

<?php 

if(isset($_SESSION['school']) && $_SESSION['school']==true) { 
    echo 
    '<option value="'.$_SESSION["school"].'">'.$_SESSION["school"].'</option>'; 
} 

echo 
'<option value=""></option> 
<option value="Indiana University">Indiana University</option> 
<option value="Purdue University">Purdue University</option>'; 

?> 
在我的形式

<select 
          class="school" 
          id="school" 
          name="school" 
          >'; 

        include "schoolsList.php"; 

       echo 
       '</select>'; 
+1

事实上,它需要2段来解释你想要什么,仍然让我困惑,让我觉得你真的不知道你想要它做什么。请尽量使这个简洁和更清晰。 – 2011-12-20 19:42:34

+0

好吧,第一段是我想要它做的,第二段是它在做什么...我怎么能进一步解释,总之我的菜单只是发送信息到数据库时isset($ _ SESSION [“学校” )== true – radleybobins 2011-12-20 19:43:09

+0

许多问题的问题是它们包含太多业务逻辑。缩小这个问题的问题往往比那些没有问题的问题得到更好的答案。 – Frank 2011-12-20 19:52:41

回答

1
// will always validate to true except when $_SESSION["school"] is not set 
if($_SESSION["school"]) 

这应该离开你的余房,以改善你的代码。

if(isset($_SESSION['school']) && $_SESSION['school']==true) 
{ 
    // do something here 
} 

PHP是非常容许你如何设置变量和类型之间切换,所以这些评估可能会非常棘手。

+1

感谢您撰写改进。我可以看到这将是写出if语句的更好方法。我只是困惑,因为我只是添加一个选项,否则我不会更改表单。但是,添加该选项会强制整个表单发挥作用。 – radleybobins 2011-12-20 20:09:42

相关问题