PHP IF ELSE-IF似乎被忽略了?

PHP IF ELSE-IF似乎被忽略了?,php,mysql,html,Php,Mysql,Html,我有点不懂PHP,如果这是一个愚蠢的问题,很抱歉,但我自己无法解决这个问题,因此非常感谢您的帮助 我正在尝试为events web应用程序创建修改页面。除了我尝试验证最终的if/else语句外,它似乎正在工作。 此语句返回$row[0]的值,并检查其==NULL。如果为空,则应向用户返回回显“此事件不存在”,如果有值,则向用户提供一个文本框矩阵,用户可以在其中更改数据 目前,当发现数据时,else语句可以正常工作,但如果没有数据,则无法识别原始语句。再加上这一点,页面底部的页脚消失了 这里是代码

我有点不懂PHP,如果这是一个愚蠢的问题,很抱歉,但我自己无法解决这个问题,因此非常感谢您的帮助

我正在尝试为events web应用程序创建修改页面。除了我尝试验证最终的if/else语句外,它似乎正在工作。 此语句返回$row[0]的值,并检查其==NULL。如果为空,则应向用户返回回显“此事件不存在”,如果有值,则向用户提供一个文本框矩阵,用户可以在其中更改数据

目前,当发现数据时,else语句可以正常工作,但如果没有数据,则无法识别原始语句。再加上这一点,页面底部的页脚消失了

这里是代码的主体,我已经强调了问题区域。我知道可能有一种更有效的方法来做这一切,但请保持简单,因为我还在学习。再次感谢。丹

<div class="round">
<div id="main" class="round">

<span class="bold">MODIFY EVENT</span><br /><br />
On this page you can modify or delete the events that are stored on the database.<br />
Be aware that you cannot undo the DELETE function.<br />
<br />
Find Event:<br />
<table>
<form name="form1" id="form1" method="post" action="
<?php echo $_SERVER["PHP_SELF"]; ?>" >
<tr><th>By Date:</td><td><input type="text" name="modifyDate" 
id="modifyDate" value="dd/mm/yy" /></td></tr>
<tr><th>By Name:</td><td><input type="text" name="modifyName" id="modifyName" 
value="" /></td></tr>
<tr><th>Find All:</th><td><input type="checkbox" name="modifyAll" 
id="modifyAll" /><td></tr>
<tr><td></td><td><input type="submit" name="submit" value="Search" /></td></tr>
</form>
</table>

<?PHP


if(!isset($_POST['modify'])){

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

    $moddate = $_POST['modifyDate'];

            If($moddate == "dd/mm/yy"){
        $date = "";
    }
    else{
        $newDate = str_replace("/",".",$moddate);
        $wholeDate = $newDate;
        $dateArray = explode('.', $wholeDate);
        $date = mktime(0,0,0,$dateArray[1],$dateArray[0],$dateArray[2]);
    }

    $name = $_POST['modifyName'];
    $all  = $_POST['modifyAll'];

    $host = "localhost";
    $user = "user";
    $password = "password";
    $db = "database";

    $con = mysql_connect($host,$user,$password) or die('Could not connect to Server');
    $dbc = mysql_select_db($db, $con) or die('Could not connect to Database');

    if($all != 'on'){
        $q = "SELECT * FROM events WHERE date = '$date' || title = '$name' ";
    }
    else{
        $q = "SELECT * FROM events";
    }

    $result = mysql_query($q);
    $row = mysql_fetch_array($result) or die(mysql_error());    

修改事件

在此页面上,您可以修改或删除存储在数据库中的事件。
请注意,您无法撤消删除功能。

查找事件:
如果没有行,则返回
false
,因此即使结果中没有任何内容,也可能返回
false
,并且如果($row[0]==null)
的计算结果也为false,则返回
false

换句话说,您应该对查询的返回结果进行更健壮的测试,以捕获边缘情况

正如其他人提到或暗示的,以下是您可以/应该做的一些事情:

  • 测试返回的行,而不是行中的值
  • 测试变量是否存在,而不是变量的内容
  • 检查数据库是否返回错误
如果没有行,则返回
false
,因此即使结果中没有任何内容,也可能返回
false
,并且如果($row[0]==null)
的计算结果也为false,则您的
也会返回

换句话说,您应该对查询的返回结果进行更健壮的测试,以捕获边缘情况

正如其他人提到或暗示的,以下是您可以/应该做的一些事情:

  • 测试返回的行,而不是行中的值
  • 测试变量是否存在,而不是变量的内容
  • 检查数据库是否返回错误

表中的字段是否将$row[0]从集合中拉至NOTNULL?如果是,它将永远不会是空值。请尝试类似这样的操作(如果为空($row[0])

是否将表中的字段从$row[0]设置为NOTNULL?如果是,它将永远不会是空值。尝试类似的方法(如果为空($row[0])

您可以检查结果行的数量以查看是否存在任何事件:

$result = mysql_query($q);
$numrows = mysql_num_rows ($result);
if($numrows === 0){
...

您可以检查结果行的数量,以查看是否存在任何事件:

$result = mysql_query($q);
$numrows = mysql_num_rows ($result);
if($numrows === 0){
...

是你疯狂的代码格式搞砸了!不是真的。PHP标记不需要大写。此外,这个问题太长了。另外,页脚没有显示的原因是因为您从未关闭标记。可能是其他人。编辑可能不是真的,但无论如何要修复它;)很抱歉问了这么长的问题!我在这样的网站上看到过很多帖子,回答问题的人评论说没有足够的信息来帮助这个人!修复了PHP标记大小写问题(试图区分我的IF-ELSE嵌套)和标记。干杯,伙计们!是你疯狂的代码格式搞砸了!不是真的。PHP标记不需要大写。此外,这个问题太长了。另外,页脚没有显示的原因是因为您从未关闭标记。可能是其他人。编辑可能不是真的,但无论如何要修复它;)很抱歉问了这么长的问题!我在这样的网站上看到过很多帖子,回答问题的人评论说没有足够的信息来帮助这个人!修复了PHP标记大小写问题(试图区分我的IF-ELSE嵌套)和标记。干杯,伙计们!哦,是的,不要空,而是使用==false,我想我没有想过:)没有结果返回false。你也可以倒过来说if($row[0]),然后用else来捕捉错误,这样看起来更语义化。哦,是的,不要空,用==false代替,我想我没在想:)没有结果返回false。您也可以倒过来说if($row[0]),然后使用else进行错误捕获,这样看起来更具语义。