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

Форум MySQL

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

 

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

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

тема: выпадающий список из БД
 
 автор: DreadfulS   (21.10.2006 в 10:52)   письмо автору
 
 

продолжаю разбор каталога из книги, как организовать выпадающий список например материалов из БД, но не фиксированный как у Вас, а дополняемый? например появился новый материал и придётся перекраивать весь каталог начиная от добавления товарной позиции и кончая базой данный, куда проще былобы просто добавлять новые материалы в БД, а вот как их вывести? чем мне надо заменить

  <td>
    <select class=input type=text name=material>
     <option value='mat1' <?php if($material == 'mat1') echo "selected"?>>материал1
     <option value='mat2' <?php if($material == 'mat2') echo "selected"?>>материал2
    </select>
  </td>

что бы выводить всё имеющееся в базе не меняя файлов?

   
 
 автор: cheops   (21.10.2006 в 12:59)   письмо автору
 
   для: DreadfulS   (21.10.2006 в 10:52)
 

Обычно в этом случае (когда требуется добавлять, удалять или редактировать) типы материалов выносят в отдельную таблицу, а вместо поля ENUM вставляют вторичный ключ к таблице с матириалами, который ссылается на соответствющую запись. В этом случае выпадающий список формируется как обычно путём обработки SELECT-запроса к таблице материалов.

   
 
 автор: DreadfulS   (21.10.2006 в 21:36)   письмо автору
 
   для: cheops   (21.10.2006 в 12:59)
 

так, со списком разобрался, получится что то вроде этого

<select name="id_mat">
<?
$query 
mysql_query("SELECT * 
FROM material 
ORDER BY mat ASC"
);

while (
$row mysql_fetch_array($query)) {
$id_mat $row['id_mat'];
$mat $row['mat'];

if(
$id_mat != $id_mat){
echo 
"<option value=".$id_mat.">".$mat."</option>\n";
} else {
echo 
"<option value=".$id_mat." selected>".$mat."</option>\n";
}
}
?>
</select>


а как можно реализовать так что бы если нет необходимого материала то вписать нужное в соседней графе и что бы оно автоматом добавлялось в базу вместе с товарной позицией и в дальнейшем так же появлялось в списке? по возможности с примером...

   
 
 автор: cheops   (21.10.2006 в 22:37)   письмо автору
 
   для: DreadfulS   (21.10.2006 в 21:36)
 

Хм... приведите пожалуйста структуру таблицы material.

   
 
 автор: DreadfulS   (21.10.2006 в 22:59)   письмо автору
 
   для: cheops   (21.10.2006 в 22:37)
 

material
id_mat
id_product
mat

и всё...
id_product как я понял понадобится для связи с таблицей product правда ещё не понял как это будет выглядеть на практике:)

   
 
 автор: DreadfulS   (25.10.2006 в 11:08)   письмо автору
 
   для: DreadfulS   (21.10.2006 в 22:59)
 

UP - снова поднимаю эту тему, поскольку решения так и не нашёл(

   
 
 автор: Trianon   (25.10.2006 в 11:14)   письмо автору
 
   для: DreadfulS   (25.10.2006 в 11:08)
 

А как у Вас выгядит форма?

   
 
 автор: DreadfulS   (25.10.2006 в 12:17)   письмо автору
 
   для: Trianon   (25.10.2006 в 11:14)
 

а форма выглядит так:

<tr>
  <td><p class=zag2>материал</td>
  <td>
    <select class=input type=text name=material>
     <option value='pr' <?php if($material == 'pr') echo "selected"?>>ПР
     <option value='pk' <?php if($material == 'pk') echo "selected"?>>ПК
     <option value='pn' <?php if($material == 'pn') echo "selected"?>>ПН
     <option value='pg' <?php if($material == 'pg') echo "selected"?>>ПГ
     <option value='plodgrunt' <?php if($material == 'plodgrunt') echo "selected"?>>Плод.Грунт
     <option value='torf' <?php if($material == 'torf') echo "selected"?>>Торф
     <option value='grunt' <?php if($material == 'grunt') echo "selected"?>>Грунт
     <option value='grav3x10' <?php if($material == 'grav3x10') echo "selected"?>>Щ.Грав 3/10
     <option value='grav5x20' <?php if($material == 'grav5x20') echo "selected"?>>Щ.Грав 5/20
     <option value='grav20x40' <?php if($material == 'grav20x40') echo "selected"?>>Щ.Грав 20/40
     <option value='grav40x70' <?php if($material == 'grav40x70') echo "selected"?>>Щ.Грав 40/70
     <option value='grav40x100' <?php if($material == 'grav40x100') echo "selected"?>>Щ.Грав 40/100
     <option value='gran3x10' <?php if($material == 'gran3x10') echo "selected"?>>Щ.Гран 3/10
     <option value='gran5x20' <?php if($material == 'gran5x20') echo "selected"?>>Щ.Гран 5/20
     <option value='gran20x40' <?php if($material == 'gran20x40') echo "selected"?>>Щ.Гран 20/40
     <option value='gran40x70' <?php if($material == 'gran40x70') echo "selected"?>>Щ.Гран 40/70
     <option value='gran40x100' <?php if($material == 'gran40x100') echo "selected"?>>Щ.Гран 40/100
     <option value='gran25x60' <?php if($material == 'gran25x60') echo "selected"?>>Щ.Гран 25/60
     <option value='iz5x20' <?php if($material == 'iz5x20') echo "selected"?>>Щ.Из 5/20
     <option value='iz20x40' <?php if($material == 'iz20x40') echo "selected"?>>Щ.Из 20/40
     <option value='iz40x70' <?php if($material == 'iz40x70') echo "selected"?>>Щ.Из 40/70
     <option value='iz40x100' <?php if($material == 'iz40x100') echo "selected"?>>Щ.Из 40/100
     <option value='chernozem' <?php if($material == 'chernozem') echo "selected"?>>Чернозём
     <option value='perevozka' <?php if($material == 'perevozka') echo "selected"?>>Перевозка
    </select>
  </td>
</tr>

   
 
 автор: elenaki   (25.10.2006 в 11:24)   письмо автору
 
   для: DreadfulS   (25.10.2006 в 11:08)
 

если нужного материала нет, заполняется текстовое поле рядом. при обработке формы вы
проверяете, если было заполнено это поле, то делаете дополнительный запрос и вставляете
новый материал в таблицу материалов. после этого он будет появляться в списке и для
ввода других товаров. потом берете последний id из таблицы материала и заносите его в
строку товара в таблице товаров, если поле не заполнено, ничего добавлять не нужно, а id
материала берете как value вашего списка.

   
 
 автор: DreadfulS   (25.10.2006 в 12:15)   письмо автору
 
   для: elenaki   (25.10.2006 в 11:24)
 

спасибо, буду пробывать

   
Rambler's Top100
вверх

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