Как вы можете использовать PHP и базу данных SQL для изменения содержимого HTML <h>?

0

У меня есть веб-страница, которая отображает автомобили с первого автомобиля в таблице до последнего автомобиля с петлей 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();
?>

Кто-нибудь, как я могу это сделать?

Я новичок в программировании, и я пытаюсь использовать это для фактического проекта, над которым я работаю, для веб-сайта парикмахерской

  • 0
    SELECT Model FROM inventory WHERE VIN=YOUR_VALUE
Теги:
select
while-loop

2 ответа

0
Лучший ответ

Добавьте предложение 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>";
  • 0
    Это работает, я уверен, что вы это знаете. Спасибо, я действительно понимаю концепцию, стоящую за этим тоже. Я думал об использовании готового заявления, я просто не знал, как я это сделаю, но это очень помогает!
0

Хотя решение не было разрешено с использованием предложения 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 */}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню