Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-If语句,需要更好的解决方案来完成这个简单的任务_Php_Loops_If Statement_While Loop - Fatal编程技术网

PHP-If语句,需要更好的解决方案来完成这个简单的任务

PHP-If语句,需要更好的解决方案来完成这个简单的任务,php,loops,if-statement,while-loop,Php,Loops,If Statement,While Loop,我正在创建一个目录列表,并且正在努力引导一个php if语句在正确的事件上触发 该语句控制两个段落的显示 看起来是这样的: if ($userIsLoggedIn && $_SESSION['accountNum'] == $lstId) { $pageContent .= " <span class='editListing'><a href='/listings/edit/basic/index.php'>Edit Listing

我正在创建一个目录列表,并且正在努力引导一个php if语句在正确的事件上触发

该语句控制两个段落的显示

看起来是这样的:

if ($userIsLoggedIn && $_SESSION['accountNum'] == $lstId)
{   
    $pageContent .= "
    <span class='editListing'><a href='/listings/edit/basic/index.php'>Edit Listing...</a></span>
";
} else {
$pageContent .= "
    <span class='editListing'>Your Listing? <a href='/listings/edit/basic/index.php'>Login to edit...</a></span>
";
}
while ($row = mysql_fetch_array($data)) {
$lstId = $row['id'];
...
其中是存储在mysql表中的任何特定行的字段id的值

现在,假设用户搜索一个返回2个结果的字符串。每个结果都保存在一个容器中,循环使容器重复,每一行结果都是匹配的

容器内部是if语句生效的地方

我基本上想做的是,对于每个列表,用户都会被提示“您的列表?登录编辑”,如果用户选择此链接,他们将被引导到登录页面,一旦登录,他们就能够编辑与其用户帐户相关的列表

但我遇到的问题是,
$lstId
似乎是返回的任何行的任何id,因此基本上,当用户登录到网站时,“编辑列表”一段会显示在每个包含的结果中,即使是与他们的帐户无关的结果。如果用户单击此链接,他们将被引导到可以编辑自己列表的页面

我想要达到的效果是,“编辑列表”一段只会出现在包含他们自己列表的结果中。在其他每一个列表中,该段落将保留为“您的列表,登录编辑”

以下是用于生成每个结果的完整html:

if ($tempVar == 0) {
    $pageContent .= "
    <div class='searchResultS'>
    ";
    if ($total_pgs > 1)
    {
        $pageContent .= "
        <p>$paginator</p>
        ";
    }
}

$pageContent .= "
        <div class='searchResult'>
            <div class='searchResultWrapper'>
";

                if ($lstPage !== "")
                {   
                    $pageContent .= "
                        <span class='moreDetails'><a href='/listings/$lstPage.php'>More Details...</a></span>
                    ";
                }

$pageContent .= "
                    <h3>$lstName</h3>
 ";

                if ($userIsLoggedIn && $_SESSION['accountNum'] == $lstId)
                {   
                    $pageContent .= "
                        <span class='editListing'><a href='/listings/edit/basic/index.php'>Edit Listing...</a></span>
                    ";
                } else {
                    $pageContent .= "
                        <span class='editListing'>Your Listing? <a href='/listings/edit/basic/index.php'>Login to edit...</a></span>
                    ";
                }

$pageContent .= "
                <br style='clear:both; height:0; font-size: 1px; line-height: 0px;' />
                <div class='bizDesc'>
                    <p><span class='listHeadings'>Description:</span>  $lstDesc</p>
                </div>
                <div class='bizAddr'>
                    <p><span class='listHeadings'>Street:</span>  $lstAddress</p>
                    <p><span class='listHeadings'>Town:</span>  $lstArea</p>
                    <p><span class='listHeadings'>Province:</span>  $lstProvince</p>
                    <p><span class='listHeadings'>Post Code:</span>  $lstPostcode</p>
                    <p><span class='listHeadings'>GPS Co-Ords:</span>  $lstGps</p>
                </div>
                <div class='bizCont'>
                    <p><span class='listHeadings'>Contact:</span>  $lstContact</p>
                    <p><span class='listHeadings'>Tel:</span>  $lstTel</p>
                    <p><span class='listHeadings'>Cell:</span>  $lstCell</p>
                    <p><span class='listHeadings'>Fax:</span>  $lstFax</p>
                    <p><span class='listHeadings'>Skype:</span>  $lstSkype</p>
                    <p><span class='listHeadings'>eMail:</span>  <a href='mailto: $lstEmail?subject=Your listing on bergbiz.co.za'>$lstEmail</a></p>
                </div>
            </div>
        </div><!-- end .searchResult -->
";
$tempVar ++;
}
输出:

session var is 10005lst id is 10003session var is 10005lst id is 10004session var is 10005lst id is 10002session var is 10005lst id is 10005

你知道为什么会这样吗?会话变量保持不变,但id变量正在循环?

我要注意的第一件事是if语句使用的是=而不是==,因此对于任何$lstId,它都将返回true。查看是否更改此选项:

$_SESSION['accountNum'] = $lstId
为此:

$_SESSION['accountNum'] == $lstId

无法解决当前问题。

当然,有一个问题如下:

$_SESSION['accountNum'] = $lstId
应该是

$_SESSION['accountNum'] == $lstId

目前,每次运行if语句时,您都将$\u SESSION['accountNum']设置为等于$lstId,因此它自然会匹配并假设用户正确登录并拥有列表。

如果($userIsLoggedIn&&$\u SESSION['accountNum']=$lstId),您的意思是分配$\u SESSION['accountNum']而不是进行比较吗?try==for'$\u SESSION['accountNum']=$lstId';)@Mark,不,当用户通过填写登录表单登录到站点时,会分配会话变量。我想做的是,将他们的帐号与特定列表的id进行比较。是的,不确定这是否是一个打字错误,但它不是$\u会话['accountNum'] == $lstId@codegrabber很抱歉,这是一个输入错误,我试图找到一个解决方案,但它本来是读==,感谢将编辑我的帖子!我的应用程序,脚本是要读a==而不是=。这是在我试图找到解决方案时发生的,我的帖子已被编辑为显示==而不是=。谢谢确定…w当您回显$\u会话['accountNum']循环上下文中的$lstId,用于调试,它显示了什么?看看你粘贴的大块的末尾,有一个结束的大括号,没有在这里反映的开始大括号。你确定你已经粘贴了所有相关的位吗?因为它似乎是从这里没有显示的东西开始循环的…开始大括号被打开了while循环哦,文章前面的while循环?好的,这就是为什么session变量保持不变(检索页面的用户会话没有改变),但是id来自表中所有行的循环。根据您所说的,您应该看到三个“Login to edit”和一个“edit list”,但您看到四个“编辑列表”--我读对了吗?Hecksa,我对由此引起的任何混乱表示歉意,这是一个打字错误,请参阅对其他评论的回复
$_SESSION['accountNum'] == $lstId