таблица обновляет пустые места, когда пользователь ничего не вводит в текстовое поле - PullRequest
0 голосов
/ 01 июня 2011

Ситуация Цель моей программы - обновить данные сотрудника. Пользователь может выбрать, какую из информации (имя, должность, отдел и тег (которая сообщает, все ли он работает в компании)) он / она хочет обновить. Он или она может или не может заполнить все детали, как он / она хочет. Другими словами, он / она может оставить это поле пустым, если он / она не собирается изменять эту определенную информацию.

МОЯ ПРОБЛЕМА обновление. сейчас обновляется. Но, например, если пользователь хочет изменить только информацию о должности этого сотрудника, он / она оставит имя, отдел, пустым. (по умолчанию для тега установлено значение 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>

Ответы [ 3 ]

0 голосов
/ 01 июня 2011

Просто сделайте несколько проверок. Например, используйте это:

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 голосов
/ 01 июня 2011
$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 голосов
/ 01 июня 2011

Учитывая ситуацию, как ваш сценарий узнает, являются ли пустые данные преднамеренными (я решил удалить содержимое поля) v.s. нет (как вы пытаетесь добиться)? Самый простой вариант - пропустить все поля, которые возвращаются пустыми, однако вы, вероятно, захотите немного улучшить дизайн своего приложения. Желательно, чтобы все эти значения уже были установлены в полях формы на странице.

Помимо вашего вопроса, взгляните немного на защиту вашего скрипта. Не стоит просто использовать значения $ _POST и $ _GET. Для этого есть много хороших ресурсов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...