php zoekformulier tussenwaardes

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mats Raemen

Mats Raemen

17/05/2011 12:21:29
Quote Anchor link
Beste forumgenoten

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
 
PHP hulp

PHP hulp

29/03/2024 01:20:49
 
Dennis meijer

dennis meijer

17/05/2011 12:49:26
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<?php var4 = @$_GET['vierkanteq'] ; => hier krijg ik een foutmelding voor de "="
$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)
PHP script in nieuw venster Selecteer het PHP script
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
 
Mats Raemen

Mats Raemen

17/05/2011 13:28:14
Quote Anchor link
hey dennis,
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'] ;
 
Ben Elsinga

Ben Elsinga

17/05/2011 13:39:55
Quote Anchor link
Wellicht helpt dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$var4
= $_GET['vierkanteq'];
//in plaats van
var4 = $_GET['vierkanteq'];
?>
 
Obelix Idefix

Obelix Idefix

17/05/2011 13:43:10
Quote Anchor link
Moet het geen $var4 zijn?

edit: Ben heeft hetzelfde idee.
 
- SanThe -

- SanThe -

17/05/2011 15:00:53
Quote Anchor link
Komt dat niet gewoon door de < > en = tekens in de value?
 
Mats Raemen

Mats Raemen

17/05/2011 15:08:38
Quote Anchor link
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
 
Mats Raemen

Mats Raemen

18/05/2011 18:15:26
Quote Anchor link
Ik heb mn zoekformulier veranderd naar
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
 
Obelix Idefix

Obelix Idefix

18/05/2011 18:19:10
Quote Anchor link
Dennis zei het ook al: waarom al die backslashes in je query?
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 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
 
Mats Raemen

Mats Raemen

19/05/2011 13:14:37
Quote Anchor link
$var1 = $_GET['adresq'] ;

$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
 
- SanThe -

- SanThe -

19/05/2011 13:16:54
Quote Anchor link
Om een veldnaam of kolomnaam horen nooit quotes.
Dus niet FROM '".$table."' WHERE maar FROM ".$table." WHERE
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.