Как сделать картинки из базы данных интерактивными с другим HTML?

#php

#php

Вопрос:

у меня есть этот код:

 <div class="row mt-2">
        <?php
        include 'config.php';
        $stmt = $conn->prepare("SELECT * FROM product");
        $stmt->execute();
        $result = $stmt->get_result();
        while($row = $result->fetch_assoc()):
        ?>
        <div class="col-lg-3">
                <div class="card-deck">
                    <div class="card p-2 border-secondary mb-2">
                        <a href="link'.$row['zdjecie_produktu']/'"><img style="margin-left:30px;" src="<?= $row['zdjecie_produktu'] ?>" class="card-img-top" height="250"></a>
                        <div style="margin-left: 30px; margin-right: 30px;" class="card-body p-1">
                            <h4 class="card-title text-center text-info"><?= $row['nazwa_produktu'] ?> </h4>
                            <h5 style="color:#fff;" class="card-text text-center text-danger"><?= number_format($row['cena_produktu'],2) ?>zł</h5>
                        </div>
                        <div class="card-footer p-1">
                            <form action="" class="form-submit">
                                <input type="hidden" class="pid" value="<?= $row['id'] ?>">
                                <input type="hidden" class="pname" value="<?= $row['nazwa_produktu'] ?>">
                                <input type="hidden" class="pprice" value="<?= $row['cena_produktu'] ?>">
                                <input type="hidden" class="pimage" value="<?= $row['zdjecie_produktu'] ?>">
                                <input type="hidden" class="pcode" value="<?= $row['kod_produktu'] ?>">
                                <button style="margin-left:300px;" class="btn btn-info btn-block addItemBtn"><img src="cart.png" width="20px;"></button>
                                <style>
      .btn:hover {
        background: #F5E595;
      }
    </style>
                            </form>
                        </div>
                    </div>
                </div>          
 </div>
<?php endwhile; ?>

 </div>
</div>
    
 

Но я хочу, чтобы каждая картинка была связана с другим HTML (в данном случае с изображением продукта с его описанием)… есть ли какой-нибудь код для этого?

Комментарии:

1. Итак, вы спрашиваете, есть ли способ динамического изменения href ?

2. просто используйте другую цель в вашем [теге], например <a href=product.php?serial=1234>

3. @El_Vanja Да, я так думаю

4. Затем создайте href способ, которым вы создаете src свой img тег — на основе переменной.

Ответ №1:

Ключевым компонентом является наличие уникального идентификатора в качестве ссылки.
Если у вас есть массив данных products (из базы данных или где угодно), скажите, как:

 // products.php 

// $products Array // Multiple products from database
$products = [
  [
    "id" => 101,
    "img" => "101.jpg",
    "name" => "foo",
    "desc" => "bar",
    "price" => 123.45,
  ],
  // [ ...another one here
];
 

Все, что вам нужно, это повторить их:

 // products.php 

foreach ($products as $pr):
   echo "<a href="product.php?id={$pr['id']}"><img src="products/{$pr['img']}" alt="{$pr['desc']}"> {$pr['name']} - {$pr['price']}

lt;/a>";
endforeach;

Обратите внимание на параметр поискового запроса product.php?id=101 — получите его значение внутри product.php страницы из HTTP-запроса с помощью GET .
Все, что вам нужно, это запросить базу данных для этого отдельного продукта по его идентификатору:

 // product.php

$productId = $_GET['id']; // @TODO: check if isset and validate
echo $productId; // 101

// Go query database, get single product by ID and display it
// Don't forget to use PDO Prepared Statements when querying the DB
 

https://www.php.net/manual/en/reserved.variables.get.php

Комментарии:

1. я получаю это на своей странице: foreach ($product как $pr): echo » {$pr[‘nazwa_produktu’]} — {$pr[‘cena_produktu’]} $»; endforeach; … вместо картинок

2. @OmegaMarcinek это, скорее всего, потому, что вы не используете PHP-файл (вероятно, a .html ?). Пожалуйста, просмотрите еще раз приведенный пример кода и убедитесь, что вы находитесь в среде PHP.

3. нет .. я использую php-файл … я не знаю, что не так

4. @OmegaMarcinek смотрите этот пример: phpsandbox.io/n/blue-frost-0xlb

5. я использую это: drive.google.com/file/d/1MyoNm3NSuPftxHiqS77UO6lOEbHED2Nx /…

Ответ №2:

По сути, все, что вам нужно сделать, это создать php-файл, называемый product.php и снабдите его параметром GET или строкой запроса.

Шаги будут примерно такими:

  1. создайте php-файл: product.php
  2. внутри вы должны выбрать информацию о своем продукте и отобразить ее:
     $id = isset($_GET['id']) ? $_GET['id'] : ''
    
    if($id == '') { die('Invalid product id.'); }
    
    $sql = "SELECT * FROM product WHERE id = :id";
    //process this query using your database method of choices
    
    //if product found, display the detail HTML:
    
    <div class="product-name"><?php echo $row['product_name']; ?></div>
    <img src="<?php echo $row['product_image']; ?>"><br>
     
  3. Теперь вернемся к вашему списку продуктов, измените его <a> href на product.php?id=$id
       <a href="product.php?id=<?php echo $row['product_id']; ?>">
       <img style="margin-left:30px;" src="<?= $row['zdjecie_produktu'] ?>" class="card-img-top" height="250">
      </a>