Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 1
Регистрация: 23.09.2016
Сообщений: 16
1

Значение select из сессии + зависимые списки из бд

27.09.2016, 13:02. Показов 1225. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Я дилетант, но стараюсь учиться настолько, насколько удаётся моему гуманитарному мозгу.
Не могу понять почему не работет следующее.

Основная страница:
PHP/HTML
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
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Рентабельность тест</title>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/selects.js"></script>
 
</head>
<?php session_start();?>
<body>
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
print_r ($_GET['category_id'].'<br/>');
include_once 'config.php';
$link = mysqli_connect($dbHost, $dbUser, $dbPass, $dbName) 
    or die("Не вижу базу" . mysqli_error($link));
// соединились с базой
$category_id = @intval($_GET['category_id']);
$catname_guery = mysqli_query($link,"SELECT category, category_id FROM prises_dl WHERE category = $category_id GROUP BY category_id");
//print_r ($category_id);
?>
<form action="#" method="get">
    <p>Категория</p>
    <select name="category_id" id="category_id">
     
     <?php if (isset($_GET['category_id']))
   {while ($catname = mysqli_fetch_assoc($catname_guery))
   //это значение по умолчанию, которое не работает: (если сессии нет, всё норм, но после нажатия кнопки вводит пустое значение)
       echo 
   '<option value="'.@intval($_GET['category_id']).'">'.$catname['category'].'</option>';}
   else
    {echo 
   '<option value="'.'0'.'">'.'-выберите категорию-'.'</option>';}
 
//остальной список (работает):
$catnames = mysqli_query($link,"SELECT category, category_id FROM prises_dl WHERE category_id > 0 GROUP BY category_id");
 
 
    while ($cats = mysqli_fetch_assoc($catnames))
  {     
echo '<option value="'.$cats['category_id'].'">'.$cats['category'].'</option>';
  }
        
?>
</select>
 
    <p>Предмет:</p>
    <!--Зависимость от первого работает. Запоминалку еще не делал, так как не разобрался с первым спском.-->
    <select name="item_id" id="item_id" disabled="disabled">
        <option value="0">- выберите предмет -</option>
    </select>
    <p>Аукционная цена:</p>
    
    <input type="text" name="item_cost" 
    value= "<?php
    //это работает.
      if (isset($_GET['item_cost'])) 
    echo $_GET['item_cost']; ?>" id="item_cost" placeholder="Аукционная цена">
    <br>
<button name="hidden" type="submit">Рассчитать рентабельность</button>
</form>
 
 
</body>
</html>
JS:
Javascript
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
$(document).ready(function () {
    $('#category_id').change(function () {
        var category_id = $(this).val();
        if (category_id == '0') {
            $('#item_id').html('<option>- сначала выберете категорию -</option>');
            $('#item_id').attr('disabled', true);
            return(false);
        }
        $('#item_id').attr('disabled', true);
        $('#item_id').html('<option>загрузка...</option>');
        
        var url = 'get_items.php';
        
        $.get(
            url,
            "category_id=" + category_id,
            function (result) {
                
                if (result.type == 'error') {
                    alert('error');
                    return(false);
                }
                else {
                    var options = '';
                    $(result.items).each(function() {
                        options += '<option value="' + $(this).attr('id') + '">' + $(this).attr('title') + '</option>';
                    });
                    $('#item_id').html(options);
                    $('#item_id').attr('disabled', false);
                }
            },
            "json"
        );
    });
});
Обработчик:
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
<?php
include_once 'config.php';
$link = mysqli_connect($dbHost, $dbUser, $dbPass, $dbName) 
    or die("Не вижу базу" . mysqli_error($link));
// соединились с базой
$category_id = @intval($_GET['category_id']);
 
 
 
$regs=mysqli_query($link,"SELECT item_name FROM prises_dl WHERE category_id=$category_id");
if ($regs) {
 
$num = mysqli_num_rows($regs);
$items = array();
 
for ($i=0; $i<$num; $i++)
$item[$i] = mysqli_fetch_row($regs);
 
$i=0;
    foreach ($item as $r) {
        $items[] = array('id'=>$i, 'title'=>$r);
        $i++;
    }
$result = array('type'=>'success', 'items'=>$items); 
}
else {
    $result = array('type'=>'error');
}
 
