Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
bobiko
0 / 0 / 0
Регистрация: 16.11.2015
Сообщений: 59
1

Раскрывающийся список в разные поля таблицы БД

11.12.2017, 20:51. Просмотров 204. Ответов 4

Здравствуйте, форумчане!
Сразу к делу: как из раскрывающегося списка внести значения в таблицу БД в разные ячейки?
Если конкретнее, то есть БД, в ней 2 таблицы. Первая таблица заполняется после регистрации пользователя, а вторая создает пустые строки с таким же id, как и id в первой (Auto_increment) также после регистрации.
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
    if (isset($post->login_go)){ 
                $email1 = $post->email1;
                $password1 = $post->password1;
                $name1 = $post->name1;
                $surname1 = $post->surname1;
                $city1 = $post->city1;
    
        $user = $db->query("
      INSERT INTO `solar_db`.`solar_users` (`email`, `password`, `name`, `surname`, `city`) 
      VALUES ('". $email1 ."', '". $password1 ."', '". $name1 ."', '". $surname1 ."', '". $city1 ."')
        ");
    }
    $user = $db->query("
      INSERT INTO `solar_db`.`Calc_user` (`id`) 
      SELECT `id` FROM `solar_db`.`solar_users`
        ");
?>

После регистрации пользователь заходит на этот тестовый сайт, создается сессия
Кликните здесь для просмотра всего текста

PHP
1
2
3
4
<?php
    session_start();
    require_once 'engine/mysql.php';
?>
PHP
1
2
3
4
5
6
<?php if (!isset($_SESSION["user"])): ?>  
            <a href="/?page=login" title="Login"><b>Вход</b></a> <a href="/?page=registration" title="Registration"><b>Регистрация</b></a>
        <?php else: ?>
            <span>Добро пожаловать, <?php echo $_SESSION['user']['name']; ?></span>
            <a href="/?user=logout" title="logout">Выход</a>
        <?php endif;?>

На одной странице есть калькулятор с расчетами, который берет значения от раскрывающихся списков (в зависимости от первого будет выбирается след.список)
Кликните здесь для просмотра всего текста
PHP
1
2
document.getElementById("Label#").style.display='none';
document.getElementById("Label#").style.display='block';
PHP
1
2
3
var Inver = document.getElementById('inverters_by_30').value.split(",");
var Panel = document.getElementById('panel_by_30').value.split(",");
var Addi = document.getElementById('add_ses_by_30').value.split(",");

Вопрос: как сделать так, чтобы значения из списков сохранялись в таблице в разных ячейках,причем в строках с таким же id, которое использовалось при создании сессии, если, например, уже здесь 3 элемента, которые нужно сохранить:
Кликните здесь для просмотра всего текста
HTML5
1
2
3
4
<option value="first_element,second_element">  /*нужно сохранить в отдельные ячейки first_element и second_element*/
                         Simple Text /*нужно сохранить в отдельную ячейку*/
                </option>
/* т.е. после выбора чего-то из этого списка уже 3 поля должны заполнятся */
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<form>
            <b>Необходимая мощность станции:</b><br>
            <select aria-required="true" class="Validate_Required" id="power" name="power" onchange="Selected(this)">
                <option selected="selected" value="0">
                    -
                </option>
                <option value="1">
                    5
                </option>
                <option value="2">
                    10
                </option>
                <option value="3">
                    15
                </option>
                <option value="4">
                    20
                </option>
                <option value="5">
                    30
                </option>
            </select>
        </form>
/* .............simple text ..................*/
<div id='Label1' style='display: none;'>
            <b>Инверторы:</b><br>
            <select id="inverters_by_5" multiple name="inverters[]" onchange="calc()">
                <option value="0,0">
                    Выбрать
                </option>
                <option value="27951,1">
                    Goodwe GW5000D-NS
                </option>
                <option value="54093,1">
                    Fronius Primo 5.0-1
                </option>
                <option value="66380,1">
                    SMA SB 5000TL-21
                </option>
            </select>
 
            <p></p><b>Солнечные панели:</b><br>
            <select id="panel_by_5" multiple name="panel[]" onchange="calc()">
                <option value="0,0">
                    Выбрать
                </option>
                <option value="4401,18">
                    Amerisolar AS-6P30 280Вт/24В
                </option>
                <option value="4537,19">
                    JA Solar JAP6 270Вт/24В
                </option>
            </select>
 
            <p></p><b>Дополнительные расходы:</b><br>
            <select id="add_ses_by_5" multiple name="add_mat[]" onchange="calc()">
                <option value="0,0">
                    Выбрать
                </option>
                <option value="15500,1">
                    Доп. материалы (кабеля, автоматы и т.д.) и транспортные расходы
                </option>
                <option value="37850,1">
                    Доп. материалы,транспортные расходы,проектно-монтажные и пусконаладочные работы
                </option>
            </select>
 
/* (и еще несколько списков,в которых одинаковы только [B]multiple name[/B]) 
 в сумме 8 полей подобных образом заполняется */

Как я понимаю, связь между id организовывается так:
Кликните здесь для просмотра всего текста
PHP
1
$result2 = mysql_query("UPDATE  `solar_db`.`Calc_user` SET power='.', ... , total='.' WHERE id =($_SESSION['users']['id']");
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2017, 20:51
Ответы с готовыми решениями:

Извлечение данных с определенного поля таблицы в список
Всем доброго времени суток. Пожалуйста помогите разобраться с задачей. Есть...

Раскрывающийся список из БД
Уважаемы программисты у меня следующая проблема. Имеется Html форма ввода...

Древовидный раскрывающийся список
Здравствуйте, мне нужно реализовать древовидный список. Например если я нажал...

Древовидный раскрывающийся список
Доброго времени суток:) У меня такая проблема: у меня есть древовидный...

Вставка данных из БД в раскрывающийся список
Вечер добрый друзья. Иногда бывает потребность в загрузке данных в...

4
ytf
228 / 250 / 183
Регистрация: 15.08.2017
Сообщений: 1,425
11.12.2017, 22:31 2
Цитата Сообщение от bobiko Посмотреть сообщение
внести значения в таблицу БД в разные ячейки?
покажите струтктуру бд, или файл экспорта структуры бд из phpmyadmin

если пользователь внес данные, и еще раз заполнил форму - второй раз добавлять или удалить предыдущие данные?
0
bobiko
0 / 0 / 0
Регистрация: 16.11.2015
Сообщений: 59
12.12.2017, 04:28  [ТС] 3
ytf, БД:
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
-- phpMyAdmin SQL Dump
-- version 3.5.0
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Дек 12 2017 г., 00:12
-- Версия сервера: 5.1.62-community
-- Версия PHP: 5.3.27
 
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
 
 
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
 
--
-- База данных: `solar_db`
--
 
-- --------------------------------------------------------
 
--
-- Структура таблицы `Calc_user`
--
 
CREATE TABLE IF NOT EXISTS `Calc_user` (
  `id` smallint(8) unsigned NOT NULL,
  `power` varchar(10) NOT NULL,
  `inv_name` varchar(100) NOT NULL,
  `inv_price` varchar(100) NOT NULL,
  `panel_name` varchar(100) NOT NULL,
  `panel_price` varchar(100) NOT NULL,
  `panel_num` varchar(100) NOT NULL,
  `add_mat` varchar(100) NOT NULL,
  `total` varchar(100) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
--
-- Дамп данных таблицы `Calc_user`
--
 
INSERT INTO `Calc_user` (`id`, `power`, `inv_name`, `inv_price`, `panel_name`, `panel_price`, `panel_num`, `add_mat`, `total`) VALUES
(1, '', '', '', '', '', '', '', '');
 
-- --------------------------------------------------------
 
--
-- Структура таблицы `solar_users`
--
 
CREATE TABLE IF NOT EXISTS `solar_users` (
  `id` smallint(8) unsigned NOT NULL AUTO_INCREMENT,
  `email` varchar(100) NOT NULL,
  `name` varchar(100) NOT NULL,
  `surname` varchar(100) NOT NULL,
  `city` varchar(100) NOT NULL,
  `password` varchar(50) NOT NULL,
  `date_reg` date NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
 
--
-- Дамп данных таблицы `solar_users`
--
 
INSERT INTO `solar_users` (`id`, `email`, `name`, `surname`, `city`, `password`, `date_reg`) VALUES
(1, 'my@mail.com', 'Anton', 'Samoylenko', 'Kharkiv', '12345', '0000-00-00');
 
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Если данные были введены повторно, то должны обновляться, а не создаваться новые строки. Вся проблема моя в том, что я не могу уловить суть выбора значений из раскрывающегося списка и отправить его в БД. Дошел до вот такого:
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function calc() {
    var change = document.getElementById('power').value;
    var power = document.getElementById('power');
    var power_name = power.options[power.selectedIndex].text;
 
    var Inver = document.getElementById('inverters_by_5').value.split(",");
    var Panel = document.getElementById('panel_by_5').value.split(",");
    var Addi = document.getElementById('add_ses_by_5').value.split(",");
    
    var result = document.getElementById('result');
result.innerHTML = (parseInt(Addi[0]) * parseInt(Addi[1])) + (parseInt(Inver[0]) * parseInt(Inver[1])) + ((parseInt(Panel[0]) * (parseInt(Panel[1]))) + (parseInt(Panel[1]) * 1084));
 
    var inv_name = Inver.options[Inver.selectedIndex].text;
    var panel_name = Panel.options[Panel.selectedIndex].text;
 
}

Если я правильно думаю, то теперь нужно power_name,inv_name,Inver[0],panel_name,Panel[0],Panel[1],Addi[0],result отправить в БД посредством:
Кликните здесь для просмотра всего текста
PHP
1
 $sql = mysql_query("UPDATE  `solar_db`.`Calc_user` SET power='power_name', inv_name='inv_name', inv_price='Inver[0]', panel_name='panel_name', panel_price='Panel[0]', panel_num='Panel[1]', add_mat='Addi[0]', total='result' WHERE id =($_SESSION['users']['id']");


Добавлено через 5 часов 4 минуты
Все, тему можно закрывать, вопрос решился, хоть и не прям так, как хотелось. Я просто отформатировал value выборки так, что вопрос отпал и передаю в таблицу БД таким образом:
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
if (isset($post->calculation)){ 
    $power = $post->power;
    $login = $_SESSION['user']['id'];
    if ($power == '5') {
                $inverter = $post->inverters_by_5;
                $panels = $post->panels_by_5;
                $addi = $post->add_ses_by_5;
 
                $user = $db->query( "UPDATE  `solar_db`.`Calc_user` SET  `power` =  '". $power ."' , `inverter` =  '". $inverter ."' , `panels` =  '". $panels ."' , `additional` =  '". $addi ."' WHERE  `calc_user`.`id` ='". $login ."'  ");
            }
0
ytf
228 / 250 / 183
Регистрация: 15.08.2017
Сообщений: 1,425
12.12.2017, 22:06 4
Цитата Сообщение от bobiko Посмотреть сообщение
var change = document.getElementById('power').value; var power = document.getElementById('power');
я пользуюсь jquery, работает быстро, кода значительно меньше, например,

Javascript
1
var change = $('#power').val();
1
bobiko
0 / 0 / 0
Регистрация: 16.11.2015
Сообщений: 59
13.12.2017, 14:22  [ТС] 5
ytf, за этот совет спасибо, намотаю себе на ус)
0
13.12.2017, 14:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2017, 14:22

Раскрывающийся список +PHP+MySQL
Есть база ais ,в ней лежит таблица sities. В которой указаны id и названия...

Раскрывающийся список и база данных
Всем доброго времени суток уважаемые! Помогите пожалуйста, буду очень...

Вывод данных из таблицы на разные адреса
Как сделать чтобы из одной базы выводить данные на разные адреса-страницы,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru