php zoekformulier tussenwaardes
Ik ben bezig met een zoekformulier en daarin wil ik laten zoeken op onder andere Vierkante meter. Dit wou ik bereiken door de bezoeker de keuze te geven in een dropdown:
Vierkante meter: <select name="vierkanteq">
<option value="x<150"><150</option>
<option value="150<=x<=300">150-300</option>
<option value="300<x<=1000">300-1000</option>
<option value="x>1000">>1000</option>
</select>
dit wordt dan doorgegeven in search.php, getrimmed
var4 = @$_GET['vierkanteq'] ; => hier krijg ik een foutmelding voor de "="
$trimmed4 = trim($var4);
en dan is de bedoeling dat de resultaten weergegeven worden
$field4="vierkante meter";
$query="SELECT * FROM $table WHERE $field1 like \"%$trimmed1%\" AND $field2 like \"%$trimmed2%\" AND $field3 like \"%$trimmed3%\" AND $field4 = \"%$trimmed4%\"
Nu heb ik al gezocht op google naar manieren om een waarde te laten zoeken die tussen bepaalde getallen ligt, maar ik weet niet echt op welke term ik juist moet zoeken en vind dus niets.
Mijn vraag aan jullie is dus hoe jullie dit zouden doen en waar de fout bij mij ligt. Indien er dingen ontbreken in mijn vraagstelling of ze niet goed is gebeurd, alvast m'n excuses, ik ben hier nieuw :p
Code (php)
1
2
2
<?php var4 = @$_GET['vierkanteq'] ; => hier krijg ik een foutmelding voor de "="
$trimmed4 = trim($var4); ?>
$trimmed4 = trim($var4); ?>
Haal daar de @ voor de $_GET weg.
Toevoeging op 17/05/2011 12:54:08:
en al die backslashes zijn niet nodig in je query...
maak van je query dit:
Code (php)
1
<?php $query="SELECT * FROM '".$table."' WHERE '".$field1."' LIKE '%".$trimmed1."%' AND '".$field2."' LIKE '%".$trimmed2."%' AND '".$field3."' like '%".$trimmed3."%' AND '".$field4."' = '%".$trimmed4."%' "; ?>
Hopelijk zal die het doen hierna
ik heb het geprobeerd, maar hij geeft nog steeds de volgende foutmelding:
Parse error: syntax error, unexpected '=' in C:\xampp\htdocs\php\search4.php on line 19
line 19 is dus:
var4 = $_GET['vierkanteq'] ;
edit: Ben heeft hetzelfde idee.
Komt dat niet gewoon door de < > en = tekens in de value?
Het zou wel kunnen dat het aan die < tekens ligt, het zijn juiste commands maar ik weet niet of ik ze zo mag gebruiken om een waarde tussen bepaalde getallen te laten liggen, vandaar mijn vraag ook of dit correct is
Vierkante meter: tussen
<input type="text" name="vierkantekleinq" />
en
<input type="text" name="vierkantegrootq" />
<br />
en mn search.php formulier naar
$var4 = @$_GET['vierkantekleinq'] ;
$trimmed4 = trim($var4);
$var5 = @$_GET['vierkantegrootq'] ;
$trimmed5 = trim($var5);
$field4="vierkante meter";
$query="SELECT * FROM $table WHERE $field1 LIKE \"%$trimmed1%\" AND $field2 LIKE \"%$trimmed2%\" AND $field3 LIKE \"%$trimmed3%\" AND $field4 BETWEEN \"%$trimmed4%\" AND \"%$trimmed5%\"
order by $field1";
en krijg nog steeds de foutmelding:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\php\search4.php on line 44
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'meter BETWEEN "%0%" AND "%20000%" order by adres' at line 1
als ik het test met 0 en 20000 (enige entry in mn db dusver is 15000 vierkante meter), maar doe het exact zoals op w3school en andere sites staat. iemand een idee wat er nog fout kan zijn?
als ik het hele deel met vierkante meter weglaat zowel uit mn html zoekform als uit mn search.php form, werkt het perfect dus die mysql_num_rows is wel juist voor zover ik weet
Dennis meijer op 17/05/2011 12:49:26:
Toevoeging op 17/05/2011 12:54:08:
en al die backslashes zijn niet nodig in je query...
en al die backslashes zijn niet nodig in je query...
En waarom extra variabelen aanmaken?
$var4 = @$_GET['vierkantekleinq'] ;
$trimmed4 = trim($var4);
kan toch ook $trimmed4= $_GET['vierkantekleinq'] ;
En haal die @ weg uit je code.
Gewijzigd op 18/05/2011 18:20:22 door Obelix Idefix
$var2 = $_GET['technischq'] ;
$var3 = $_GET['soortq'] ;
$var4 = $_GET['vierkantekleinq'] ;
$var5 = $_GET['vierkantegrootq'] ;
werkt perfect, maar bij die
$bquery="SELECT * FROM '".$table."' WHERE '".$field1."' LIKE '%".$var1."%' AND '".$field2."' LIKE '%".$var2."%' AND '".$field3."' Like '%".$var3."%' AND '".$field4."' LIKE '%".$var4."%' ";
krijg ik steeds de volgende foutmelding:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''gebouwen' WHERE 'adres' LIKE '%leman%' AND 'technisch' LIKE '%%' AND 'soort' Li' at line 1
welke fout zit er dan nog in? ik vind trouwens nergens de betekenis van dat % teken :p
Het gekke is ook dat mijn oorspronkelijke query perfect werk als ik alles op WHERE ... LIKE ... zet, maar vanaf dat ik er een WHERE ... = ... of WHERE ... BETWEEN ... AND ... van maak, ik gewoon een leeg scherm krijg als resultaat
Dus niet FROM '".$table."' WHERE maar FROM ".$table." WHERE