Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: добавление записи в базу через выпадающие списки
 
 автор: JIyKaBbIu   (30.11.2007 в 05:22)   письмо автору
 
 

Здравствуйте, я занимаюсь администрированием сайтов на битриксе, а тут мое начальство сказало, что им необходимо в срочном порядке сделать базу данных с веб-интерфейсом: вести учет отправок вагонов и контейнеров. Я честно говоря в mysql соображаю очень туго, нет опыта работы. Может кто поможет. Есть таблица gruz, в ней поля: id_gruz (тип INT), naim_gruz (тип VARCHAR), kod_gruz (тип INT(6)), ohrana (тип ENUM ('да','нет')). Необходимо добавить в базу запись через форму, где наименование груза выбирается из списка, с возможностью добавления, если нет такой позиции в списке, причем рядом с полем добавления нового груза, должно быть поле добавления кода этого груза. И список для поля ohrana типа ENUM, его значения 'да', 'нет' (требуется охрана для данного груза или нет), т.е. в итоге формируется примерно такая запись id_gruz: 1, naim_gruz: автомобиль, kod_gruz: 556565, ohrana: да. Все записи будут уникальны, что-то вроде справочника.
Помогите пожалуйста, а то начальство меня порвет, им не объяснить, что я не специалист в mysql и php.

   
 
 автор: JIyKaBbIu   (30.11.2007 в 12:16)   письмо автору
 
   для: JIyKaBbIu   (30.11.2007 в 05:22)
 

Неужели здесь нет людей способных мне помочь?

   
 
 автор: oradev   (30.11.2007 в 13:40)   письмо автору
 
   для: JIyKaBbIu   (30.11.2007 в 12:16)
 

Так обратитесь к программисту, что мешает ?

   
 
 автор: sim5   (30.11.2007 в 14:01)   письмо автору
 
   для: JIyKaBbIu   (30.11.2007 в 05:22)
 

Ну вставить запись в базу труда не составит, вот с формой не понятно:

>наименование груза выбирается из списка, с возможностью добавления, если нет такой позиции в списке, причем рядом с полем добавления нового груза, должно быть поле добавления кода этого груза. И список для поля ohrana типа ENUM, его значения 'да', 'нет'

Если я понял вас правильно, то вам нужно определиться именно с формой, а запись труда не составит. Получаете список из базы, уже существующие типы груза и их код - это будет элемент SELECT. Добавьте в форуму два поля INPUT, в которые можно ввести новый (не существующий в списке) тип груза и его код, плюс чекбокс для указания охраны. На стороне клиента с помощью JS можно будет проверять заполение формы. Если клиент вводит в поле INPUT тип товара и его код, который уже есть в списке, то не допускать его ввода, а отмечать соответсвующее в списке. При получении формы проверять, если значение одного из полей INPUT пустое, то забираем значение из списка, в противном случае из полей. Ну соответсвенно проверяем выбран или нет чекбокс охраны. Делаем запрос INSERT и вставляем принятые значения.

   
 
 автор: JIyKaBbIu   (01.12.2007 в 10:19)   письмо автору
 
   для: sim5   (30.11.2007 в 14:01)
 

Я переделал немного структуру базы, и немного кода написал, но вот только появилось столько вопросов, что аж глаза разбегаются, не знаю за что браться, и как это сделать
структура таблицы gruz: id_gruz (int), naim_gruz (varchar), kod_gruza (int (6)), id_ohrana (int)
структура таблицы ohrana: id_ohrana (int), ohrana (text), для поля охрана всего 2 значения "да" и "нет".
А вот сам код того, что я уже сделал:

<html>
<body>
<form enctype="multipart/form-data" method="POST">
<!-- подключение к базе -->
<?
        Error_Reporting
