Я делаю проект, в котором можно обновить имя, должность, отдел и тег сотрудника.
Но поскольку я делаю свой проект, он не будет обновляться, я знаю, что с моим кодом что-то не так. не могли бы вы, ребята, проверить его.
моя php-страница имеет index.php, которая является основным меню, если вы нажмете имя сотрудника в списке, появится всплывающее окно. это всплывающее окно для обновления.
мой php-код (теперь он обновляется), но обнаружены ошибки:
<?php $con=mysql_connect('localhost','root','pss') or die(mysql_error()); mysql_select_db('intra',$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 } ?>
* ПРИМЕЧАНИЕ. Это обновление теперь обновляется, но если пользователь оставляет одно из текстовых полей пустым, он также обновляет таблицу пустым пространством, и теперь это моя проблема. как я могу избежать этого? я имею в виду, если пользователь оставляет одно текстовое поле пустым, данные с пустыми значениями все равно должны содержать старое значение, но как это сделать с этим кодом? спасибо тем, кто поможет
MisaChan
Вы используете $ _POST для 'name / pos / dep / tag' и $ _GET для 'emp', поэтому вы, вероятно, не получаете значения. Измените GET на POST – это должно сделать это. Поскольку вы обновляете, я бы рекомендовал использовать POST через GET. GET более подходит для поиска.
Кроме того, вы можете поместить все ваши запросы на обновление в один запрос на обновление. Вот так.
$name = $_POST['name']; $pos = $_POST['pos']; $dep = $_POST['dep']; $tag = $_POST['tag']; $emp = $_POST['emp']; $qry_start = "UPDATE gpl_employees_list SET "; $where = " WHERE emp_id = $emp"; $fields = ""; $updates = ""; if($name){ $updates .= " `emp_name` = $name,"; } if($pos){ $updates .= " `emp_pos` = $pos,"; } if($dep){ $updates .= " `emp_dep` = $dep,"; } if($tag){ $updates .= " `emp_tag` = $tag,"; } $updates = substr($updates, 0, -1); //To get rid of the trailing comma. $qry = $qry_start . $updates . $where;
это то, что я использовал, чтобы держать его в рабочем состоянии 🙂 Я надеюсь, что это может быть источником для других, а также 🙂
$col['emp_nme'] = (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){ if($val){ $queryString .="`".$key."`='".$val."',"; } } $queryString = substr($queryString ,0 ,strlen($queryString) - 1 )." WHERE emp_id = '".$_POST['eid']."'"; mysql_query($queryString);
После внесения изменений в базу данных SQL не забудьте зафиксировать эти изменения, иначе они будут проигнорированы.