1

我有一个问题,我有一个相当基本的 crud 应用程序网站。我在编辑部分遇到问题,我有文本输入并在页面上选择下拉菜单。对于所有文本输入,我可以使该值等于数据库中该行已经存在的值,因此,如果我通过 edit.php 并且不编辑某些字段,该值仍然保留并且没有为我没有接触过的领域擦干净。不幸的是,我使用 Jquery 来填充一些选择/下拉菜单,所以这种方法不起作用。

示例场景:

我是一个用户,添加一个企业,第一个类别是餐厅,子类别是美国食品,第二个类别是家庭服务,子类别是家庭维修。然后我点击“保存”按钮并插入我的类别。然后我意识到我忘记将我的姓名和电话号码添加到我的列表中,所以我编辑列表,这次只插入我的姓名和电话号码,并将所有其他字段留空。有了我现在所拥有的,我第一次保存的类别和子类别现在要么设置为 0,要么设置为空白。

我对此的解决方案是填充一些隐藏字段(命名为 beforecat1、beforesubcat1 等),这些字段存储了之前字段的值,然后如果未触及选择,则插入隐藏字段的值。不幸的是,有些东西不起作用。

<? 
include('../config.php'); 
if (isset($_GET['id']) ) { 
   $id = (int) $_GET['id']; 
   if (isset($_POST['submitted'])) { 
       foreach($_POST AS $key => $value) { $_POST[$key] = mysql_real_escape_string($value); }

   if(isset($_REQUEST['cselect1'])){
       $cselect1 = $_REQUEST['cselect1'];
       $query="SELECT cat FROM cat WHERE id='$cselect1'";
       $result = mysql_query ($query);
       while($catselect=mysql_fetch_array($result)){
           $catselect1 = $catselect['cat'];
       }
   } else {
   $catselect1 = $_REQUEST['beforecat1'];
   }
   if(isset($_REQUEST['cselect2'])){
   $cselect2 = $_REQUEST['cselect2'];

   $query="SELECT cat FROM cat WHERE id='$cselect2'";
   $result = mysql_query ($query);
   while($catselect=mysql_fetch_array($result)){
      $catselect2 = $catselect['cat'];
   }
   } else {
   $catselect2 = $_REQUEST['beforecat2'];
   }
   if(isset($_REQUEST['cselect3'])){
   $cselect3 = $_REQUEST['cselect3'];

   $query="SELECT cat FROM cat WHERE id='$cselect3'";
   $result = mysql_query ($query);
   while($catselect=mysql_fetch_array($result)){
   $catselect3 = $catselect['cat'];
   }
   } else {
   $catselect3 = $_REQUEST['beforecat3'];
   }

   $sql = "UPDATE `company` SET  `name` =  '{$_POST['name']}' ,  `phone` =  '{$_POST['phone']}' ,  `cat1` =  '$catselect1' ,  `cat2` =  '$catselect2' ,  `cat3` =  '$cselect3' ,  `zipcode` =  '{$_POST['zipcode']}' ,  `city` =  '{$_POST['city']}' ,  `address` =  '{$_POST['address']}' ,  `address2` =  '{$_POST['address2']}' ,  `website` =  '{$_POST['website']}' ,  `product1` =  '{$_POST['product1']}' ,  `product2` =  '{$_POST['product2']}' ,  `product3` =  '{$_POST['product3']}' ,  `product4` =  '{$_POST['product4']}' ,  `product5` =  '{$_POST['product5']}' ,  `product6` =  '{$_POST['product6']}' ,  `product7` =  '{$_POST['product7']}' ,  `subcat1` =  '{$_POST['sselect1']}' ,  `subcat2` =  '{$_POST['sselect2']}' ,  `subcat3` =  '{$_POST['sselect3']}'   WHERE `id` = '$id' "; 
   mysql_query($sql) or die(mysql_error());

   $sql = "UPDATE `company_secondary` SET  `company_description` =  '{$_POST['description']}' ,  `since` =  '{$_POST['since']}' ,  `smoking` =  '{$_POST['select3']}' ,  `delivery` =  '{$_POST['select5']}' ,  `alcohol` =  '{$_POST['select6']}' ,  `kids` =  '{$_POST['select1']}' ,  `wheelchair` =  '{$_POST['select2']}' ,  `twitter` =  '{$_POST['twitter']}' ,  `facebook` =  '{$_POST['facebook']}' ,  `youtube` =  '{$_POST['youtube']}' ,  `premium` =  '{$_POST['premium']}' ,  `creditcards` =  '{$_POST['select4']}' ,  `outdoor` =  '{$_POST['select7']}' ,  `featured` =  '{$_POST['featured']}' ,  `shortdesc` =  '{$_POST['shortdesc']}' WHERE company_id = '$id' "; 
   mysql_query($sql) or die(mysql_error());

   echo "Edited Row<br/>";
   echo "<a href='allbiz.php'>Back To Listing</a>"; 
} 

$row = mysql_fetch_array (mysql_query("SELECT * FROM companyWHERE id= '$id'"));

?>

这是我的表格的一部分:

<form action='' method='POST'> 
<p><b>Name:</b><br /><input type='text' name='name' value='<?= $row['name'] ?>' /> 
<p><b>Phone:</b><br /><input type='text' name='phone' value='<?= stripslashes($row['phone']) ?>' />
<?php
    $cat1 = stripslashes($row['cat1']);
    $cat2 = stripslashes($row['cat2']);
    $cat3 = stripslashes($row['cat3']);
    $subcat1 = stripslashes($row['subcat1']);
    $subcat2 = stripslashes($row['subcat2']);
    $subcat3 = stripslashes($row['subcat3']);
?>
<input type='hidden' value='<?php echo $cat1;?>' name='beforecat1'/>
<input type='hidden' value='<?php echo $cat2;?>' name='beforecat2'/>
<input type='hidden' value='<?php echo $cat3;?>' name='beforecat3'/>
<input type='hidden' value='<?php echo $subcat1;?>' name='beforesubcat1'/>
<input type='hidden' value='<?php echo $subcat2;?>' name='beforesubcat2'/>
<input type='hidden' value='<?php echo $subcat3;?>' name='beforesubcat3'/>
<p><b>Cat1:</b><br />
<?php
   $query="SELECT * FROM cat";
   $result = mysql_query ($query);
   echo"<select name='cselect1' id='cat1'><option value='0'>Please Select A Category</option>";
   // printing the list box select command
   while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt
        echo "<option value=\"".htmlspecialchars($catinfo['number'])."\">".$catinfo['cat']."</option>";

   }
   echo"</select>";
