циклы — перебор значений строки из соединения нескольких таблиц PHP / MYSQLi

У меня есть JOIN из нескольких таблиц.

$sql_entries = "SELECT transaction_information . *, customer_information . * , property_information . *, borrowers . *,  lenders . *, listing_agents . *, payoff . *,  sellers . *, selling_agents .*
FROM transaction_information
JOIN customer_information ON transaction_information.entry_no = customer_information.entry_no
JOIN property_information ON transaction_information.entry_no = property_information.entry_no
JOIN borrowers ON transaction_information.entry_no = borrowers.entry_no
JOIN lenders ON transaction_information.entry_no = lenders.entry_no
JOIN listing_agents ON transaction_information.entry_no = listing_agents.entry_no
JOIN payoff ON transaction_information.entry_no = payoff.entry_no
JOIN sellers ON transaction_information.entry_no = sellers.entry_no
JOIN selling_agents ON transaction_information.entry_no = selling_agents.entry_no
";

Возвращает около 50+ столбцов. Я хочу отображать имена столбцов сверху и снизу значения.

Я пытаюсь использовать следующий код, но он не дает мне желаемого результата.

      $result_entries = $conn->query($sql_entries);



if ($result_entries->num_rows > 0) {
echo '<div id="total"><table class="table table-striped table-bordered table-responsive">';

echo "<tr>";
//$entries = array();
while($row = $result_entries->fetch_assoc()) {



foreach ($row as $key => $value) {



echo '<th>'.$key.'</th>';
}

echo '</tr>';

}

//ROw of Table heading ends.
// Fetch values in the columns under the respective heads.

while($row1 = $result_entries->fetch_assoc()) {
echo '<tr>';

foreach ($row1 as $col) {

echo '<td>'.$col.'</td>';
//This wil return Object and I know. But I don't want to use   $row['indexName'] and repeat myself for fetching values as there are too many columns.

}
echo '</tr>';
}



echo "</table></div>";
} else {
echo "0 results for Entries";
}

Хорошо, мой первый вопрос будет заключаться в том, чтобы перебирать каждое значение строки, не делая что-то вроде $ row [‘indexname’] Во-вторых, заголовки моих столбцов повторяются дважды в одном ряду.

1

Решение

С помощью array_keys() Вы можете получить имена ваших столбцов. Затем с помощью implode() Вы можете построить строку заголовка, с <th></th>, Чтобы отображать только строку заголовка в первом цикле, вы можете использовать логическое значение var, т.е. $header = true;, Затем, после вывода строки заголовка, установите для нее значение false, и она больше не будет выводиться. Ваш код будет выглядеть примерно так:

$result_entries = $conn->query($sql_entries);

if ($result_entries->num_rows > 0) {
echo '<div id="total"><table class="table table-striped table-bordered table-responsive">';

$headers = true;

while($row = $result_entries->fetch_assoc()) {

// echo headers on 1st iteration
if($headers){
echo "<tr><th>".implode("</th><th>",array_keys($row))."</th><tr>";
$headers = false;
}

// echo row values
echo "<tr>";
foreach ($row as $key => $value) {
echo "<td>".$value."</td>";
}
echo "</tr>";
}
echo "</table></div>";
} else {
echo "0 results for Entries";
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]