PHP IF ELSE-IF似乎被忽略了?
我有点不懂PHP,如果这是一个愚蠢的问题,很抱歉,但我自己无法解决这个问题,因此非常感谢您的帮助 我正在尝试为events web应用程序创建修改页面。除了我尝试验证最终的if/else语句外,它似乎正在工作。 此语句返回$row[0]的值,并检查其==NULL。如果为空,则应向用户返回回显“此事件不存在”,如果有值,则向用户提供一个文本框矩阵,用户可以在其中更改数据 目前,当发现数据时,else语句可以正常工作,但如果没有数据,则无法识别原始语句。再加上这一点,页面底部的页脚消失了 这里是代码的主体,我已经强调了问题区域。我知道可能有一种更有效的方法来做这一切,但请保持简单,因为我还在学习。再次感谢。丹PHP IF ELSE-IF似乎被忽略了?,php,mysql,html,Php,Mysql,Html,我有点不懂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进行错误捕获,这样看起来更具语义。