保留输入数据的PHP HTML表单和isset()

时间:2014-03-09 21:46:39

标签: php html mysql

我在使用下面的当前代码时遇到问题。我试图保留用户输入的信息,使用PHP_SELF输入到a和b数据框中,但这不会发生。我想我可能必须在HTML代码中使用某种POST语句,但我不确定。此外,我试图使用isset()来确定是否正在输入BOTH字段,并且它似乎没有工作,因为每次调用die()。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">



 <html>

 <body>
 <form method="post" action="<?php echo $PHP_SELF;?>">

 <table align="center" border="0">
  <tr>
 <td>a:</td>
 <td ><input type="text" VALUE="<?php $a ?>" name="a" size="6" maxlength="6"></td>
  </tr>
 <tr>
 <td>b:</td>
 <td ><input type="text" VALUE="<?php $b ?>" name="b" size="10" maxlength="10"></td>
 </tr>
  <tr>
 <td colspan="2" align="center"><input type="submit" value="Submit Order"></td>
  </tr>
 </table>

 </form>

 <?php 
if(isset($_POST['a']) && isset($_POST['b'])){


 $a = $_POST['a'];
 $b = $_POST['b'];

 $query = "SELECT * FROM DATA WHERE $a = DATA1 $b = DATA2";


 $name= mysql_query($query) or die();

 echo '<table border = 1>';

 while($row = mysql_fetch_assoc($name)) 
 {
echo '<tr>';
foreach($row as $cvalue) {
    print '<td>'.$cvalue.'</td>';
}
echo '</tr>';
}
echo '</table>';


}



?>

1 个答案:

答案 0 :(得分:0)

我会查看您的代码并查看我找到的内容。没有承诺。我可能找不到问题,但我可能会以其他方式提供帮助。

  <tr>
 <td>a:</td>
 <td ><input type="text" VALUE="<?php $a ?>" name="a" size="6" maxlength="6" /></td>
  </tr>
 <tr>
 <td>b:</td>
 <td ><input type="text" VALUE="<?php $b ?>" name="b" size="10" maxlength="10" /></td>
 </tr>
  <tr>
 <td colspan="2" align="center"><input type="submit" value="Submit Order" /></td>
  </tr>

您应该自行关闭输入标记(使您更接近XHTML标准)。此外,<input>控件中的PHP格式不正确。这些陈述应该是这样的:

<td ><input type="text" VALUE="<?php echo Sa; ?>" name="a" size="6" maxlength="6" /></td>  // echo() statements!
<td ><input type="text" VALUE="<?php echo Sb; ?>" name="a" size="6" maxlength="6" /></td>
<td ><input type="text" VALUE="<?php echo Sc; ?>" name="a" size="6" maxlength="6" /></td>

<?php  if(isset($_POST['a']) && isset($_POST['b'])){

或者,如果您只想调用isset()

 <?php 

if(isset($_POST['a'], $_POST['b'])){

PHP Manual: isset()

 $query = "SELECT * 
             FROM DATA 
            WHERE $a  = 'DATA1' AND $b = 'DATA2'";

如果字段$ a和$ b引用字符串值,请确保正确引用了查询字符串。 但是,由于$ a和$ b是用户输入的内容,我相信你有点倒退。

 $query = "SELECT * 
             FROM DATA 
            WHERE DATA1 = '$a' 
              AND DATA2 = '$b'";
啊,现在这更有意义了。如果DATA1和DATA2字段引用整数(int值),则查询将如下所示

$ query =“SELECT *              从数据             在哪里DATA1 = $ a               AND DATA2 = $ b“;

至于以下代码片段...您没有使用$ cvalue作为关联数组。 PHP Manual: mysql_fetch_assoc()

如果您只想要值(而不是键和值),可以使用mysql_fetch_array()

while($row = mysql_fetch_assoc($name)) 
{
    echo '<tr>';
    foreach($row as $cvalue) 
    {
        print '<td>'.$cvalue.'</td>';
    }
}

    echo '</tr>';
}

......这可能会对你有所帮助。

while($row = mysql_fetch_array($name)) 
{
    echo '<tr>';
    foreach($row as $cvalue) //Now you are cooking with gas.
    {
        echo '<td>'.$cvalue.'</td>';
    }
    echo '</tr>';
}

如果您有时间更改代码,请给mysqli函数一个机会。 PHP Manual: MySQLi

希望这不是太残酷。只是想帮忙。 : - )