0 Пользователей и 1 Гость просматривают эту тему.
  • 56 Ответов
  • 3130 Просмотров
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Shustry уже все написал.
Без JS не обойдетесь.
Код: sql
SELECT *
и сформировать JS-объект. Потом на событие onclick (onchange...) подставляете значения.
Или
Код: sql
SELECT kod_id
и AJAX'ом выбираете нужные значения.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Смотрите, если таблица небольшая, лучше всю её выбрать сразу, при загрузке страницы. Потом, при селекте полей уже из объекта или массива брать данные. В противном случае, тут нужно аякс-запрос делать на выборку, при выборе селекта/чекбокса.

Ну почему? Если таблица приведена ко второй нормальной форме, например, если есть primary key, то при каждом insert она индексируется, и выборка происходит стремительно. Здесь обходные пути противопоказаны.
« Последнее редактирование: 20.11.2015, 11:59:45 от Филипп Сорокин »
*

kodblack

  • Захожу иногда
  • 51
  • 0 / 0
Код: php
$kod_activity = json_encode($results); //можно закодировать в строку
setcookie("kod_activity", $kod_activity, time()+360000); //и сохранить в кукисы, потом брать оттуда.
А как производить отбор по co, ch, no? Что то - я мало понимаю в запросах :(

или по верхнему примеру - для каждой строки свои параметры
//<code>
$items = array();
$db = JFactory::getDbo();
$items[] = "|Выберите[c]";
$db->setQuery("SELECT kod_id, ПАРАМЕТР FROM #__kod_activity");
$results = $db->loadObjectList();
foreach ($results as $result) {
$value = $result->kod_id;
$label = $result->vid;
$items[] = $value.'|'.$label;
}
$items = implode("\n", $items);
return $items;
//</code>
*

kodblack

  • Захожу иногда
  • 51
  • 0 / 0
Shustry уже все написал.
Без JS не обойдетесь.
Код: sql
SELECT *
и сформировать JS-объект. Потом на событие onclick (onchange...) подставляете значения.
Или
Код: sql
SELECT kod_id
и AJAX'ом выбираете нужные значения.

может дадите ссылочку - где можно посмотреть примеры как реализовать?
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Ну почему? Если таблица приведена ко второй нормальной форме, например, если есть primary key, то при каждом insert она индексируется, и выборка происходит стремительно. Здесь обходные пути противопоказаны.
Тут суть в том, чтобы не обращаться к БД при любой манипуляции с формой, т.к. это либо а) перезагружает страницу, либо б) нужно делать асинхронный запрос, что для новичка непросто.

kodblack, а дальше JS. Все данные у вас есть уже на странице. Опишите более конкретную задачу, что нужно сделать.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
может дадите ссылочку - где можно посмотреть примеры как реализовать?
Вот один из моих давних примеров, не совсем подходящий вашей задаче, но имеющий тот же принцип работы.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

kodblack

  • Захожу иногда
  • 51
  • 0 / 0
Тут суть в том, чтобы не обращаться к БД при любой манипуляции с формой, т.к. это либо а) перезагружает страницу, либо б) нужно делать асинхронный запрос, что для новичка непросто.

