Validering af ikke eksisterente produkter

Er igang med at lave en POST øvelse, og laver en formular med tekstfelter! jeg laver nu et søgningsværktøj til lager. Brugeren skal have 2 tekstfelter (navn og pris) som han kan indtaste i. Når han trykker submit, skal man via POST finde og udskrive de varer, som der matcher hans søgning.
Jeg har fået det til at virke hvor søgningen virker på et felt af gangen, men ikke samtidig.
Og så hvis varen ikke findes, så skal den returnerer med at varen ikke findes.
<html>
<head>
<title>Øvelse 5 - Video 5</title>
</head>
<body>
<h1>Lagerstyring</h1>
<form method="POST" action="5_4_Post.php"
<label for="vare">Produkt</label>
<input type="text" name="vare">
<br><br>
<label for="pris">Pris</label>
<input type="number" name="pris">
<br><br>
<input type="submit" value="Søg">
</form>
</body>
</html>
<?php
require_once '5_3_connect.php';
echo "<br><hr>";
echo "Du har søgt på følgende:<br><br>";
echo "Produkt: " . $_POST['vare'];
echo "<br>";
echo "Pris: " . $_POST['pris'];
echo "<br><br>";
$lager = $_POST['vare'];
$stmt = $mysqli->prepare("SELECT navn, pris, antal FROM lager WHERE navn=?");
$stmt->bind_param("s",$lager);
$stmt->execute();
$stmt->bind_result($navn, $pris, $antal);
while ($stmt->fetch()) {
echo "Vi følgende på lager:<br>";
echo "Produkt: " . $navn . ": ". "Antal: " . $antal . " stk.";
echo "<br>";
echo "Kr. " . $pris . " pr. stk.";
echo "<br><br>";
}
$stmt->close();

Hej @PXMDK
Det klart nemmeste ville være at lave if/elseif/else konsekvenser for hvordan du vil kalde din database query. Et lille eksempel nedenunder her:
/*
* Tjekker om begge felter er sat, hvis de er bruger vi begge.
*/
if (empty($_POST['vare']) && empty($_POST['pris'])) {
$stmt = $mysqli->prepare("SELECT navn, pris, antal FROM lager WHERE navn = ? AND pris = ?");
$stmt->bind_param("s", $_POST['vare'], $_POST['pris']);
} elseif (empty($_POST['vare'])) {
/*
* Hvis kun "vare" er sat.
*/
$stmt = $mysqli->prepare("SELECT navn, pris, antal FROM lager WHERE navn = ?");
$stmt->bind_param("s", $_POST['vare']);
} elseif (empty($_POST['pris'])) {
/*
* Hvis kun "pris" er sat.
*/
$stmt = $mysqli->prepare("SELECT navn, pris, antal FROM lager WHERE pris = ?");
$stmt->bind_param("s", $_POST['pris']);
} else {
/*
* Intet var søgt på, redirect tilbage til søge formularen.
* Skift Location: / ud med hvor din formular er.
*/
header("Location: /"); die();
}
/*
* Gå videre med at execute og så videre...
*/
$stmt->execute();
$stmt->bind_result($navn, $pris, $antal);
Det er en måde at gøre tingene på. (Ikke den bedste, men en måde i min personlige mening.) Jeg vil dog sige (selvom det er vores video på et brugersystem i PHP) at du med fordel kan se denne her video omkring validering af POST data. (Formularer.)
Link: https://v5.dk/php-programmering/validering-af-data-fra-vores-formular.html
Og går du tilbage fra det link til det "Forrige afsnit" eller følger linket her: https://v5.dk/php-programmering/opbygning-af-fejlhandterings-system-med-et-array-i-php.html
Så får du lidt ekstra god viden omkring "Opbygning af fejlhåndterings-system med et array i PHP".
God fornøjelse.
P.S: Hvis du undre dig over min måde at kommentere på, er det fordi jeg har siddet med "C programmerings sproget" i noget tid. Så det har holdt lidt ved. Man kan gøre det på mange måder. PHP er især fleksibel på dette punkt.
@dhh
d. 10.11.2016 kl. 12:34 Med venlige hilsner
Daniel H. Hemmingsen (@dhh)