Hoe kan ik de zoekmachine op geselecteerde aspecten laten zoeken ?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$query = mysql_query("SELECT * FROM voorraad WHERE artikelvpr LIKE '%".$_POST['q']."%'")or die (mysql_error());
if(mysql_num_rows($query) == '') {
echo "Er is niks gevonden dat vergelijkbaar is met u zoekopdracht.<br/>Probeer wat preciezer te zijn.";
}
while($row = mysql_fetch_assoc($query)AND $res= mysql_fetch_assoc($kweerie)) {
echo "<table>";
echo "<th>Artikelgroep</th>";
echo "<th>omschrijving</th>";
echo "<th>locatie</th>";
echo "<th>aantal</th>";
echo "<tr>";
echo "<td>";
echo $row['productgroep'];
echo "</td>";
echo "<td>";
echo $row['artikelvpr'];
echo "</td>";
echo "<td>";
echo $row['locatievpr'];
echo "</td>";
echo "<td>";
echo $row['aantal'];
echo "</td>";
echo "</tr>";
}
}
?>
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$query = mysql_query("SELECT * FROM voorraad WHERE artikelvpr LIKE '%".$_POST['q']."%'")or die (mysql_error());
if(mysql_num_rows($query) == '') {
echo "Er is niks gevonden dat vergelijkbaar is met u zoekopdracht.<br/>Probeer wat preciezer te zijn.";
}
while($row = mysql_fetch_assoc($query)AND $res= mysql_fetch_assoc($kweerie)) {
echo "<table>";
echo "<th>Artikelgroep</th>";
echo "<th>omschrijving</th>";
echo "<th>locatie</th>";
echo "<th>aantal</th>";
echo "<tr>";
echo "<td>";
echo $row['productgroep'];
echo "</td>";
echo "<td>";
echo $row['artikelvpr'];
echo "</td>";
echo "<td>";
echo $row['locatievpr'];
echo "</td>";
echo "<td>";
echo $row['aantal'];
echo "</td>";
echo "</tr>";
}
}
?>
Mijn zoekmachine zoekt nu alleen op artikelnamen (artikelvpr), hoe kan ik er voor zorgen.. dmv. een dropdown selectiebox dat hij ook op andere aspecten kan zoeken?
mvg. Michel Alvast bedankt voor de moeite!:)
WHERE $_POST['zoek']
en dan een dropdown maken
thnx :) i'll try!:)
No problem
">
<SELECT NAME="zoek">
<OPTION value="artikelvpr"> Artikel Naam </OPTION>
<OPTION value="productgroep"> Artikel Groep </OPTION>
<OPTION value="leveranc"> Leverancier </OPTION>
<OPTION value="locatievpr"> Locatie </OPTION>
</SELECT>
<input type="text" name="q" id="q">
<input type="submit">
</form>
Ik krijg geen resultaat ... en als ik de querie echo krijg ik dit...
Resource id #5
grtz
<FORM METHOD="post" ACTION="<SELECT NAME="zoek">
<OPTION value="artikelvpr"> Artikel Naam </OPTION>
<OPTION value="productgroep"> Artikel Groep </OPTION>
<OPTION value="leveranc"> Leverancier </OPTION>
<OPTION value="locatievpr"> Locatie </OPTION>
</SELECT>
<input type="text" name="q" id="q">
<input type="submit">
</form>
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
include ('connect.php');
$minimaal = "SELECT * FROM voorraad";
$kweerie = mysql_query($minimaal);
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$query = mysql_query("SELECT * FROM voorraad WHERE '".$_POST['zoek']."' LIKE '%".$_POST['q']."%'")or die (mysql_error());
?>
include ('connect.php');
$minimaal = "SELECT * FROM voorraad";
$kweerie = mysql_query($minimaal);
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$query = mysql_query("SELECT * FROM voorraad WHERE '".$_POST['zoek']."' LIKE '%".$_POST['q']."%'")or die (mysql_error());
?>
Ik krijg geen resultaat ... en als ik de querie echo krijg ik dit...
Resource id #5
grtz
dan krijg je de query te zien en niet een resource id
Er is niks gevonden dat vergelijkbaar is met u zoekopdracht.
Probeer wat preciezer te zijn.
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\Program Files\xampp\htdocs\mervoorraad\artzoeken.php on line 60
de querie
wil je het hele script even posten????
mysql_query() or die(mysql_error());
<SELECT NAME="zoek">
<OPTION value="artikelvpr"> Artikel Naam </OPTION>
<OPTION value="productgroep"> Artikel Groep </OPTION>
<OPTION value="leveranc"> Leverancier </OPTION>
<OPTION value="locatievpr"> Locatie </OPTION>
</SELECT>
en een invoerveld met name="zoekshi"t"
dan krijg je dus een kwerie als:
Code (php)
1
2
3
4
2
3
4
<?php
$kwerie = "SELECT * FROM blabla WHERE '".$_POST['zoek']."' LIKE '%".$_POST['zoekshit']."%'";
$result = mysql_query($kwerie);
?>
$kwerie = "SELECT * FROM blabla WHERE '".$_POST['zoek']."' LIKE '%".$_POST['zoekshit']."%'";
$result = mysql_query($kwerie);
?>
Hoop dat je er wat mee kunt!! groetjes
Quote:
dan krijg je dus een kwerie als
Dan krijg je dus een query (nederlands) :-P
simon:
Dan krijg je dus een query (nederlands) :-P
Quote:
dan krijg je dus een kwerie als
Dan krijg je dus een query (nederlands) :-P
nou, ik wil niet veel zeggen, maar Query is volgens mij geen nederlands maar engels / amerikaans :P
EDIT:
@hieronder:
Twan:
Zon kinderachtige reactioe als die van jullie helpt deze persoon niet met het vinden van een oplossing, dus weer een beetje volwassen jongens
nee, met zo'n reactie help je hem verder (-_-')
Gewijzigd op 01/01/1970 01:00:00 door The Pope
Zon kinderachtige reactioe als die van jullie helpt deze persoon niet met het vinden van een oplossing, dus weer een beetje volwassen jongens
uhhmm... heeft iemand een idee wat mijn error kan betekenen ?
Michel:
Welke error? Er is inmiddels zo veel gezegd en geschreven, dat het handig is om even aan te geven wat je huidige foutmelding is. Tvens ben ik benieuwd hoe de query er nu uit ziet.uhhmm... heeft iemand een idee wat mijn error kan betekenen ?
<h3> Zoeken <h3>
<FORM METHOD="post" ACTION="">
<SELECT NAME="zoek">
<OPTION value="artikelvpr"> Artikel Naam </OPTION>
<OPTION value="productgroep"> Artikel Groep </OPTION>
<OPTION value="leveranc"> Leverancier </OPTION>
<OPTION value="locatievpr"> Locatie </OPTION>
</SELECT>
<input type="text" name="q" id="q">
<input type="submit">
</form>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
include ('connect.php');
$minimaal = "SELECT * FROM voorraad";
$kweerie = mysql_query($minimaal);
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$query = mysql_query("SELECT * FROM voorraad WHERE '".$_POST['zoek']."' LIKE '%".$_POST['q']."%'")or die (mysql_error());
echo "<table>";
echo "<th>Artikelgroep</th>";
echo "<th>omschrijving</th>";
echo "<th>locatie</th>";
echo "<th>aantal</th>";
if(mysql_num_rows($query) == '') {
echo "Er is niks gevonden dat vergelijkbaar is met u zoekopdracht.<br/>Probeer wat preciezer te zijn.";
}
while($row = mysql_fetch_assoc($query)AND $res= mysql_fetch_assoc($kweerie)) {
echo "<tr>";
echo "<td>";
echo $row['productgroep'];
echo "</td>";
echo "<td>";
echo $row['artikelvpr'];
echo "</td>";
echo "<td>";
echo $row['locatievpr'];
echo "</td>";
echo "<td>";
echo $row['aantal'];
echo "</td>";
echo "</tr>";
}
}
echo "$query";
?>
include ('connect.php');
$minimaal = "SELECT * FROM voorraad";
$kweerie = mysql_query($minimaal);
if($_SERVER['REQUEST_METHOD'] == 'POST') {
$query = mysql_query("SELECT * FROM voorraad WHERE '".$_POST['zoek']."' LIKE '%".$_POST['q']."%'")or die (mysql_error());
echo "<table>";
echo "<th>Artikelgroep</th>";
echo "<th>omschrijving</th>";
echo "<th>locatie</th>";
echo "<th>aantal</th>";
if(mysql_num_rows($query) == '') {
echo "Er is niks gevonden dat vergelijkbaar is met u zoekopdracht.<br/>Probeer wat preciezer te zijn.";
}
while($row = mysql_fetch_assoc($query)AND $res= mysql_fetch_assoc($kweerie)) {
echo "<tr>";
echo "<td>";
echo $row['productgroep'];
echo "</td>";
echo "<td>";
echo $row['artikelvpr'];
echo "</td>";
echo "<td>";
echo $row['locatievpr'];
echo "</td>";
echo "<td>";
echo $row['aantal'];
echo "</td>";
echo "</tr>";
}
}
echo "$query";
?>
Hier heb je alles:)
Dit is de error
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Program Files\xampp\htdocs\mervoorraad\artzoeken.php on line 56
Er is niks gevonden dat vergelijkbaar is met u zoekopdracht.
Probeer wat preciezer te zijn.
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\Program Files\xampp\htdocs\mervoorraad\artzoeken.php on line 60
en dit is de querie
SELECT * FROM voorraad WHERE 'artikelvpr' LIKE '%ergline%'
die heb ik ge-echood
Code (php)
1
$query = mysql_query("SELECT * FROM voorraad WHERE artikelvpr LIKE '%".$_POST['q']."%'")or die (mysql_error());
is vragen om mysql-injection..
kwaadwillenden kunnen bijvoorbeeld hele tabellen verwijderen of laten zien omdat de post variabele niet gecontroleerd word.
een simpel voorbeeld, we hebben een query als
SELECT * FROM users WHERE id=$_POST['id']
stel dat iemand dit opstuurd; $_POST['id'] = "1 ; DROP TABLE users";
3 maal raden wat er gebeurt. eerst worden alle gegevens over de user met id 1 opgevraagd, vervolgens wordt met een puntkomma die query afgesloten en een nieuwe gestart, een die de hele tabel users leegt!
hoe is dit op te lossen? simpel, controleer altijd of post variabelen geen dingen bevatten als puntkomma's en teksten als "DELETE", "DROP" en "SELECT".
ook selects moet je dus blokkeren, stel je voor dat iemand op het idee komt om dit als post in te voeren: 1 ; SELECT * FROM users
Inderdaad, hij krijg alle gegevens over alle leden te zien, helemaal een ramp als je zo stom bent om de wachtwoorden niet te versleutelen.
Maar dan het probleem:
SELECT * FROM voorraad WHERE 'artikelvpr' LIKE '%ergline%'
Deze query is fout. Je probeert nu de string 'artikelvpr' te vergelijken met '%ergline%'. Wat je echter wilt, is kijken in een bepaalde kolom of daar '%ergline%' voorkomt. Als 'artikelvpr' een kolomnaam is, mag deze nooit tussen quotes staan. Quotes geven aan dat het gaat om een string.
zo werkt het niet helemaal hoor.
je krijgt op de manier die jij zegt gewoon een foutmeldig of iets maar hij gaat echt niet die tabel verwijderen
Frank:
Abidou heeft volkomen gelijk, $_POST e.d. hoort nooit zo in een query te staan.
....
....
dat ben ik met je eens maar hij gebruikt een variable na een like.
dan wordt er niet een tabel verwijderd als je zoekt op DROP table user