(E_ALL & ~E_NOTICE);
        require_once(
"config.php");
?>
<!-- Наименование груза -->
<script>
function IselectCategory()
{
  var cat = document.getElementById("naim_gruz").value;
  if(cat == -1)
    {document.getElementById("hiddenFieldI").style.display = "";
    document.getElementById("hiddenFieldII").style.display = "";}
    else {document.getElementById("hiddenFieldI").style.display = "none";
          document.getElementById("hiddenFieldII").style.display = "none";}
}
</script>
<table>
<tr><td>Наименование груза:</td>
<td><select name="naim_gruz" onchange="IselectCategory()">
     <?
        $get_list 
= @mysql_query("SELECT id_gruz, naim_gruz FROM gruz");
        while (
$elem = @mysql_fetch_array($get_list))
            echo 
"<option value='$elem[id_gruz]'>$elem[naim_gruz]\n";
     
?>
     <option value="-1">Другой</option>
</select>
<input type="text" name="naim_gruz" value="Введите новый груз" id="hiddenFieldI" style="display:none;">
<!-- Код груза -->
<input type="text" name="kod_gruza" value="Введите новый код" id="hiddenFieldII" style="display:none;"></td></tr>
<!-- охрана -->
<tr><td>Охрана требуется:</td>
<td><select name="ohrana">
     <?
        $get_list 
= @mysql_query("SELECT * FROM ohrana");
        while (
$elem = @mysql_fetch_array($get_list))
            echo 
"<option value='$elem[id_ohrana]'>$elem[ohrana]\n";
     
?>
</select></td></tr>
<!-- Запись в базу -->
<?
    $sql
="INSERT INTO `gruz` (`naim_gruz` , `kod_gruza` , `id_ohrana`)
            VALUES ('"
.$_POST['naim_gruz']."', '".$_POST['kod_gruza']."', '".$_POST['id_ohrana']."')";
    
mysql_query($sql);
?>
<tr><td><input type="submit" value="Отправить"></td></tr>
</table>
</form>
</body>
</html>

я конечно понимаю, что код дурацкий, но на большее моих знаний пока не хватит.
Как сделать проверку заполнения полей в форме, причем заполнение именно тем типом и длинной данных, которые должны быть согласно структуре базы.
Почему то у меня не записывается в таблицу gruz больше одной записи.
И еще не знаю как передавать значение переменной на запись, которое выбрано из списка в форме.
Помогите пожалуйста. Буду очень рад если подскажите, что исправить в коде или добавить.
Спасибо.

   
 
 автор: sim5   (01.12.2007 в 10:44)   письмо автору
 
   для: JIyKaBbIu   (01.12.2007 в 10:19)
 

Ну если для охраны значение только "да" или "нет", то жирно будет ипользовать для этого поля тип TEXT. Да и зачем вообще для охраны отдельная таблица, если нужно получить информацию о доставках, то вы ее получите из одной таблицы, получать "да" или "нет" из другой... Будем считать это делом вкуса, тем более вам сейчас не до таблиц, на данном этапе вам из таблицы нужен только список типов доставок и их ID. Что касается проверки, то здесь могут быть моменты (не зная, что у вас, говорю на примерах).
Если записи короткие, например, "пряники", то нет сложностей проверить и запретить ввод вновь доставку "пряники". Но если администратор введет "пряники сладкие", то здесь машине трудно решить - это один и тот же тип доставки или нет.
Нужно либо чтобы правило записей трактовалось однозначно, либо делать примено так, как вы пытаетесь, но скрывать для этого поля ввода не обязательно, их можно сделать недоступными через свойство ENABLED.
В этом случае, элемент SELECT должен иметь опшен, причем самый последний в списке, выбор которого позволял бы ввести новый тип доставки. При этом свойство ENABLED элементов ввода устанавливается равным TRUE и ввод будет разрешен, одновременно значение SELECT можно сбросить и запретить его выбор. Чекбокс же должен быть доступен для выбора всегда.
Что касается одной записи в таблицы, а сколько вам нужно? Значит ваш SELECT подразумевает выбор "кучи" товара? Тогда SELECT должен быть с мультивыбором, но и элементов ввода по идее должно быть тогда не два - как добавлять несколько новых товаров для доставки?
Наверное лучше вам словами рассказать, что за "пряники" вы возите, по скольку и как, чтобы понятней было. )

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования