Запрос в запросе или получение данных из двух таблиц mysql php

157
03 мая 2019, 10:30

Подскажите пожалуйста, как правильнее организовать? Есть код который выводит данные из таблицы:

<?php
$host = 'localhost';
    $db   = '';
    $user = '';
    $pass = '';
    $charset = 'utf8';
    $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
    $opt = [
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES   => false,
    ];
    $pdo = new PDO($dsn, $user, $pass, $opt);
    $stmt = $pdo->query("SELECT * FROM task WHERE id_t = ".$_GET['id']."");
while ($row = $stmt->fetch()) {
    echo "
    <table>
    <tr>
    <td>Номер процесса:</td>
    <td>".$row['id_t']."</td>
    </tr>
    <tr>
<td>Процесс:</td>";
    $stmt = $pdo->query("SELECT * FROM process WHERE id_pr = ".$row['process_t']."");
    while ($row = $stmt->fetch()) {
    echo "
    <td><select name='process_t'>
      <option>".$row['name_pr']."</option>";    }
echo $row['id_t'];
    }
    ?>

Но почему то я не могу получить данные echo $row['id_t']; из первого цикла после второго. В чем может быть проблема? Правильно ли сделано? Я так понимаю что цикл в цикле плохо и не лучше ли будет вывести информацию сразу с двух таблиц? Если да то как это сделать? Спасибо.

Answer 1

ну конечно ничего не получится вы же переменную в вложенном цикле перезаписали. сделайте примерно так

$stmt = $pdo->query("SELECT * FROM task WHERE id_t = " . $_GET['id'] . "");
while ($row = $stmt->fetch()) {
    echo "
    <table>
    <tr>
    <td>Номер процесса:</td>
    <td>" . $row['id_t'] . "</td>
    </tr>
    <tr>
<td>Процесс:</td>";
    $stmt2 = $pdo->query("SELECT * FROM process WHERE id_pr = " . $row['process_t']);
    while ($row2 = $stmt2->fetch()) {
        echo "
    <td><select name='process_t'>
      <option>" . $row2['name_pr'] . "</option></td>";
    }
    echo $row['id_t'];
}

и не забывайте о закрывающем тэге </td>

READ ALSO
Создание админ панели на Laravel

Создание админ панели на Laravel

Задача: создать на Laravel + Frozennode админ панель для сайта, чтобы никто не мог регистрироватьсяПодкиньте пару примеров или литературу

178
Как беря данные с массива при null сделать условие что бы было другое значение?

Как беря данные с массива при null сделать условие что бы было другое значение?

Если адрес в массиве полученном имеет значение null пустует что делать?

125
В чем разница между code и status?

В чем разница между code и status?

при выбрасывании throw new HttpException есть возможно выкинуть не только статус и сообщение, но и код

176
Использование html как шаблона в php

Использование html как шаблона в php

Подскажите, есть ли способ для подстановки значений переменных в загружаемый html ? Допустим, имеет templatehtml :

168