首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >没有显示空记录的表单

没有显示空记录的表单
EN

Stack Overflow用户
提问于 2012-11-26 10:51:41
回答 1查看 116关注 0票数 0

我有一个相对简单的PHP页面,名为编辑器,包含3列。我遇到的问题是,当数据库中有记录时,表单就会显示出来,并且字段中会填充该信息。

当不存在此类记录时,甚至不显示表单,从而消除了插入记录的可能性。

我的页面布局如下:

  • 第1列显示了包含客户信息的表单,允许对其进行编辑。
  • 第2栏允许订购产品并显示订购了多少产品。
  • 第3栏显示迄今支付的总额和欠款总额。

我目前拥有的页面代码:

代码语言:javascript
运行
复制
<html>
<?php
$id = $_GET['id'];
require_once('connect.php');
$sth = $dbh->query("SELECT * FROM users where id = '$id';");
$sth->setFetchMode(PDO::FETCH_ASSOC);
$eth = $dbh->query("SELECT * FROM purchases where id = '$id';");
$eth->setFetchMode(PDO::FETCH_ASSOC);
?>

<div id="main">
    <div id="left">
    <form name="custInfo" action ="process.php" method ="post" >
    <input type = "hidden" name ="formType" value="custInfo"/>
    <?php while($row = $sth->fetch()){ ?>
    <p><input type = "hidden" name ="id" value="<?php echo $row["id"] ?>"/>
    <p><input type = "text" name ="firstName" size ="30" value=" <?php echo $row["firstName"]?>"/>
    <p><input type = "text" name ="lastName" size ="30" value="<?php echo $row["lastName"]?>"/>
    <p><input type = "text" name ="country" size ="30" value="<?php echo $row["country"]?>"/>
    <p></p>
    <input type="submit" value="Update" />
    <?php }?>
    </div>

    <div id="mid">
   <form name="custCosts" action ="process.php" method ="post" >
   <input type = "hidden" name ="formType" value="custCosts"/>
    <?php while($row = $eth->fetch()){ ?>
    <p><input type = "hidden" name ="id" value="<?php echo $row["id"] ?>"/>
    <p><input type = "text" name ="amountOwed" size ="30" value=" <?php echo $row["amountOwed"]?>"/>
    <p><input type = "text" name ="numAaa" size ="30" value="<?php echo $row["numAaa"]?>"/>
    <p><input type = "text" name ="numBbb" size ="30" value="<?php echo $row["numBbb"]?>"/>
    <p></p>
    <input type="submit" value="Update" />
    <?php }?>
    </div>

    <div id="right">
    <b>Total Balance</b>
    <p> Money owed: </p>
    <p> aaa total: </p>
    <p> bbb total: </p>
    <p> Total: </p>
    <input type = "text" name ="pay" size ="20" /></p>
    <input type="submit" value="Make Payment" />
    </div>
<?php
$dbh =null;
?>
</body>
</html>

以及所有数据库欺骗的代码:

代码语言:javascript
运行
复制
<?php
require_once 'connect.php';
$formType = $_POST['formType'];
$id = $_POST['id'];
$firstName = $_POST['firstName'];
$lastName = $_POST['lastName'];
$country = $_POST['country'];
$amountOwed = $_POST['amountOwed '];
$numAaa = $_POST['numAaa'];
$numBbb = $_POST['numBbb'];

if(empty($_POST['id'])) {
$sth = $dbh->prepare("INSERT INTO customers (firstName, lastName, country)
VALUES ('$firstName', '$lastName', '$country')");
$sth->execute();

} elseif(!empty($_POST['id']) && !isset($_POST['stayCost']) && $_POST['formType'] == 'guestInfo'){
$sth = $dbh->prepare("UPDATE customers SET firstName = '$firstName', lastName = '$lastName', country = '$country' WHERE id = '$id'");
$sth->execute();

}elseif(!empty($_POST['id']) && isset($_POST['stayCost']) && $_POST['formType'] == 'guestInfo'){
$sth = $dbh->prepare("INSERT INTO purchases (id, amountOwed, numAaa, numBbb)
VALUES ('$id', '$amountOwed', '$numAaa', '$numBbb'");
$sth->execute();

}elseif(!empty($_POST['id']) && $_POST['formType'] == 'guestCosts'){
$sth = $dbh->prepare("UPDATE purchases SET amountOwed= '$amountOwed', numAaa = '$numAaa', numBbb= '$numBbb' WHERE id = '$id'");
$sth->execute();
}

$dbh =null;
?>

如果没有记录,为什么表单甚至不显示?一个错误或者什么--我可能会understand....but --表单仍然在中,应该仍然是输出的,从我所看到的。为何不是这样呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-26 10:54:22

代码语言:javascript
运行
复制
while($row = $sth->fetch())

这意味着:对于返回的每一行,都要做一些事情。如果没有返回的行,则while中包含的任何内容都不会执行,因此它不会打印任何输入!

您应该在rowCount中包含一个if,如果这等于0打印输入,那么用户就可以填充它们。

代码语言:javascript
运行
复制
<?php while($row = $sth->fetch()){ ?>
    <p><input type = "hidden" name ="id" value="<?php echo $row["id"] ?>"/>
    <p><input type = "text" name ="firstName" size ="30" value=" <?php echo $row["firstName"]?>"/>
    <p><input type = "text" name ="lastName" size ="30" value="<?php echo $row["lastName"]?>"/>
    <p><input type = "text" name ="country" size ="30" value="<?php echo $row["country"]?>"/>
    <p></p>
    <input type="submit" value="Update" />
<?php
   }
   if($sth->rowCount()==0){
 ?>
 <p><input type = "hidden" name ="id" value=""/>
    <p><input type = "text" name ="firstName" size ="30" value=""/>
    <p><input type = "text" name ="lastName" size ="30" value=""/>
    <p><input type = "text" name ="country" size ="30" value=""/>
    <p></p>
    <input type="submit" value="Update" />
<?php } ?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13563342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档