I have a problem with my PHP project where I have to search my database using specific parameters given by the user.
This is my index.php where ALL content in printed out from database see image.
On my search page I have form from which 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.
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>
and PHP part where I don't have a clue about how should I give those parameters to database...
<?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>
This is what I have for now (image) 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
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
please help me and thank you in advance
Add name
attribute for select tag
<select name="proizvod" id="proizvod" selected="selected">
Add single quote for $proizvod1
(note: use a 'string'
after LIKE
):
$sql = 'SELECT id, proizvod, ime, cijena, slika FROM proizvodi WHERE proizvod LIKE \''.$proizvod1.'\' ORDER BY ID ASC';