Hallo,
ik maak een script die een database doorzoekt. Ik heb nu de volgende query

<?php        
$sql = "SELECT * FROM members WHERE username LIKE '" . $opdracht . "' OR firstname LIKE '" . $opdracht . "' OR lastname LIKE '" . $opdracht . "' OR email LIKE '" . $opdracht . "' OR tennisclub LIKE '" . $opdracht . "' OR town LIKE '" . $opdracht . "'";
?>

Zoals je ziet staat er OR tussen, maar ik wil daar zoiets van EN/OF.
Want er staat nu bijvoorbeeld het volgende in de databse:
[email protected] henkie nienhuis
Maar als ik nu op henkie nienhuis zoek, dan krijg ik geen resulaten.

Hoe krijg ik dat als ik op voor en achternaam zoek, wel dat er resultaten komen?

Alvast bedankt!

Je gebruikt LIKE verkeerd.
Zet er % omheen.
LIKE '%" . $opdracht . "%' OR .....
Die is al weer redelijk oud.

Zet dit bovenin je script.
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);

// rest
?>
Een OR is en/of.

OR (zonder AND's) betekent: zolang er 1 voorwaarde voldoet geeft het true weer.
geeft: Notice: Undefined index: start in /home/bartje/public_html/search.php on line 107 weer....
lijn 107 is:
if(!is_numeric($_GET['start']) || !isset($_GET['result'])){
$_GET['start'] = '0
Je bent niet echt gul met je informatie.
Dus ik kan ook geen uitgebreid antwoord geven.
Je hebt ergens een array() waar geen 'start' in voorkomt.
Maar heeft dit te maken met het zoeken?.....
<?php
// KIJKEN OF ER WAARDEN ZIJN
if(!empty($_REQUEST['zoek']) && isset($_GET['position'])){

// CONTROLE VAN DE 'GET' WAARDEN
$_REQUEST['zoek']= htmlspecialchars($_REQUEST['zoek']);

if(!is_numeric($_GET['result']) || !isset($_GET['result'])){
$_GET['result'] = '10';
}
if(!is_numeric($_GET['start']) || !isset($_GET['result'])){
Lijn 107 $_GET['start'] = '0';
}

// ZOEK-BEREDENERING
switch($_GET['position']){
case 'start':
$opdracht = $_REQUEST['zoek']. '%';
$text='beginnen met de woorden <B>' . $_REQUEST['zoek']. '</B>';
break;
case 'end':
$opdracht = '%' . $_REQUEST['zoek'];
$text='eindigen op de woorden <B>' . $_REQUEST['zoek']. '</B>';
break;
case 'middle':
$opdracht = '%' . $_REQUEST['zoek']. '%';
$text='de woorden <B>' . $_REQUEST['zoek']. '</B> bevatten';
break;
default:
$opdracht = '%' . $_REQUEST['zoek']. '%';
$text='de woorden <B>' . $_REQUEST['zoek']. '</B> bevatten';
break;
}
?>
if(!is_numeric($_GET['start']) || !isset($_GET['result'])){

wordt dus
if(!isset($_GET['start']) || !is_numeric($_GET['start']) || !isset($_GET['result'])){

En waarom een getal tussen quotes?
$_GET['start'] = '0';

moet zijn
$_GET['start'] = 0;

Reageren