kodblack, а дальше JS. Все данные у вас есть уже на странице. Опишите более конкретную задачу, что нужно сделать.
Я Ваш код вставил -в php скрипты ($kod_activity = json_encode($results); //можно закодировать в строку
setcookie("kod_activity", $kod_activity, time()+360000); //и сохранить в кукисы, потом брать оттуда.) Я правильно понял куда его вставлять?

Убрал из формы код для вида деятельности.
теперь мне необходимо - что из таблицы базы данных
столбец vid попадал в вид деятельности
и при выборе значения vid - данные из столбцов co2, ch4 и no2 попадали в скрытые поля формы co, ch и no

*

Shustry

  • Гуру
  • 6434
  • 745 / 3
У вас вторая таблица данных есть?
*

kodblack

  • Захожу иногда
  • 51
  • 0 / 0
У вас вторая таблица данных есть?
нет. только одна
*

kodblack

  • Захожу иногда
  • 51
  • 0 / 0
У вас вторая таблица данных есть?
Есть таблица в MySQL с данными
vid co2 ch4 no2


vid - должна подставиться в "Вид деятельности" и если пользователь выбрал Этан - то в поля должны подставиться CO2=46.4 в CH4=61.6 в NO2=61.6
« Последнее редактирование: 20.11.2015, 13:45:04 от kodblack »
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Получаете данные из куки. Подробнее. Преобразуете в объект: JSON.parse(). Всё. Дальше пишите условия и всю логику работы вашего калькулятора.
*

kodblack

  • Захожу иногда
  • 51
  • 0 / 0
Получаете данные из куки. Подробнее. Преобразуете в объект: JSON.parse(). Всё. Дальше пишите условия и всю логику работы вашего калькулятора.
А Ваш код я правильно вставил в php скрипт?
просто если просматривать через FireBug - то куки с данными kod_activity - пустые
kod_activity=null; expires=Tue, 24 Nov 2015 13:52:42 GMT; path=/; domain=gaz.eco29.ru
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Не знаю. Попробуйте var_dump($kod_activity) вызвать. Если не пусто, значит правильно.
*

kodblack

  • Захожу иногда
  • 51
  • 0 / 0
Не знаю. Попробуйте var_dump($kod_activity) вызвать. Если не пусто, значит правильно.
PHP скрипт где - Скрипт, вызываемый при отображении  вставил Ваш код:
$kod_activity = json_encode($results); //можно закодировать в строку
setcookie("kod_activity", $kod_activity, time()+360000); //и сохранить в кукисы, потом брать оттуда.

Верно?

только куки пустые
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
*

kodblack

  • Захожу иногда
  • 51
  • 0 / 0
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Так делаете?

Код: php
$db = JFactory::getDbo();
$db->setQuery("SELECT kod_id, vid FROM #__kod_activity");
$results = $db->loadObjectList();
$kod_activity = json_encode($results);
var_dump($kod_activity);
*

kodblack

  • Захожу иногда
  • 51
  • 0 / 0
Так делаете?

Код: php
$db = JFactory::getDbo();
$db->setQuery("SELECT kod_id, vid FROM #__kod_activity");
$results = $db->loadObjectList();
$kod_activity = json_encode($results);
var_dump($kod_activity);
Я такого не писал - не делал подключения к БД.
После Ваших строк вышло:
string(563) "[{"kod_id":"1","vid":"\u0421\u044b\u0440\u0430\u044f \u043d\u0435\u0444\u0442\u044c\t\t\r\n"},{"kod_id":"2","vid":"\u041f\u0440\u0438\u0440\u043e\u0434\u043d\u044b\u0439 \u0433\u0430\u0437\u043e\u043a\u043e\u043d\u0434\u0435\u043d\u0441\u0430\u0442 (\u041f\u0413\u041a)"},{"kod_id":"3","vid":"\u041f\u0440\u0438\u0440\u043e\u0434\u043d\u044b\u0439 \u0433\u0430\u0437"},{"kod_id":"4","vid":"\u0421\u0436\u0438\u0436\u0435\u043d\u043d\u044b\u0439 \u043d\u0435\u0444\u0442\u044f\u043d\u043e\u0439 \u0433\u0430\u0437"},{"kod_id":"5","vid":"\u042d\u0442\u0430\u043d"}]"
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Вы не делали подключения к БД, но, при этом пытаетесь записать в кукисы значения из БД?
*

kodblack

  • Захожу иногда
  • 51
  • 0 / 0
Добавил еще отбор по данным столбов     co2    ch4    n2o
И вывел все данные!
string(761) "[{"kod_id":"1","vid":"\u0421\u044b\u0440\u0430\u044f \u043d\u0435\u0444\u0442\u044c\t\t\r\n","co2":"41.91","ch4":"73.3","n2o":"73.3"},{"kod_id":"2","vid":"\u041f\u0440\u0438\u0440\u043e\u0434\u043d\u044b\u0439 \u0433\u0430\u0437\u043e\u043a\u043e\u043d\u0434\u0435\u043d\u0441\u0430\u0442 (\u041f\u0413\u041a)","co2":"44.2","ch4":"64.2","n2o":"64.2"},{"kod_id":"3","vid":"\u041f\u0440\u0438\u0440\u043e\u0434\u043d\u044b\u0439 \u0433\u0430\u0437","co2":"33.82","ch4":"54.4","n2o":"54.4"},{"kod_id":"4","vid":"\u0421\u0436\u0438\u0436\u0435\u043d\u043d\u044b\u0439 \u043d\u0435\u0444\u0442\u044f\u043d\u043e\u0439 \u0433\u0430\u0437","co2":"46.01","ch4":"63.1","n2o":"63.1"},{"kod_id":"5","vid":"\u042d\u0442\u0430\u043d","co2":"46.4","ch4":"61.6","n2o":"61.6"}]"

А как теперь передать эти значения в Вид деятельности и от выбора вида - в текстовые поля?
*

kodblack

  • Захожу иногда
  • 51
  • 0 / 0
Вы не делали подключения к БД, но, при этом пытаетесь записать в кукисы значения из БД?
Да :(
*

kodblack

  • Захожу иногда
  • 51
  • 0 / 0
Вы не делали подключения к БД, но, при этом пытаетесь записать в кукисы значения из БД?
А как теперь передать эти значения в Вид деятельности и от выбора вида - в текстовые поля?
Надо через HTML макет -править руками? или как передавать данные значения в поля?
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Сейчас у вас всё ок же вернуло. Вот эту строку и пишите. Т.е. так:

Код: php
$db = JFactory::getDbo();
$db->setQuery("SELECT kod_id, vid FROM #__kod_activity");
$results = $db->loadObjectList();
$kod_activity = json_encode($results);
setcookie("kod_activity", $kod_activity, time()+360000);

Всё. Дальше JavaScript. С PHP закончили.
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
А как теперь передать эти значения в Вид деятельности и от выбора вида - в текстовые поля?
Надо через HTML макет -править руками? или как передавать данные значения в поля?

Через JS всё дальше делается. В любом подключенном файле.
*

kodblack

  • Захожу иногда
  • 51
  • 0 / 0
Через JS всё дальше делается. В любом подключенном файле.
Вы меня - выручаете - ОГРОМНОЕ СПАСИБО! Подскажите пойжалуста -как вывести vid в список?
Нашел - вывод из куки - но как вставить его в name_vid (формы) нет параметра передачи в форму :(

if (isset($_COOKIE['cookie'])) {
    foreach ($_COOKIE['kod_activity'] as $kod_id => $vid) {
        $name = htmlspecialchars($kod_id);
        $value = htmlspecialchars($vid);
        echo "$kod_id : $vid <br />\n";
    }
*

kodblack

  • Захожу иногда
  • 51
  • 0 / 0
Добрый день! Уже бьюсь над проблемой 3й день!
Ни как не могу запихать данные из Куки в выпадающий список :(
Почитав - форумы и факи - нашел код - о чтение куки в параметр name_vid, он данные в него не погружаются. может кто подскажет  - как их туда запихать и распределить между моими полями ..... :(
Код
<script type="text/javascript">
function getCookie(kod_activity) {
if(!kod_activity) {
return false;
};
var cookieArray = document.cookie.split('; ');
for(var i = 0; i < cookieArray.length; i++) {
var name_vid = cookieArray[i].split('=');
if(name_vid[0] == kod_activity) {
return unescape(name_vid[1]);
};
};
return false;
};
</script>
*

Agard

  • Захожу иногда
  • 83
  • 0 / 1
Я сделал подобную штуку примерно так (понимаю - топорно, но - работает. Прошу строго не судить, если есть какие-нибудь полезные советы - буду рад, если поделитесь):
Задача: при выборе контрагента из списка, разложить его данные по полям формы.
Таблица:
id - id
UserId - регистрационный id юзера (оно мне надо было, вот и поставил - чтобы привязать вводимые данные к конкретному пользователю)
imyaorg - наименование организации - контрагента
contact - контактное лицо контрагента
telephon - телефон контактного лица контрагента
otkuda - адрес контрагента

Выпадающий список "kontragent" с кодом в "Элементы":
Код
//<code>
// Prepare the empty array
$items = array();
$user = JFactory::getUser();
$userid2  = $user->get('id');
// Prepare the database connection
$db = JFactory::getDbo();
// Keep this if you'd like a "Please select" option, otherwise comment or remove it
$items[] = "|Выбрать[c]";

// Run the SQL query and store it in $results
$db->setQuery("SELECT * FROM #__zzz_kontragent WHERE UserId = $userid2");
$results = $db->loadObjectList();
 
// Now, we need to convert the results into a readable RSForm! Pro format.
// The Items field will accept values in this format:
// value-to-be-stored|value-to-be-shown
// Eg. m|M-sized T-shirt
foreach ($results as $result) {
  $value = $result->id;
  $label = $result->imyaorg;
  $items[] = $value.'|'.$label;
}
 
// Multiple values are separated by new lines, so we need to do this now
$items = implode("\n", $items);
 
// Now we need to return the value to the field
return $items;
//</code>
Можно, разумеется, воспользоваться и стандартным вариантом, просто мне надо было привязать к юзеру.
Далее, "Свойства" - "CSS и Javascript", ссылка на <script src="http://site.ru/modules/mod_base/kaadres.js"></script>
Код:
Код
function getkaadres(){
var kontragent = $('#kontragent :selected').val();
    $.ajax({
        type: "POST",
url: "http://site.ru/modules/mod_base/kontragent.php",
        data: {kontragent:kontragent}
    }).done(function( otkuda )
        {
$("#kontragentadres").val(otkuda);
})

var kontragent = $('#kontragent :selected').val();
    $.ajax({
        type: "POST",
url: "http://site.ru/modules/mod_base/kacontact.php",
        data: {kontragent:kontragent}
    }).done(function( contact )
        {
$("#kacontact").val(contact);
});

var kontragent = $('#kontragent :selected').val();
    $.ajax({
        type: "POST",
url: "http://site.ru/modules/mod_base/katel.php",
        data: {kontragent:kontragent}
    }).done(function( telephon )
        {
$("#katel").val(telephon);
});
}
Три скрипта php (kontragent.php - адрес организации, katel.php - телефон контактного лица, kacontact.php - контактное лицо):
kontragent.php (адрес организации):
Код
<?php
//Подключение к базе данных
$DBASE = mysql_connect("localhost","root", "") or die("Could not connect: " . mysql_error());
mysql_select_db("site") or die("Could not select database");
mysql_query("SET NAMES utf8");
if($_POST['kontragent'] != ''){$kontragent = $_POST['kontragent'];}else{unset($kontragent);}
if(isset($kontragent)){
$otkuda = mysql_query("SELECT otkuda FROM x6yzj_zzz_kontragent WHERE id = '$kontragent'");
$row_otkuda = mysql_fetch_array($otkuda);
$kontragentadres = $row_otkuda['otkuda'];
echo "$kontragentadres";
}
?>
katel.php
Код
<?php
//Подключение к базе данных
$DBASE = mysql_connect("localhost","root", "") or die("Could not connect: " . mysql_error());
mysql_select_db("site") or die("Could not select database");
mysql_query("SET NAMES utf8");
if($_POST['kontragent'] != ''){$kontragent = $_POST['kontragent'];}else{unset($kontragent);}
if(isset($kontragent)){
$telephon = mysql_query("SELECT telephon FROM x6yzj_zzz_kontragent WHERE id = '$kontragent'");
$row_telephon = mysql_fetch_array($telephon);
$katel = $row_telephon['telephon'];
echo "$katel";
}
?>
kacontact.php
Код
<?php
//Подключение к базе данных
$DBASE = mysql_connect("localhost","root", "") or die("Could not connect: " . mysql_error());
mysql_select_db("site") or die("Could not select database");
mysql_query("SET NAMES utf8");
if($_POST['kontragent'] != ''){$kontragent = $_POST['kontragent'];}else{unset($kontragent);}
if(isset($kontragent)){
$contact = mysql_query("SELECT contact FROM x6yzj_zzz_kontragent WHERE id = '$kontragent'");
$row_contact = mysql_fetch_array($contact);
$kacontact = $row_contact['contact'];
echo "$kacontact";
}
?>
Понимаю - всё это можно сделать правильно, но, на данный момент своего развития и ограничения по времени, этот вариант реализации получения данных из справочника - единственный доступный для меня.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Отметить чекбокс в зависимости от значения текстового поля

Автор Alex_19

Ответов: 1
Просмотров: 973
Последний ответ 03.04.2023, 18:03:14
от varX
Передача значения переменной из php в поле формы RSForm! Pro

Автор Victor77

Ответов: 3
Просмотров: 1547
Последний ответ 29.11.2018, 13:37:36
от Septdir
Назначить/Убрать десятичные значения у нужных полей формы

Автор ksg1076

Ответов: 0
Просмотров: 874
Последний ответ 10.08.2018, 14:18:52
от ksg1076
Как присвоить переменной значения тэгов (переключателей)?

Автор scont

Ответов: 6
Просмотров: 2730
Последний ответ 25.11.2016, 20:35:45
от paalix
RSForm вывод изображения в PDF в зависимости от выбора значения

Автор Ashaurock

Ответов: 0
Просмотров: 872
Последний ответ 11.11.2016, 15:23:41
от Ashaurock