Я новичок в PHP и работаю над очень простым запросом SELECT, извлекающим информацию из базы данных MySQL. У меня есть оператор echo, который выводит, что мое подключение к базе данных было успешным, что является самой первой строкой на веб-странице. После отображения «Подключено успешно» оператор SELECT извлекает информацию о запросе в таблицу.
Прямо сейчас все загружается и отображается правильно, но между моим оператором подключения echo и фактическими результатами таблицы есть большой разрыв. Я пытался напрямую выровнять свою таблицу по «ВЕРХУ», но это все еще дает большой разрыв.
<!DOCTYPE html>
<html>
<style>
#trip th {
padding-top: 5px;
padding-bottom: 5px;
text-align: left;
background-color: #4CAF50;
color: white;
}
#trip {
border-collapse: collapse;
width: 75%;
}
#trip td, #trip th {
border: 1px solid #ddd;
padding: 8px;
}
#trip tr:nth-child(even){
background-color: #f2f2f2;
}
#trip tr: hover {
background-color: #ddd;
}
</style>
<body>
<?php
require "Login.php";
?>
<?php
//Create Connection
$conn = mysqli_connect($serverName, $userName, $password, $dbName);
//Check connection
if ($conn === false) {
die("ERROR: Could not Connect. " . mysqli_connect_error());
}
echo "Connected successfully";
//SQL SELECT query execution
$sql = "SELECT * FROM Trip";
if ($result = mysqli_query($conn, $sql)){
if (mysqli_num_rows($result) > 0){
echo "<table id='trip' align='top'>";
echo "<tr>";
echo "<th>TID </th>";
echo "<th>NAME </th>";
echo "<th>DATE </th>";
echo "<th>COST </th><br>";
echo "</tr>";
while($row = mysqli_fetch_array($result)){
echo "<tr>";
echo "<td>" . $row['TID'] . " </td>";
echo "<td>" . $row['NAME'] . " </td>";
echo "<td>" . $row['DATE'] . " </td>";
echo "<td>" . $row['COST'] . " </td>";
echo "</tr>";
}
echo "</table>";
//Free result set
mysqli_free_result($result);
}
else {
echo "No records matching your query were found";
}
}
else {
echo "ERROR: Could not execute $sql. " . mysqli_error($conn);
}
//Close connection
mysqli_close($conn);
?>
</body>
</html>
Я бы хотел, чтобы таблица отображалась прямо под моим сообщением «Подключено успешно», но, похоже, что-то помещает таблицу дальше вниз по странице.
Редактировать Исправлена ошибка "\", которая добавлялась при попытке вставки в Stackoverflow. Не уверен, почему это было добавлено. Это не в моем фактическом файле PHP.
Почему у вас здесь обратная косая черта: echo "<td>" . $row\['TID'\] . " </td>";? Это недопустимый синтаксис PHP.
@Barmar Не уверен, почему был добавлен этот «\». Этого нет в моем файле PHP. Это было добавлено, когда я пытался вставить в Stackoverflow и использовать форматирование кода.
Очень странно. Я видел много сбоев с отступами при вставке в SO, но никогда не видел лишних обратных косых черт.






Проблема в том, что у вас есть <br> в конце этой строки:
echo "<td>" . $row['COST'] . " </td><br>";
Поскольку <br> не допускается внутри элементов <tr>, браузер отображает их перед таблицей. Таким образом, количество пустых строк перед таблицей равно количеству строк таблицы.
Избавьтесь от этого, это бесполезно.
#trip th {
padding-top: 5px;
padding-bottom: 5px;
text-align: left;
background-color: #4CAF50;
color: white;
}
#trip {
border-collapse: collapse;
width: 75%;
}
#trip td,
#trip th {
border: 1px solid #ddd;
padding: 8px;
}
#trip tr:nth-child(even) {
background-color: #f2f2f2;
}
#trip tr: hover {
background-color: #ddd;
}<div>Connected successfully</div>
<table id='trip' align='top'>
<tr>
<th>TID </th>
<th>NAME </th>
<th>DATE </th>
<th>COST </th>
</tr>
<tr>
<td>TID</td>
<td>NAME</td>
<td>DATE</td>
<td>COST</td>
</tr>
<tr>
<td>TID</td>
<td>NAME</td>
<td>DATE</td>
<td>COST</td>
</tr>
<tr>
<td>TID</td>
<td>NAME</td>
<td>DATE</td>
<td>COST</td>
</tr>
</table>
Как выглядит обработанный HTML?