2011-06-01 53 views
0

情況是我的程序的目的是更新員工詳細信息。用戶可以選擇他/她想要更新的(姓名,職位,部門和標籤(它告訴他/她是否仍然被僱用到公司))。他或她可能會也可能不會按照他/她的想法填寫所有的細節。換句話說,如果他/她不打算改變某些信息,他/她可能會留空。表更新時用戶沒有輸入任何文本框的空格

我的問題是的更新。它現在正在更新。但是,例如,如果用戶只想更改該員工的職位信息,他/她將留下部門名稱,空白部分。 (標籤默認設置爲yes,因此總是有值)。當用戶點擊提交按鈕時。它更新表但是它將空的文本框更新爲空格。意思是,在這個例子中。在數據庫中,名稱和部門將包含「空格」。

我的目標是,如果用戶離開文本框爲空,原始值應該保留。它只會改變輸入的值。


這裏是我在empinfo.php 使用的代碼(注:這個人是一個彈出時,EMP,從指數來了,但沒有關於這個問題:d)

<body> 
<center> 
<table class="main" border="0" cellpadding="0" cellspacing="0"> 
<form action="empinfo.php" method="POST"> 
<input type='hidden' name='submitted' id='submitted' value='1'/> 
<input type='hidden' name='eid' id='eid' value= '<?php echo $_GET['emp']?>' /> 

<fieldset> 
      <div class='container'> 
       <label for='ename' >Employee name:</label><br/> 
       <input type='text' name='ename' id='ename' maxlength="50" /><br/><br/> 
      </div> 

      <div class='container'> 
       <label for='pos' >Position:</label><br/> 
       <input type='text' name='pos' id='pos' maxlength="50" /><br/><br/> 
      </div> 

      <div class='container'> 
       <label for='dep' >Department/Division:</label><br/> 
       <input type='text' name='dep' id='dep' maxlength="100" /><br/><br/> 
      </div> 

      <div class='container'> 
       <label for='tag' >Employee Tag:</label><br/> 
       <select name="tag" id="tag"> 
        <option value="Y">Yes</option> 
        <option value="N">No</option> 
       </select> <br/><br/> 
      </div> 

      <div class='container'> 
       <input type='submit' name='Submit' value='Submit' /> 
      </div> 
</fieldset> 

</form> 
</div> 
<?php 
$con=mysql_connect('localhost','root','mariel') or die(mysql_error()); 
mysql_select_db('intranet',$con); 
    if(isset($_POST['submitted'])) 
    { 

    $sql = "SELECT * FROM gpl_employees_list where emp_id='".$_POST['eid']."'"; 
    $result = mysql_query($sql) or die (mysql_error()); 
    if(!$result || mysql_num_rows($result) <= 0) 
          {      
           return false; 
          } 

    $qry = "UPDATE gpl_employees_list SET emp_nme = '".$_POST['ename']."', emp_pos = '".$_POST['pos']."', emp_dep = '".$_POST['dep']."', emp_tag = '".$_POST['tag']."' WHERE emp_id = '".$_POST['eid']."' "; 

    mysql_query($qry) or die (mysql_error()); 
?><script>window.close();</script><?php 
     }  
    ?> 
</table> 
<?php mysql_close($con); ?> 
</center> 
</body> 
+0

如果存在價值,你的表格需要使用這些值來填充。除了獲取數據,沒有任何SQL相關... – 2011-06-01 01:12:06

+0

@OMG小馬:你是什麼意思? – MisaChan 2011-06-01 01:13:36

+0

您需要設置HTML表格中的值 – 2011-06-01 01:14:43

回答

0
$col['emp_name'] = (trim($_POST['ename']))?trim($_POST['ename']):false; 
$col['emp_pos'] = (trim($_POST['pos']))?trim($_POST['pos']):false; 
$col['emp_dep'] = (trim($_POST['dep']))?trim($_POST['dep']):false; 
$col['emp_tag'] = (trim($_POST['tag']))?trim($_POST['tag']):false; 
// add a val in $col[] with key=column name for each corresponding $_POST val 

$queryString ="UPDATE `gpl_employees_list` SET "; 
foreach($col as $key => $val){ 
    $queryString .= ($val)?"`".$key."`='".$val."',":""; 
} 
$queryString = substr($queryString ,0 ,strlen($queryString) - 1)." WHERE `emp_id` = '".$_POST['eid']."'"; 
mysql_query($queryString); 
+0

thanks @Babiker!它現在的工作,我只是編輯了一些代碼,但那只是拼寫問題。在孩子/彈出頁面中提交信息後,如何刷新母版? – MisaChan 2011-06-01 01:37:01

+0

@MisaChan - 無法從另一個彈出窗口重新加載窗口。 – Babiker 2011-06-01 01:57:57

+0

哦,這意味着我只需按f5刷新母親的孩子,對吧?好的,非常感謝 :) – MisaChan 2011-06-01 02:01:17

0

鑑於這種情況,您的腳本如何知道空數據是否有意(我決定刪除該字段的內容)vs不是(正如你試圖達到的那樣)?最簡單的選擇是跳過所有空白的字段,但是您可能希望將應用程序設計得更好一些。最好在頁面上的表單域中設置所有這些值。

除了你的問題,看看你的腳本保護一下。僅僅簡單地使用$ _POST和$ _GET的值並不是一個好主意。那裏有很多很好的資源。

0

只需進行一些檢查。例如使用:

MoreSQL=''; 
if($_POST['ename']!='') { 
    $MoreSQL.='emp_nme = "'.$_POST['ename'].'"'; 
} 

if($_POST['emp_pos']!='') { 
    if($MoreSQL!='') $MoreSQL.=', '; // add comma if $MoreSQL is not empty any more 
    $MoreSQL.='emp_pos = "'.$_POST['emp_pos'].'"'; 
} 

if($_POST['emp_dep']!='') { 
    if($MoreSQL!='') $MoreSQL.=', '; // add comma if $MoreSQL is not empty any more 
    $MoreSQL.='emp_dep= "'.$_POST['emp_dep'].'"'; 
} 

if($_POST['tag']!='') { 
    if($MoreSQL!='') $MoreSQL.=', '; // add comma if $MoreSQL is not empty any more 
    $MoreSQL.='emp_tag= "'.$_POST['emp_tag'].'"'; 
} 

if($_POST['eid']!='') { 
    if($MoreSQL!='') $MoreSQL.=', '; // add comma if $MoreSQL is not empty any more 
    $MoreSQL.='emp_id = "'.$_POST['eid'].'"'; 
} 

if($MoreSQL!='') { 
    $qry='UPDATE gpl_employees_list SET '.$MoreSQL.' WHERE emp_id = '.($_POST['eid']+0).''; 
    mysql_query($qry) or die (mysql_error()); 
}else{ 
    echo 'nothing to update'; 
} 
+0

我應該在哪裏放置?在isset裏面? – MisaChan 2011-06-01 01:19:06

+0

替換你的'$ qry =「UPDATE gpl_employees_list SET emp_nme ='」。$ _ POST ['ename']。'',emp_pos ='「。$ _ POST ['pos']。'',emp_dep ='」。$ _ POST ['dep']。「',emp_tag ='」。$ _ POST ['tag']。''WHERE emp_id ='「。$ _ POST ['eid']。」'「; mysql_query($ qry)or die(mysql_error());' – RRStoyanov 2011-06-01 01:22:06

相關問題