Ik ben bezig om een zoekscript in een website te zetten, maar hoe kan je een minimum aantal karakters toewijzen? Dus niet dat als je op enter drukt, je alles uit de database kunt halen. Dat is bij mij nu namelijk wel het geval. Op internet kan ik er echter weinig over vinden.

Ook zie je wel eens op sites dat je twee karakters minimaal moet invullen, echter als je dan als zoekopdracht %% invult, je alsnog alles kan zien.

Het huidige script wat ik gebruik is het volgende:
http://www.plaatscode.be/38120/
if(strlen(POST) <= 2) { echo"2 karakters"; exit; }
Wel trim eroverheen halen natuurlijk...

Tikkes een % is ook een character, dus 2 keer een % returned bij strlen ook een true.

Misschien dat mysql_real_escape_string helpt, of anders % ook vervangen door zijn html entitie??
if(strlen(str_replace('%','',$zoekterm)) <= 2)
{
echo 'Zoektem tekort' ;
}
else
{
echo $zoekterm ;
}

Zo kun je controleren of je term alleen uit %% bestaat en als dat niet zo is kun je ze wel gewoon als wildcard gebruiken
@ Jacco:

Waar moet ik dat plaatsen dan?

Niet hier neem ik aan, dat werkt niet ($zoekterm veranderd in rowres):

<?
if(($rowres)<=0) {
print '<P><B>Uw zoekactie heeft geen resultaten opgeleverd.</B></P>
<P>Ga terug en probeer het opnieuw met een minder nauwkeurige zoekterm.</P>';
}else{
if(($rowres)<=2) {
print 'Gevonden bedrijf:<BR /><BR />';
}else{
print 'Gevonden bedrijven:<BR /><BR />';
}
while($obj = mysql_fetch_object($result)) {
?>
Kan iemand hier nog even naar kijken voor me?
@Roy

Waar gebruik je nou strlen? Het ging er toch om of de opgegeven zoekterm lang genoeg was?

Dat zal het opgegeven trefwoord moeten zijn? Dan krijg je dus iets als:

<?php
if(!strlen(str_replace('%','',$_POST['trefwoord']) >= 2){
// zonder de %% is het zoekwoord te kort
}
?>

Dit werkt nu inderdaad Robert. Sorry :)

Maar als ik nu als zoekterm 1 letter doe bijvoorbeeld, dat kan wel. Ik wil echter dat hij minimaal 2 karakters moet zoeken.

EDIT:

<?
if(!strlen(str_replace('%','',$_POST['trefwoord'])) <= 2)
{
echo 'Uw zoekactie bevat te weinig karakters. Dit moeten er minimaal twee zijn.';
}

while($obj = mysql_fetch_object($result)) {

echo 'Hier het reultaat';

}
echo '<br><a href="javascript:history.go(-1);">Klik hier voor een nieuwe zoekopdracht</a>';

}else{
?>

Dit stukje script heb ik even gepost. Het even zeker met mijn if/else opbouw te maken? Als ik nu namelijk ga zoeken op bijv Jansen.. dan zie ik de resultaten met daarboven alsnog de zin: "Uw zoekactie bevat te weinig karakters. Dit moeten er minimaal twee zijn.". Komt dit door:

<?
while($obj = mysql_fetch_object($result)) {
?>

??
dan moet je Javascript gebruiken!

Chilion
<?PHP

if(!strlen(str_replace('%','',$_POST['trefwoord'])) <= 2)
{
echo 'Uw zoekactie bevat te weinig karakters. Dit moeten er minimaal twee zijn.';
}
Else
{

while($obj = mysql_fetch_object($result)) {

echo 'Hier het reultaat';

}
echo '<br><a href="javascript:history.go(-1);">Klik hier voor een nieuwe zoekopdracht</a>';

}
?>

ofwel zet je daar die ELSE (zoals ik doe) ofwel doe je exit; onder je echo.
Parse error: syntax error, unexpected T_ELSE in zoek.inc.php on line 98

Die melding kreeg ik. Regel 98 is:

<?
}
echo '<br><a href="javascript:history.go(-1);">Klik hier voor een nieuwe zoekopdracht</a>';

}
else {

?>

else { is de 98ste regel. Heb daaronder een { bij gezet, dan zie ik het formulier wel.. maar dan krijg ik bij iedere zoekopdracht de melding van een te kort trefwoord.

Reageren