?>
<?php
   $query="SELECT * FROM subcat";
   $result = mysql_query ($query);
   echo"<select name='sselect1' id='subcat1'><option value=''>Sub Category</option>";
   echo $subcat1;
   echo"'>$sucat1</option>";
   // printing the list box select command
   while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt
       echo "<option value='".htmlspecialchars($catinfo['subcat'])."' class='".$catinfo['catnumber']."'>".$catinfo['subcat']."</option>";
   }

   echo"</select>";
 ?>


 <?php
  $query="SELECT * FROM cat";
  $result = mysql_query ($query);
  echo"<select name='cselect2' id='cat2'><option value='0'>Please Select A Category</option>";
  // printing the list box select command
  while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt
      echo "<option value=\"".htmlspecialchars($catinfo['number'])."\">".$catinfo['cat']."</option>";

  }
  echo"</select>";
 ?>

 <?php
    $query="SELECT * FROM subcat";
    $result = mysql_query ($query);
    echo"<select name='sselect2' id='subcat2'><option value=''>Sub Category</option>";
    echo $subcat1;
    echo"'>$sucat1</option>";
 // printing the list box select command
    while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt
        echo "<option value='".htmlspecialchars($catinfo['subcat'])."' class='".$catinfo['catnumber']."'>".$catinfo['subcat']."</option>";
    }

 echo"</select>";
 ?>

 <?php
 $query="SELECT * FROM cat";
 $result = mysql_query ($query);
 echo"<select name='cselect3' id='cat3'><option value='0'>Please Select A Category</option>";
 // printing the list box select command
 while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt
     echo "<option value=\"".htmlspecialchars($catinfo['number'])."\">".$catinfo['cat']."</option>";

 }
 echo"</select>";
?>
<?php
 $query="SELECT * FROM subcat";
 $result = mysql_query ($query);
 echo"<select name='sselect3' id='subcat3'><option value=''>Sub Category</option>";
 // printing the list box select command
 while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt
 echo "<option value='".htmlspecialchars($catinfo['subcat'])."' class='".$catinfo['catnumber']."'>".$catinfo['subcat']."</option>";
 }

 echo"</select>";
?>

怎么了?感谢大家的帮助,这是困扰我很久的问题。谢谢!

4

1 回答 1

0

我认为您的解决方案可能是将默认的选定值设置为<select>从数据库中提取时的当前值。

让我们展开这个:

 if(isset($_REQUEST['cselect1'])){
   $cselect1 = $_REQUEST['cselect1'];
   $query="SELECT cat FROM cat WHERE id='$cselect1'";
   $result = mysql_query ($query);
   while($catselect=mysql_fetch_array($result)){
       $catselect1 = $catselect['cat'];
   }
  } else {
    $catselect1 = $_REQUEST['beforecat1'];
  }

虽然我不是 100% 确定你在做什么,但看起来你根据提交的 id 获取了一个值,并将 var $catselect1 设置为类别名称?

我们可以使用其中任何一个,但由于问题的关键在于 $catselect1 让我们使用它。

所以在这里,在这个区域:

<?php
$query="SELECT * FROM cat";
$result = mysql_query ($query);
echo"<select name='cselect1' id='cat1'><option value='0'>Please Select A Category</option>";
// printing the list box select command
while($catinfo=mysql_fetch_array($result)){//Array or records stored in $nt
     echo "<option  value=\"".htmlspecialchars($catinfo['number'])."\">".$catinfo['cat']."</option>";

}
echo"</select>";
?>

在您的时间里,我们需要将 $catselect1 值与我认为是您的类别名称进行比较,与 $catinfo['cat'] (这也是一个名称??)并添加如下条件:

if (  $catselect1 == $catinfo['cat'] )
  //this one is selected, because the values match!
  echo "<option default selected value=\"".htmlspecialchars($catinfo['number'])."\">".$catinfo['cat']."    </option>";
} else {
  //do normally
  echo "<option  value=\"".htmlspecialchars($catinfo['number'])."\">".$catinfo['cat']."     </option>";
}

因此,当您的表单被加载时,您的选择将默认为数据库中设置的值,并且如果重新提交它们将传递相同的值。

希望这有点道理!

PS:对于简单的真/假回声,我更喜欢这种方法:

 echo ( $comparison == $comparison ) ? 'true' : 'false';
于 2012-07-31T01:25:49.360 回答