简体   繁体   English

使用HTML表单选择和php输入文本来搜索数据库

[英]Search DB using HTML form select and text input with php

I have a problem with my php project where I have to search my database using specific parameters given by the user. 我的php项目有问题,我必须使用用户提供的特定参数来搜索数据库。

This is my index.php where ALL content in printed out from database enter image description here 这是我的index.php,从数据库打印出来的所有内容都在此处输入图像描述

On my search page I have form from wich you have to choose product type ("keyboard, graphics card, motherboard....") and enter MAXIMUM PRICE for that product type, and then page returns content from database that meets the requirements parameters. 在我的搜索页面上,我有一张表格,您必须选择产品类型(“键盘,图形卡,主板...”),然后为该产品类型输入MAXIMUM PRICE,然后页面从数据库中返回满足要求参数的内容。

this is my code for now html part 这是我现在的代码

<html>
<body>
    <form name="search" action="" method="post">
        <p>
            Odaberite proizvod: 
            <select id="proizvod"  selected="selected">
                <option value="tipkovnica">Tipkovnica</option>
                <option value="graficka">Graficka kartica</option>
                <option value="maticna">Maticna ploca</option>
                <option value="kuciste">Kuciste</option>
            </select>

        </p>
        <p>
            Cijena do: 
            <input type="text" name="cijena" value="">
        </p>
        <p>
            <input type="submit" name="trazi" value="Trazi">
        </p>
    </form>     

this is what I have for now enter image description here 这就是我现在要输入的图像描述

and if I click on submit I get this error 如果我单击提交,我会收到此错误

Notice: Undefined index: proizvod in D:\\Program Files (x86)\\EasyPHP-DevServer-14.1VC11\\data\\localweb\\projects\\RWA\\contentSearch.php on line 25 注意:未定义索引:第25行的D:\\ Program Files(x86)\\ EasyPHP-DevServer-14.1VC11 \\ data \\ localweb \\ projects \\ RWA \\ contentSearch.php中的proizvod

Fatal error: Call to a member function setFetchMode() on a non-object in D:\\Program Files (x86)\\EasyPHP-DevServer-14.1VC11\\data\\localweb\\projects\\RWA\\contentSearch.php on line 32 致命错误:在第32行的D:\\ Program Files(x86)\\ EasyPHP-DevServer-14.1VC11 \\ data \\ localweb \\ projects \\ RWA \\ contentSearch.php中的非对象上调用成员函数setFetchMode()

and php part where I don't have a clue about how should I give that parameters to database... 和php部分,在这里我不知道如何将参数赋予数据库...

        <?php
    if (isset($_POST["trazi"]))
    {
        $proizvod1 = $_POST['proizvod'];
        $cijenaDo = $_POST['cijena'];
        //getting all from database
            try 
            {
                $sql = 'SELECT id, proizvod, ime, cijena, slika FROM proizvodi WHERE proizvod LIKE '.$proizvod1.' ORDER BY ID ASC';
                $q = $conn->query($sql);
                $q->setFetchMode(PDO::FETCH_ASSOC);
            }
            catch (PDOException $pe)
            {
                die("Could not connect to the database $dbname :" . $pe->getMessage());
            }
    //PRINTING OUT THE TALBE WITH CONTENT
        ?>

        <table border="0"><tr>
            <?php 
            $i=0;
            $start = true;
            while ($r = $q->fetch()): 
                if($i %2 == 0 && !$start)
                {
                    echo '</tr><tr>';
                }
            ?>
                <td><a href="proizvod.php?id=<?php echo $r['id']; ?>"><img src="<?php echo $r['slika']; ?>" width="300"></a></td>
                <td>
                    <div class="naziv"><h3><a href="proizvod.php?id=<?php echo $r['id']; ?>"><?php echo $r['ime']; ?></a></h3></div>
                    <div class="identifikator_modela">Proizvod: <?php echo $r['proizvod']; ?></div>
                    <div class="cijena">Cijena:<b> <?php echo $r['cijena'] . ' kn'; ?></b></div>
                </td>
            <?php $i++; $start = false; endwhile; ?>
        </tr></table>
    <?php } ?>
</body>

please help me and thank you in advance 请帮助我,谢谢你

  1. Add name attribute for select tag <select name="proizvod" id="proizvod" selected="selected"> 为选择标签添加name属性<select name="proizvod" id="proizvod" selected="selected">

  2. Add single quote for $proizvod1 (note: use a 'string' after LIKE ): $proizvod1添加单引号(注意:在LIKE之后使用'string' ):
    $sql = 'SELECT id, proizvod, ime, cijena, slika FROM proizvodi WHERE proizvod LIKE \\''.$proizvod1.'\\' ORDER BY ID ASC';

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM