1

かなり基本的なクラッドアプリケーションのWebサイトがあるという問題があります。テキスト入力があり、ページ上のドロップダウンを選択する編集部分で問題が発生しています。すべてのテキスト入力について、その行のデータベースにすでに存在していた値と等しくすることができるため、edit.phpを調べて一部のフィールドを編集しなくても、値は保持されます。触れなかったフィールドはきれいに拭き取られませんでした。残念ながら、私はJqueryを使用して一部の選択/ドロップダウンにデータを入力しているため、このアプローチは機能しません。

シナリオ例:

私はユーザーです。最初のカテゴリがレストランでサブカテゴリがアメリカ料理で、2番目のカテゴリがホームサービスとサブカテゴリの家の修理であるビジネスを追加します。次に、[保存]ボタンをクリックすると、カテゴリが挿入されます。次に、自分の名前と電話番号をリストに追加するのを忘れたので、リストを編集します。今回は、自分の名前と電話番号だけを挿入し、他のすべてのフィールドは空白のままにします。私が今持っているもので、最初に保存したカテゴリとサブカテゴリは、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>は、DBからプルされたときに、デフォルトの選択された値を現在の値に設定することかもしれないと思います。

これを拡張してみましょう:

 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>";
}

したがって、フォームがロードされると、selectはデフォルトでDBに設定された値になり、再送信された場合は同じ値を渡します。

うまくいけば、それはある程度意味があります!

PS:私は単純な真/偽のエコーにはこの方法を好みます:

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