使用来自 mySQL 数据库的数据填充引导卡

Posted

技术标签:

【中文标题】使用来自 mySQL 数据库的数据填充引导卡【英文标题】:Filling boostrap cards with data from a mySQL database 【发布时间】:2021-08-03 02:30:04 【问题描述】:

我正在尝试用数据库中的数据填充引导卡。 我非常接近。 我有名为 project.php 的 mainphp 文件

有一个名为component的函数来填充它们的文件,称为component.php。

还有一个 connectDB.php 文件,用于连接数据库并从表中提取信息。

我知道这是很多代码,所以我强调了问题肯定出在的 2 个区域......如果太多,我很抱歉,如果需要,我可以删除该功能,因为它可以工作..

这里是 project.php 的摘录

<?php
require_once('connect/connectDB.php');
require_once('component.php');




?>
<!doctype html>
<html lang="en">
  <head>

   <title>The Wild Music Shop</title>
   
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <!--Font awesome-->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" integrity="sha512-iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRBv0z+8dLJgyAHIhR35VZc2oM/gI1w==" crossorigin="anonymous" />
    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" integrity="sha384-B0vP5xmATw1+K9KRQjQERJvTumQW0nPEzvF6L/Z6nronJ3oUOFUFpCjEUQouq2+l" crossorigin="anonymous">
    
    <!-- i have no idea why it won't link -->
    <!-- <link type="text/css" rel="stylesheet" href="myCSS/somecss.css"> -->
    <link rel="stylesheet" href="myCSS/somecss.css">

</head>
<body>

    <!-- the cards -->
    <div class = "container" id="thecards">
        <div class = "row text-center py-5">

//Definite problem here
             <?php
             $result = getData();
             while ($row = mysqli_fetch_assoc($result))
                 component($row['InstName'], $row['Price'], $row['ProductImg'], $row['description']);
             
            ?>  
            

        </div>

    </div>
</html>

这个组件在我测试时确实有效

<?php

function component($pInstName, $pPrice, $pProductImg, $pdescription)
    $element = "
    
    <div class=\"col-md-3 col-sm-6 my-3 my-md-0\">
                <form action=\"index.php\" method=\"post\">
                    <div class=\"card shadow\">
                        <div>
                            <img src=\ $pProductImg\" alt=\"Image1\" class=\"img-fluid card-img-top\">
                        </div>
                        <div class=\"card-body\">
                            <h5 class=\"card-title\">Our $pInstName</h5>
                            <h6>
                                <i class=\"fas fa-star\"></i>
                                <i class=\"fas fa-star\"></i>
                                <i class=\"fas fa-star\"></i>
                                <i class=\"fas fa-star\"></i>
                                <i class=\"far fa-star\"></i>
                            </h6>
                            <p class=\"card-text\">
                            $pdescription
                            </p>
                            <h5>
                               
                                <span class=\"price\">$$pPrice</span>
                            </h5>
                            <button type=\"submit\" class=\"btn btn-warning my-3\" name=\"add\">Add to Cart </button>
                             
                        </div>
                    </div>
                </form>
            </div>
    ";
    echo $element;

?>

最后是connectDB.php

<?php


        //Create a database connection
        $dbhost = "localhost";
        $dbuser = "root";
        $dbpassword = "";
        $dbname = "g00398295";

        $connection = mysqli_connect($dbhost,$dbuser,$dbpassword,$dbname);
        
        //Test if connection occoured
        if(mysqli_connect_errno())
            die("DB connection failed: " .
                mysqli_connect_error() .
                    " (" . mysqli_connect_errno() . ")"
                    );
        

        if (!$connection)
            
                die('Could not connect: ' . mysqli_error());
            
            
            $sql = "select * from Instruments where itemno = 1; ";
            
            $result = mysqli_query($connection,$sql);
            $row=mysqli_fetch_assoc($result);
            
            echo "Pls work".$row['InstName'];
            
            mysqli_close($connection);
            //get product from Database
//Definite problem here
        function getData()
            $sql = "select * from $this->tablename";

            $result = mysqli_query($this->con,$sql);
            if(mysqli_num_rows($result) > 0)
                return $result;
            

        

?>

我知道问题出在连接步骤的某个地方。总的来说,我对 php 很陌生,并且已经很长时间了,我将不胜感激!

【问题讨论】:

您确实需要缩小问题范围。您遇到的确切问题是什么?您是否收到任何错误?它只是不像你期望的那样格式化吗? 是的,很抱歉,我在不断调整代码时遇到了多个错误。我很累。我知道 slack 并不是要让人们编写代码,我只知道我非常接近。 【参考方案1】:

您有一个具有“$this->table”的函数 getData()。不要复制粘贴代码而不了解它的作用......清理你的connectDB.php

<?php


        //Create a database connection
        $dbhost = "localhost";
        $dbuser = "root";
        $dbpassword = "";
        $dbname = "g00398295";

        $connection = mysqli_connect($dbhost,$dbuser,$dbpassword,$dbname);
        
        //Test if connection occoured
        if(mysqli_connect_errno())
            die("DB connection failed: " .
                mysqli_connect_error() .
                    " (" . mysqli_connect_errno() . ")"
                    );
        

        
            

?>

在 project.php 中

   <div class = "row text-center py-5">

//Definite problem here
             <?php
               
            $sql = "select * from Instruments where itemno = 1; ";
            
            $result = mysqli_query($connection,$sql);
             while ($row = mysqli_fetch_assoc($result))
                 component($row['InstName'], $row['Price'], $row['ProductImg'], $row['description']);
             
            ?>  
            

        </div>

【讨论】:

你是说在那里结束 php 脚本吗?当我没有这样做时,我得到了一个无法通过 sql 连接错误。然后我这样做了,我通过得到了列表中的一项 好的 经过一些调整,您以非常简单的方式解决了我的问题。谢谢!

以上是关于使用来自 mySQL 数据库的数据填充引导卡的主要内容,如果未能解决你的问题,请参考以下文章