print json_encode($result);
 
 
?>
Зависимость списков работает. Но из сессии помещает в первый select пустое значение.
При подключении print_r выводит верные данные как из базы, так и из сессии.
С введённой ценой всё норм.
В чем моя ошибка?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.09.2016, 13:02
Ответы с готовыми решениями:

вывожу зависимые списки по средствам технологии AJAX, застрял с <select disabled>
У меня есть два селекта и когда первый селект не выбран, то у второго стоит атрибут desibled. Когда...

Зависимые списки, снова списки и проблема
&lt;div class=&quot;t-product__option js-product-option newselect&quot;&gt; &lt;div class=&quot;t-product__option-title...

Зависимые списки
Всем привет, у меня возникла такая проблема, есть 2 таблицы 1 - сотрудники 2 - большой зал В...

Зависимые списки
Доброго времени суток Если возможно, нужна помощи в создании иерархических списков. Просмотрел...

5
2169 / 1652 / 840
Регистрация: 10.01.2015
Сообщений: 5,190
27.09.2016, 13:17 2
Цитата Сообщение от Lastor Посмотреть сообщение
из сессии помещает в первый select пустое значение.
Если вопрос про файл-обработчик, то вероятно потому, что Вы не стартовали в начале файла сессию.
PHP
1
session_start();
1
0 / 0 / 1
Регистрация: 23.09.2016
Сообщений: 16
27.09.2016, 14:45  [ТС] 3
Пифагор, спасибо за помощь! К сожалению, без изменений.

И ещё. В описании проблемы я допустил ошибку:
При повторном обращении, когда в сессии уже есть данные, в первом select появляется не пустота, а первое значение, найденное в бд.

Добавлено через 18 минут
Цитата Сообщение от Lastor Посмотреть сообщение
PHP/HTML
1
'<option value="'.@intval($_GET['category_id']).'">'.$catname['category'].'</option>';}
Вот вижу, что в первом коде в стоке "32" что-то не так с синтаксисом. Adobe Dreamwever ничего подобного не показывает.
И я не вижу ошибок... Почему он эту строку в зелёновый красит?
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1846 / 1342 / 599
Регистрация: 12.01.2011
Сообщений: 5,432
27.09.2016, 20:56 4
Цитата Сообщение от Lastor Посмотреть сообщение
PHP
1
2
for ($i=0; $i<$num; $i++)
$item[$i] = mysqli_fetch_row($regs);
а зачем вы это делаете ?

Добавлено через 1 минуту
Цитата Сообщение от Lastor Посмотреть сообщение
PHP
1
2
3
4
5
6
7
8
9
$num = mysqli_num_rows($regs);
$items = array();
for ($i=0; $i<$num; $i++)
$item[$i] = mysqli_fetch_row($regs);
$i=0;
foreach ($item as $r) {
 $items[] = array('id'=>$i, 'title'=>$r);
$i++;
}
Что за велосипед?
1
0 / 0 / 1
Регистрация: 23.09.2016
Сообщений: 16
28.09.2016, 10:37  [ТС] 5
Цитата Сообщение от Azdeman Посмотреть сообщение
Что за велосипед?
Готовится массив для скрипта select.js.
В нём список предметов, который работает.
Вы имеете в виду, что можно обойтись без подсчета строк?
0
Фрилансер
Эксперт JSЭксперт HTML/CSSЭксперт PHP
1846 / 1342 / 599
Регистрация: 12.01.2011
Сообщений: 5,432
28.09.2016, 11:52 6
Цитата Сообщение от Lastor Посмотреть сообщение
что можно обойтись без подсчета строк?
именно
1
28.09.2016, 11:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.09.2016, 11:52
Помогаю со студенческими работами здесь

зависимые списки
как сделать так, чтобы при выборе значения в одном выпадающем списке появлялась, зависимая от...

Зависимые списки
Всем Доброго времени суток. У меня следующий вопрос. Создаю базу данных для цеха. Нужно связать...

зависимые списки
Добрый день. Есть две таблицы в которых занесены &quot;Области&quot; и &quot;Города&quot;, связаны между собой по коду...

Зависимые списки
Добрый день! подскажите, есть такой код. Необходимо, чтобы было 4 списка по порядку зависимые от...

Зависимые списки в С++
Как можно удобно организовать зависимые списки в C++ ? Очень хороший пример таких списков -...

Зависимые списки
Господа форумчане, прошу прощения если задвоил тему, но сил нет больше терпеть) Задача такая: ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru