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

Вывод не только одного массива в while из БД

05.12.2019, 00:07. Просмотров 108. Ответов 2
Метки нет (Все метки)

Имеется задача: необходимо вывести таблицу payments, которая содержит внешний ключ от другой таблицы.
Вот такой код:
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
function getDataPayment($host, $user, $password, $database) {
        $link = mysqli_connect($host, $user, $password, $database) 
            or die("Ошибка " . mysqli_error($link));
 
        $query = 'SELECT * FROM payment';
        $result = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link));
        $queryAddition = 'SELECT * FROM student WHERE ID_student = '.$data['ID_student'].'';
        //$dataAddition = mysqli_fetch_assoc($queryAddition);
 
        echo '<h2>Оплата</h2>
                <table class = "table table-hover table-striped">
                    <thead class = "thead-inverse thead-dark">
                    <tr>
                    <th>Номер оплаты</th>
                    <th>Дата оплаты</th>
                    <th>Сумма оплаты</th>
                    <th>ФИО студента</th>
                    </tr>
                    </thead>
                    <tbody>';
        while($data = mysqli_fetch_assoc($result)) {
            echo '<tr><th scope="row">'.$data['ID_payment'].'</th>
                    <th scope="row">'.$data['Date_payment'].'</th>
                    <th scope="row">'.$data['Total_summ'].'</th>
                    <th scope="row">'.$data['FIO_student'].'</th></tr>';
        }
        echo '</tbody>
                    </table>';
 
        mysqli_close($link);
    }
Если запустить его, то все колонки будут нормально выводиться, кроме ФИО студента. Из запроса $queryAddition ясно какая логика прописывается. То есть нужно вывести ФИО студента, который эту оплату совершил.
Вопрос скорее алгоритмический, нежели по языку непосредственно.
Как это сделать?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2019, 00:07
Ответы с готовыми решениями:

Запрос: вывод прививок только одного ученика
Не могу правильно написать Sql запрос, чтобы выводились прививки только одного ученика. В аксессе...

Копировать из одного массива в другой только положительные числа
по лабе нужно вывести из одного массива в другой только положительные числа, у меня не получается...

2

madamx
1 / 0 / 1
Регистрация: 13.01.2015
Сообщений: 48
05.12.2019, 00:30 2
while($data = mysqli_fetch_assoc($result)) {
$dataAddition = mysqli_fetch_assoc($queryAddition);
echo '<tr><th scope="row">'.$data['ID_payment'].'</th>
<th scope="row">'.$data['Date_payment'].'</th>
<th scope="row">'.$data['Total_summ'].'</th>
<th scope="row">'.$dataAddition['FIO_student'].'</th></tr>';

так что ли?
0
lorconst
2 / 2 / 0
Регистрация: 28.07.2014
Сообщений: 58
05.12.2019, 02:06  [ТС] 3
madamx, нет, тоже пустоту выдает.
Попытался решить проблему таким образом:
SQL
1
2
3
$query = 'SELECT ID_payment, Date_payment, Total_summ, ID_student, FIO_student
        FROM payment as P, student as S
        WHERE ID_student.P = ID_student.S';
То есть думал объединить все в одном запросе. Но выдает такую ошибку Ошибка Column 'ID_student' in field list is ambiguous
Гугл говорит, что субд не может определить из какой таблицы брать ID_student, потому что эта колонка есть в обеих таблицах.
Как решить?

Добавлено через 10 минут
И кучу предупреждений Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, string given in C:\OSPanel\domains\courseWork\Query.php on line 52
52 строка это как раз $dataAddition = mysqli_fetch_assoc($queryAddition);
Цитата Сообщение от madamx Посмотреть сообщение
while($data = mysqli_fetch_assoc($result)) {
$dataAddition = mysqli_fetch_assoc($queryAddition);
echo '<tr><th scope="row">'.$data['ID_payment'].'</th>
<th scope="row">'.$data['Date_payment'].'</th>
<th scope="row">'.$data['Total_summ'].'</th>
<th scope="row">'.$dataAddition['FIO_student'].'</th></tr>';
Добавлено через 1 час 5 минут
Вопрос более не актуален. Решил решить эту проблему средствами SQL, дабы не загромождать php-код.
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2019, 02:06

Вывод одного и того же числа вместо элементов массива
Студия выдает какое-то одинаковое число на всех местах массива,вместо чисел( #include...

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

Или воспользуйтесь поиском по форуму:

3
Ответ Создать тему
Опции темы

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