Здравствуйте. Я новичок в PHP-программировани. Есть задача: 1. выбор из дроп-даун меню определенного значения, все возможные значения достаются из БД
| Код | <form method="post" action="<?php echo $PHP_SELF; ?>"> <input type="hidden" name="action"> <select name="device_explain" onchange="this.form.submit();"> echo "<option>---< Выберите тип >---</option>" ; <?php include "./common_db.inc"; $link_id = db_connect($default_dbname); $devices_query = "SELECT device_explain FROM $devices_tablename"; $devices = mysql_query($devices_query); while($query_data = mysql_fetch_array($devices)) { $device_explain = $query_data["device_explain"]; echo "<option>$device_explain</option>" ; } ?> </select> </form><br><br><br>
|
2. В зависимости от выбранного значения, вставка в страницу соответствующей формы
| Код | <?php $devices_query = "SELECT device_type FROM $devices_tablename WHERE device_explain='" . $_POST['device_explain'] . "'"; $devices = mysql_query($devices_query); while($query_data = mysql_fetch_array($devices)) { $device_type = $query_data["device_type"]; } if ($device_type == "workstation") { //echo "Форма для РАБОЧЕЙ СТАНЦИИ"; include('includes/forms/workstation.php'); }
|
Сама форма:
| Код | <center><h3>Добавить оборудование:</h3></center> <form method="post" action="<?php echo $PHP_SELF; ?>"> <input type="hidden" name="action"> <div align="center"><center><table border="1" width="90%"> <tr> <th width="30%" nowrap>Модель устройства</th> <td width="70%"><input type="text" name="device_model" size="20"></td> </tr> <tr> <th width="30%" nowrap>Серийный номер</th> <td width="70%"><input type="text" name="device_serial" size="20"></td> </tr> <tr> <th width="30%" nowrap>Сетевое имя</th> <td width="70%"><input type="text" name="device_netname" size="20"></td> </tr> <tr> <th width="30%" nowrap>IP адрес</th> <td width="70%"><input type="text" name="device_ip" size="20"></td> </tr> <tr> <th width="30%" nowrap>MAC адрес</th> <td width="70%"><input type="text" name="device_mac" size="20"></td> </tr> <tr> <th width="30%" nowrap>Место установки</th> <td width="70%"><input type="text" name="device_location" size="20"></td> </tr> <tr> <th width="30%" nowrap>Дата получения</th> <td width="70%"><input type="text" name="device_date_receive" size="20"> формат даты: YYYY-MM-DD</td> </tr> <tr> <th width="30%" nowrap>Дата списания</th> <td width="70%"><input type="text" name="device_date_spisan" size="20"> формат даты: YYYY-MM-DD</td> </tr> <tr> <th width="30%" nowrap>Комментарий</th> <td width="70%"><input type="text" name="device_comment" size="20"></td> </tr> <tr> <th width="30%" colspan="2" nowrap> <input type="submit" name="do" value="Добавить"> <input type="reset" value="Сбросить"></th> </tr> </table> </center></div> </form> <?php //Вставляет данные в базу $device_type = $_POST['device_explain']; $device_model = $_POST['device_model']; $device_netname = $_POST['device_netname']; $device_serial = $_POST['device_serial']; $device_ip = $_POST['device_ip']; $device_mac = $_POST['device_mac']; $device_date_receive = $_POST['device_date_receive']; $device_comment = $_POST['device_comment']; $device_location = $_POST['device_location']; $device_status = $_POST['device_status']; $device_date_spisan = $_POST['device_date_spisan']; global $default_dbname, $inventory_tablename; $link_id = db_connect($default_dbname); //(`device_id` , `device_type` , `device_model` , `device_netname` , `device_serial` , `device_eklznum` , `device_fiscdate` , `device_servipass` , `device_ip` , `device_mac` , `device_date_receive` , `device_comment` , `device_location` , `device_status` , `device_date_spisan`) if (isset($_POST['do'])) { $query = "INSERT $inventory_tablename VALUES('', '$device_type', '$device_model', '$device_netname', '$device_serial', '', '', '', '$device_ip', '$device_mac', '$device_date_receive', '$device_comment', '$device_location', '$device_status', '$device_date_spisan')"; $result = mysql_query($query); } ?>
|
Однако, почему-то, добавление значений в базу не происходит, а только исчезает форма. Если убрать условие if (isset($_POST['do'])), тогда данны добавляются и по нажатию кнопки в форме и по выбору значения onchange="this.form.submit();" в первой форме. Вопрос: Как же сделать добавление ТОЛЬКО по нажатию кнопки в форме? Сделать так, чтобы после добавления значений в базу форма не исчезала, а лишь очищалась? Т.е. нужно чтобы формы не было только при первом посещении страницы, а потом висела та форма, которая последний раз была выбрана. База:
| Код | ----------------------------------- CREATE TABLE `lmadmin`.`devices` ( `device_id` int(3) NOT NULL auto_increment, `device_explain` varchar(255) NOT NULL default '' COMMENT 'расшифровка', `device_img` varchar(45) NOT NULL default '' COMMENT 'изображение', `device_type` varchar(45) NOT NULL default '' COMMENT 'тип', PRIMARY KEY USING BTREE (`device_id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COMMENT='Типы оборудования'; ----------------------------------- CREATE TABLE `lmadmin`.`inventory` ( `device_id` int(11) NOT NULL auto_increment COMMENT 'инвентарный номер', `device_type` varchar(64) NOT NULL default '' COMMENT 'тип устройства', `device_model` varchar(64) NOT NULL default '' COMMENT 'модель', `device_netname` varchar(64) NOT NULL default '' COMMENT 'сетевое имя', `device_serial` varchar(64) NOT NULL default '' COMMENT 'серийный номер', `device_eklznum` int(11) NOT NULL default '0' COMMENT 'номер ЭКЛЗ', `device_fiscdate` date NOT NULL default '0000-00-00' COMMENT 'дата фискализации', `device_servipass` text NOT NULL COMMENT 'пароль сервисного инженера', `device_ip` varchar(64) NOT NULL default '0' COMMENT 'IP адрес', `device_mac` varchar(64) NOT NULL default '0' COMMENT 'MAC адрес', `device_date_receive` date NOT NULL default '0000-00-00' COMMENT 'дата получения оборудования', `device_comment` varchar(255) NOT NULL default '' COMMENT 'комментарии', `device_location` varchar(255) NOT NULL default '' COMMENT 'месторасположение', `device_status` int(11) default NULL, `device_date_spisan` date NOT NULL default '0000-00-00' COMMENT 'дата списания', PRIMARY KEY USING BTREE (`device_id`) ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 PACK_KEYS=0 COMMENT='инвентаризация'; -----------------------------------
|
Спасибо. |