У меня есть веб-страница, которая отображает автомобили с первого автомобиля в таблице до последнего автомобиля с петлей while.
У меня есть следующие столбцы: Make, Model, Price. В моем синтаксисе у меня есть привязанный тег вокруг строк Make, которые ссылаются на страницу описания нажимают на.
Я хочу, чтобы теги <h>
изменились на Model соответствующего Make.
Я потратил более часа, пытаясь добиться этого, но все, что я мог придумать, это:
<?php
$query = "SELECT Model FROM inventory;";
$Vtitle = $conn->query($query);
$Vtitle_ar = mysqli_fetch_assoc($Vtitle);
echo "<h1>".$Vtitle_ar['Model']."</h1>";
?>
Это работает до некоторой степени.
Каждый якорь, который я нажимаю, заменяет теги <h>
только первым результатом в столбце "Модель" в моей базе данных.
Вот мой код для всей страницы инвентаризации автомобилей
<?php
$query = "SELECT * FROM inventory;";
/* Try to query the database */
if ($result = $conn->query($query)) {
// Don't do anything if successful.
}
else {
echo "Error getting cars from database:" .$conn->error()."<br>";
}
// Create the table headers
echo "<table id='Grid' style='width: 80%'><tr>";
echo "<th style='width: 50px'>Make</th>";
echo "<th style='width: 50px'>Model</th>";
echo "<th style='width: 50px'>Asking Price</th>";
echo "</tr>\n";
$class = "odd"; // keep track of whether a row was even or odd, so we can style it later
// Loop through all the rows returned by the query, creating a table for each row
while ($result_ar = mysqli_fetch_assoc($result)) {
echo "<tr class=\"$class\">";
echo "<td><a href='viewcar.php?VIN=".$result_ar['VIN']."'>".$result_ar['Make']."<a></td>";
echo "<td>".$result_ar['Model']."</td>";
echo "<td>".$result_ar['ASKING_PRICE']."</td>";
echo "</td></tr>\n";
// if the last row was even, make the next one odd and vice-versa
if ($class=="odd") {
$class = "even";
}
else {
$class = "odd";
}
}
echo "</table>";
$conn->close();
?>
Кто-нибудь, как я могу это сделать?
Я новичок в программировании, и я пытаюсь использовать это для фактического проекта, над которым я работаю, для веб-сайта парикмахерской
Добавьте предложение WHERE
в запрос.
$vin = $_GET['VIN'];
$stmt = $conn->prepare("SELECT Model FROM inventory WHERE VIN = ?");
$stmt->bind_param("s", $vin);
$stmt->execute();
$stmt->bind_result($model);
$stmt->fetch();
echo "<h1>$model</h1>";
Хотя решение не было разрешено с использованием предложения where
, заданного @Barmar при форматировании кода, я обнаружил ошибку в HTML, которая не была сразу очевидна
Линейное echo "</td></tr>\n";
имеет дополнительный </td>
который нарушит поток html и может иметь пагубные последствия. Кроме того, //Don't do anything if successful.
не имеет смысла - если есть результаты, то обработать набор записей, иначе показать ошибку ;-)
<?php
$query = "SELECT * FROM inventory;";
if ( $result = $conn->query( $query ) ) {
echo "
<table id='Grid' style='width: 80%'>
<tr>
<th style='width: 50px'>Make</th>
<th style='width: 50px'>Model</th>
<th style='width: 50px'>Asking Price</th>
</tr>";
$i=0;
while( $result_ar = mysqli_fetch_assoc( $result ) ) {
$class = $i %2 == 0 ? 'even' : 'odd';
echo "
<tr class='$class'>
<td><a href='viewcar.php?VIN={$result_ar['VIN']}'>{$result_ar['Make']}<a></td>
<td>{$result_ar['Model']}</td>
<td>{$result_ar['ASKING_PRICE']}</td>
</tr>";
$i++;
}
echo "</table>";
} else {
echo "Error getting cars from database:" .$conn->error()."<br>";
}
$conn->close();
?>
Для стилизации альтернативных строк таблицы (приведенное выше использует функцию modulus
для вычисления нечетного/четного), вы можете сделать это с помощью некоторого простого CSS - например,
tr:nth-child( odd ){/* rules */}
SELECT Model FROM inventory WHERE VIN=YOUR_VALUE