Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/14: Рейтинг темы: голосов - 14, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 68

Выбор через select по имени компании и в соответствии с этим именем вывод из БД информации о грузе

26.04.2020, 13:45. Показов 3207. Ответов 42

Студворк — интернет-сервис помощи студентам
В таблице komp лежат данные о компаниях, она связана с таблицей gruz, где лежат данные о грузах по id_komp(в табл. gruz. Нужно, чтобы из таблицы komp была выборка имен компаний и после выбора определенной имени компании из таблицы gruz вытаскивалась информация о всех грузах этой компании. Я пыталась сделать так как-то, но не работает. Подскажите пожалуйста, как это сделать?

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
<?php
session_start();
 
include_once("Connection.php");
 ?>
 
<?php
if (!isset($_SESSION['admin']))
{
  include_once("header.php");
}else{
  include_once("header/header_admin_1.php");
}
 ?>
 
 <td>Компания</td>
        <td>
            <select name="id">
            <option></option>
            <?php
            $sql = mysqli_query($link, 'SELECT `id`, `name` FROM `kompania`');
            while ($result = mysqli_fetch_array($sql)) {
                echo "\t\t<option value=\"{$result['id']}\">{$result['name']}</option>\n";
            }
        ?>
</td>
<tr>
      <td colspan="4"><input type="submit" value="OK"></td>
    </tr>
 
 <?php
require_once 'BDconnect.php'; // Подключаем БД из файла
 
$result = $_GET['id']; // Получаем параметр GET, который передали
 
// table - название Вашей таблицы
$sql = "SELECT * FROM `gruz` WHERE `id`=$result"; // Ваш запрос в БД(поиск записи по id)
 
$req = $dbh->prepare($sql);
$req->bindValue(':id', $result, PDO::PARAM_STR); //Данные, которые передаёте в запрос
$req->execute();
$array = $req->fetch(PDO::FETCH_ASSOC); // Возвращаем значение.
?>
 
 
<table style="margin-right: 700px; margin-top: 20px;"  border='1' align="right" width="20%" cellpadding="28" cellspacing="0" > 
 
 
<?php
if($array) { // Выводим данные
 echo "<td>№ секции <td>{$array['id']}</tr>";
 echo "<td>Название книги <td>{$array['id_upac']}</tr>";
 echo"<td>Автор <td>{$array['id_hran']}</tr>";
 echo "<td>Издание <td>{$array['id_komp']}</tr>";
 echo "<td>Год публикации <td>{$array['ves']}</tr>";
 echo"<td>Жанр <td>{$array['name']}</tr>";
 echo "<td>Количество страниц <td>{$array['rezmer']}</tr>";
}
?>
</table>
Добавлено через 20 минут
Если я пытаюсь запустить код, пишет это: Notice: Undefined index: id in C:\xampp\htdocs\dobavgruz\gruzi.php on line 34

Линия 34:
PHP
1
$result = $_GET['id']; // Получаем параметр GET, который передали
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.04.2020, 13:45
Ответы с готовыми решениями:

Выбор select по имени и в соответствии с этим именем вывод из БД значений
В таблице komp лежат данные о компаниях, она связана с таблицей gruz, где лежат данные о грузах по id_komp(в табл. gruz. Нужно, чтобы из...


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

Или воспользуйтесь поиском по форуму:
42
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
26.04.2020, 14:06
Nord-P, Так вы видимо скрипту не передали GET.
HTML5
1
/index.php?id=123456
0
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 68
26.04.2020, 14:35  [ТС]
Как мне его передать? То что Вы прислали, я не совсем понимаю..
Разве этим я не передаю?
PHP
1
$result = $_GET['id'];
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
26.04.2020, 15:07
Nord-P, Нет. Это вы уже считываете. А как передать я уже написал. Параметр GET передаётся в URL.
HTML5
1
mysite.com/index.php?id=123456
обратите внимание на id в URL. Это и есть переменная ( $_GET['id']
$_GET
0
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 68
26.04.2020, 15:23  [ТС]
у меня не получается сделать, как Вы сказали..(
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
26.04.2020, 15:27
Nord-P, Значит вам рано так глубоко. Начните с документации. Это же просто. Вот попробуйте у себя файл index.php url которого будет выглядеть так

HTML5
1
http://mysite.com/index.php?id=123456
index.php
PHP
1
2
3
<?php
echo $_GET['id'];
<?
0
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 68
26.04.2020, 15:33  [ТС]
Не могли бы Вы, пожалуйста, показать, как это должно выглядеть? Код, который Вы написали. Как он должен выглядеть в программе?

Добавлено через 1 минуту
Просто, мне не нужно перенаправлять на другую страницу. Нужно, чтобы информация оставалась на этой
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
26.04.2020, 16:03
Nord-P, У вас уже есть код. Как вы не понимаете, что $_GET это параметр URL Внимательнее прочитайте.

HTML5
1
http://mysite.com/index.php?id=123456&count=54321&sum=9999
PHP
1
2
3
4
5
<?php
echo $_GET['id']."<br/>";
echo $_GET['count']."<br/>";
echo $_GET['sum']."<br/>";
?>
Выведет на странице
HTML5
1
2
3
123456
54321
9999
Просто, мне не нужно перенаправлять на другую страницу. Нужно, чтобы информация оставалась на этой
Вы не сказали как имя файла вашей страницы поэтому я взял стандартный index.php

Но вообще (исходя из вашего сообщения и кода) может вам нужен id из таблицы kompania. Тогда вам нужно
PHP
1
$result = $result['id'];
правда вы прошлись до этого по всей таблицы и $result будет последней найденной записью.
0
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 68
26.04.2020, 16:12  [ТС]
Именно так. Я еще учусь, даже месяца нет еще от начала моей учебы наверное. Я пыталась сделать по аналогии с удалением из БД, но выдает кучу ошибок.
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
<table border='1' align="center" width="80%">
  <tr>
    <td>№</td>
    <td>Упаковка</td>
    <td>Место хранения</td>
    <td>Компания</td>
    <td>Название груза</td>
    <td>Вес</td>
    <td>Объем</td>
  </tr>
  <?php
    $sql = mysqli_query($link, 'SELECT `id`, `id_upac`, `id_hran`, `id_komp`, `ves`, `name`, `razmer` FROM `gruz`');
  if ($sql) {
      echo '<tr>' .
           "<td>{$result['id']}</td>" .
           "<td>{$result['id_upac']}</td>" .
           "<td>{$result['id_hran']}</td>" .
           "<td>{$result['id_komp']}</td>" .
           "<td>{$result['ves']}</td>" .
           "<td>{$result['name']}</td>" .
           "<td>{$result['razmer']}</td>" .
           "<td><a href='?id={$result['id']}'>Выбрать</a></td>" .
           '</tr>';
    }
  ?>
</table>
 
 
 
 
<?php
  if (isset($_GET['id'])) { //проверяем, есть ли переменная
    //удаляем строку из таблицы
    $sql = mysqli_query($link, "SELECT FROM `kompania` WHERE `id` = {$_GET['id']}");
    if ($sql) {
      echo '<tr>' .
      "<td>{$result['id']}</td>" .
      "<td>{$result['name']}</td>" .
      "<td>{$result['number']}</td>" .
      "<td>{$result['address']}</td>" .
      '</tr>';
    } else {
      echo '<p> Ошибка' . mysqli_error($link) . '</p>';
    }
  }
?>
Сейчас пытаюсь GET передать так:
PHP
1
2
3
<?php
echo "<a href='?id={$result['id']}'>Выбрать</a>";
?>
Но он просто не показывается на странице..
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
26.04.2020, 16:21
Nord-P, Тогда у вас полный бардак в скрипте. Сейчас чуть позже отпишусь.
0
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 68
26.04.2020, 16:30  [ТС]
Хорошо, жду Вас.

Я поняла почему он не отображался.. в общем, сделала вот так, и он даже пытается передать, но не передает..
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
<td>Компания</td>
        <td>
<table border='1' align="center" width="80%">
  <tr>
    <td>№</td>
    <td>Название</td>
    <td></td>
  </tr>
             <?php
            $sql = mysqli_query($link, 'SELECT `id`, `name` FROM `kompania`');
            while ($result = mysqli_fetch_array($sql)) {
              echo '<tr>' .
           "<td>{$result['id']}</td>" .
           "<td>{$result['name']}</td>" .
           "<td><a href='?id_n={$result['id_n']}'>Выбрать</a></td>" .
           '</tr>';
            }
        ?>
</td>
</table>
 <?php
require_once 'BDconnect.php'; // Подключаем БД из файла
$result = $result['id_n'];
 
// table - название Вашей таблицы
$sql = "SELECT * FROM `gruz` WHERE `id_n`=$result"; // Ваш запрос в БД(поиск записи по id)
 
$req = $dbh->prepare($sql);
$req->bindValue(':id_n', $result, PDO::PARAM_STR); //Данные, которые передаёте в запрос
$req->execute();
$array = $req->fetch(PDO::FETCH_ASSOC); // Возвращаем значение.
?>
 
 
<table style="margin-right: 700px; margin-top: 20px;"  border='1' align="right" width="20%" cellpadding="28" cellspacing="0" > 
 
 
<?php
if($array) { // Выводим данные
 echo "<td>№ секции <td>{$array['id']}</tr>";
 echo "<td>Название книги <td>{$array['id_upac']}</tr>";
 echo"<td>Автор <td>{$array['id_hran']}</tr>";
 echo "<td>Издание <td>{$array['id_komp']}</tr>";
 echo "<td>Год публикации <td>{$array['ves']}</tr>";
 echo"<td>Жанр <td>{$array['name']}</tr>";
 echo "<td>Количество страниц <td>{$array['rezmer']}</tr>";
}
?>
</table>

Линия 30:
PHP
1
"<td><a href='?id_n={$result['id_n']}'>Выбрать</a></td>" .

Линия 38:
PHP
1
$result = $result['id_n'];
Миниатюры
Выбор через select по имени компании и в соответствии с этим именем вывод из БД информации о грузе  
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
26.04.2020, 16:35
Nord-P, Для начала у вас нет <form> Должно быть что-то типа
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<form action="" method="get"> 
<table>
<td>Компания</td>
<td>
    <select name="id">
    <?php
    $sql = mysqli_query($link, 'SELECT `id`, `name` FROM `kompania`');
    while ($result = mysqli_fetch_array($sql)) {
        echo "\t\t<option value=\"{$result['id']}\">{$result['name']}</option>\n";
    }?>
    </select>
</td>
<tr>
    <td colspan="4"><input type="submit" value="OK"></td>
</tr>
</table>
</form>
Выбрав из списка и нажав OK у вас в URL появится ?id=
0
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 68
26.04.2020, 16:38  [ТС]
Вау, да, действительно появляется id, но также вылезает ошибка: Notice: Trying to access array offset on value of type null in C:\xampp\htdocs\dobavgruz\gruzi.php on line 37

Линия 37: $result = $result['id_n'];
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
26.04.2020, 16:38
и уже смело можете считывать
PHP
1
$result = $_GET['id'];
0
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 68
26.04.2020, 16:41  [ТС]
Ошибки больше нет, но он не выводит ничего. вообще
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
26.04.2020, 16:43
Nord-P, А дальше у вас не меньше бардака. Внезапно с mysqli у вас переход на PDO. Эти две таблицы находятся в одной базе?
0
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 68
26.04.2020, 16:45  [ТС]
kompania и gruz? Да, конечно. одна база. Переход на pdo, ну, до этого мне подсказали(для другого сайта), что лучше так, и я пыталась использовать его..
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
26.04.2020, 16:53
Nord-P, Лучше всё на PDO, но пока используем одно соединение. Уберите
PHP
1
require_once 'BDconnect.php';
и далее (замете ошибку - у вас вроде как в базе gruz столбец id_n, а в таблицу вы выводите $array['id']. Нужно $array['id_n']. Хотя, может быть, это два разных столбца

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$result = $_GET['id'];
$sql = mysqli_query($link,"SELECT * FROM `gruz` WHERE `id_n`=$result"); 
$array = mysqli_fetch_array($sql);
?>
 
<table style="margin-right: 700px; margin-top: 20px;"  border='1' align="right" width="20%" cellpadding="28" cellspacing="0" > 
 
<?php
if($array) { // Выводим данные
 echo "<td>№ секции <td>{$array['id_n']}</tr>";
 echo "<td>Название книги <td>{$array['id_upac']}</tr>";
 echo"<td>Автор <td>{$array['id_hran']}</tr>";
 echo "<td>Издание <td>{$array['id_komp']}</tr>";
 echo "<td>Год публикации <td>{$array['ves']}</tr>";
 echo"<td>Жанр <td>{$array['name']}</tr>";
 echo "<td>Количество страниц <td>{$array['rezmer']}</tr>";
}
?>
</table>
0
1 / 1 / 0
Регистрация: 16.10.2019
Сообщений: 68
26.04.2020, 16:56  [ТС]
Да, это 1 столбец, не заметила..
Не-а, ничего не выводит, ну, кроме ошибки.

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, bool given in C:\xampp\htdocs\dobavgruz\gruzi.php on line 38

Линия 38: $array = mysqli_fetch_array($sql);

Сделала, как Вы сказали..
0
 Аватар для HotReboot
326 / 227 / 92
Регистрация: 22.04.2017
Сообщений: 1,136
26.04.2020, 16:59
Nord-P, Структуру таблицы gruz покажите. У вас точно после $result = $_GET['id']; есть

PHP
1
$sql = mysqli_query($link,"SELECT * FROM `gruz` WHERE `id_n`=$result");
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru