【问题标题】:Some elseif conditions一些 elseif 条件
【发布时间】:2014-04-19 12:23:26
【问题描述】:

只是想知道是否有人可以帮助我处理此代码。我看不出哪里出错了。

case "3":

  echo "
  <h2 align=\"center\">Arbeidstid - Start/Stop</h2>";
    $today = date("Y-m-d H:i:s"); 
    $userid = $_COOKIE['userid'];  

    echo "<form action=\"index.php?fid=3\" method=\"post\">";

    if (isset($_POST['today'])) {

        if (isset($_COOKIE['wstart'])) { 
            $query=$oDB->Prepare("UPDATE workhours SET stop=:today WHERE userid=:userid"); 
            unset($_COOKIE['wstart']);
            setcookie('wstart', '', time() - 3600); //delete or reset cookie
        }
        else {  
            $query=$oDB->Prepare("INSERT INTO workhours (userid, start) VALUES (:userid, :today)");
            setcookie("wstart", $time, time()+96000);           
        }
            $query->execute(array(':userid' => $userid, ':today' => $today));       
            header("location:index.php");   

        if (!$query) {
            echo "\nPDO::errorInfo():\n";
            print_r($oDB->errorInfo());
        }       
    } 
    else {
        if (isset($_COOKIE['wstart'])) { 
            echo "<input type=\"hidden\" name=\"today\" value=\"$today\"><input type=\"submit\" value=\"stop\" />"; 
        }
        else { 
            echo "<input type=\"hidden\" name=\"today\" value=\"$today\"><input type=\"submit\" value=\"start\" />";
        }
    }
    echo "</form>";
    break;

如果设置了 cookie wstart,它应该显示一个停止按钮,如果没有设置,则该按钮应该显示开始。

停止按钮将执行与开始不同的查询,因为我希望数据值进入停止列,开始值进入开始列。发生的事情是一直显示开始按钮。

除了删除 COOKIE 部分之外几乎可以使用的更新代码

case "3":

  echo "
  <h2 align=\"center\">Arbeidstid - Start/Stop</h2>";
    $today = date("Y-m-d H:i:s"); 
    $userid = $_COOKIE['userid'];  

    echo "<form action=\"index.php?fid=3\" method=\"post\">";

    if (isset($_POST['today'])) {

        if (isset($_COOKIE['wstart'])) { 
            $query=$oDB->Prepare("UPDATE workhours SET stop=:today WHERE userid=:userid ORDER BY start DESC LIMIT 1"); 
            unset($_COOKIE['wstart']);
            setcookie('wstart', null, -1, '/'); //delete or reset cookie
        }
        else {  
            $query=$oDB->Prepare("INSERT INTO workhours (userid, start) VALUES (:userid, :today)");
            setcookie("wstart", $today, time()+96000);          
        }
            $query->execute(array(':userid' => $userid, ':today' => $today));       
            header("location:index.php");   

        if (!$query) {
            echo "\nPDO::errorInfo():\n";
            print_r($oDB->errorInfo());
        }       
    } 
    elseif (!isset($_POST['today'])) {
        if (isset($_COOKIE['wstart'])) { 
            echo "<input type=\"hidden\" name=\"today\" value=\"$today\"><input type=\"submit\" value=\"stop\" />"; 
        }
        else { 
            echo "<input type=\"hidden\" name=\"today\" value=\"$today\"><input type=\"submit\" value=\"start\" />";
        }
    }

    else { echo "yeah yeah";}
    echo "</form>";
    break;

感谢阅读!

【问题讨论】:

  • 如果设置了今天的 post 变量,您将永远不会显示按钮,除非它没有设置
  • 是执行 sql 查询,但如果它没有设置,它将进入一个新的 if elseif,它应该根据 cookie 显示开始或停止按钮 - wstart 已设置。
  • 重点,确定今天的变量没有设置?
  • 删除时取消设置 cookie。尝试根据此规则取消设置 stackoverflow.com/questions/686155/remove-a-cookie ,因为我认为 cookie 将始终设置
  • 我虽然 cookie 检查 else 语句是否应该能够检测到 cookie。如果有 cookie,则应该出现“停止”按钮。

标签: php if-statement


【解决方案1】:

我认为你这里有一个错误:

    setcookie("wstart", $time, time()+96000);           

如果之前定义了$time,请确保它有一个值,然后再设置到cookie中 $time 没有在任何地方定义,如果你定义它,它会验证 if and' 并输出 'stop' 按钮

【讨论】:

  • 是的,抱歉,这是一个旧变量。我把它改成了 $today
  • 这就是问题所在?
  • 部分是的,谢谢 :),现在我必须处理不会删除的 cookie 并让按钮从停止返回开始 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 2012-02-05
  • 2021-07-11
  • 2015-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多