Okay nu doet hij (bijna) alles wat ik wil :D.
Hiermee kann ik of op keyword1 of op keyword2 zoeken.

<?php
if ((!empty ($_GET['keywords']) && xtc_not_null($_GET['keywords'])) && (!empty ($_GET['keywords2']) && xtc_not_null($_GET['keywords2']))) {
$where_str .="((pov.products_options_values_name LIKE '%".$keywords."%' AND pov.products_options_values_id = 3 )";
$where_str .="OR(pov.products_options_values_name LIKE '%".$keywords2."%' AND pov.products_options_values_id = 1 ))";

}
?>

Alleen kan ik geen resultaten verkrijgen waar alleen $keywords EN $keywords2
erin zijn.Verander ik OR in AND vind hij niets,terwijl de waarden er wel in de tabel staan.
Zo verkeerd kan ik toch niet bezig zijn,anders zou hij het met een "OR" niet goed werken.

Ik weet het nu even niet meer,ziet iemand wat ik fout doe?
Of moet ik meer aanvullende informatie plaatsen?

Zou het niet handig zijn om zelf even de waarde van $where_str te echoën?

Ik neem aan dat je er ook nog iets in de geest van "SELECT" voor hebt?
doe even code tags om je code

[. code. ] je code [. /code .]

zonder puntjes
bedankt voor de snelle reacties.Ben nu zo ver:

$where_str = " WHERE p.products_status = '1' AND (pd.language_id = '".(int) $_SESSION['languages_id']."'".$subcat_where.$fsk_lock.$manu_check.$group_check.$tax_where.$pfrom_check.$pto_check." AND (pd.products_keywords LIKE ('%".addslashes($keywords)."%') OR pd.products_description LIKE ('%".addslashes($keywords)."%') OR pd.products_short_description LIKE ('%".addslashes($keywords)."%') OR pd.products_name LIKE ('%".addslashes($keywords)."%') OR p.products_model LIKE ('%".addslashes($keywords)."%') OR (pov.products_options_values_name LIKE ('%".addslashes($keywords)."%') AND pov.language_id = '".(int) $_SESSION['languages_id']."'))) GROUP BY p.products_id ORDER BY p.products_id ";


Hij doet het, maar hiermee : ".$subcat_where.$fsk_lock.$manu_check.$group_check.$tax_where.$pfrom_check.$pto_check."
heb ik inderdaad nog problemen.
Dit is ook inderdaad het gedeelte dat ik nog niet zo goed snap.
Op bijvoorbeeld price (.$tax_where.$pfrom_check.$pto_check.) zoeken lukt nu alleen als ik ook een keyword ($keywords) heb ingegeven.
Alleen op price zoeken geeft hij alles aan.

Josh: SELECT heb ik al in een andere variabel , die ik dan met $where_str samen plak.

Klastian: Helpt mij dan jou advies?Hoe schrijf ik dit stuk dan op een goede manier met mijn voorbeeld?
Schrijf je query eens netjes uit dit is hardstikke onoverzichtelijk.
Hoe schrijf ik SQL?

SELECT
  kolomnaam
FROM
  tabelnaam
WHERE
  id = 23

Dit is leesbaar, die teringzooi van jou kan niemand wat mee. Ook jij niet, dat blijkt wel door het feit dat er mee in de knoop zit... Dat is overigens een bekend probleem van spagetti. ;)
<?php
$where_str = " WHERE p.products_status = '1'

AND (pd.language_id = '".(int) $_SESSION['languages_id']."'
".$subcat_where.$fsk_lock.$manu_check.$group_check.$tax_where.$pfrom_check.$pto_check."
AND (pd.products_keywords LIKE ('%".addslashes($keywords)."%')
OR pd.products_description LIKE ('%".addslashes($keywords)."%')
OR pd.products_short_description LIKE ('%".addslashes($keywords)."%')
OR pd.products_name LIKE ('%".addslashes($keywords)."%')
OR p.products_model LIKE ('%".addslashes($keywords)."%')
OR (pov.products_options_values_name LIKE ('%".addslashes($keywords)."%')
OR pov.products_options_values_name LIKE ('%".addslashes($keywords2)."%')
AND pov.language_id = '".(int) $_SESSION['languages_id']."')))

GROUP BY p.products_id ORDER BY p.products_id ";

?>

Okay is het zo beter?Het gaat mij alleen om het WHERE - gedeelte.
Mijn probleem is nog steeds dat hij niet ook op $keywords2 zoekt.
Vervang ik wel alle $keywords met $keywords2 dan doet het tweede invoervakje ($keywords2) het wel ( en het eerste natuurllijk niet).
Ik ben niet erg ervaren in php en mysql, maar ik zie nergens waarom
het niet zou werken!


<?php
$where_str = " WHERE p.products_status = '1'

AND (pd.language_id = '".(int) $_SESSION['languages_id']."'
".$subcat_where.$fsk_lock.$manu_check.$group_check.$tax_where.$pfrom_check.$pto_check."
AND (pd.products_keywords LIKE ('%".addslashes($keywords)."%')
OR pd.products_description LIKE ('%".addslashes($keywords)."%')
OR pd.products_short_description LIKE ('%".addslashes($keywords)."%')
OR pd.products_name LIKE ('%".addslashes($keywords)."%')
OR p.products_model LIKE ('%".addslashes($keywords)."%')
OR (pov.products_options_values_name LIKE ('%".addslashes($keywords)."%')
OR pov.products_options_values_name LIKE ('%".addslashes($keywords2)."%')
AND pov.language_id = '".(int) $_SESSION['languages_id']."')))

GROUP BY p.products_id ORDER BY p.products_id ";
?>


Dat is met codetags
<?php
AND (pd.language_id = '".(int) $_SESSION['languages_id']."'
".$subcat_where.$fsk_lock.$manu_check.$group_check.$tax_where.$pfrom_check.$pto_check."
?>

Dat kan volgens mij nooit. Hbe je het zelf gescript?? Ik neem aan van niet??
Wow! een bump :D

Nee, dat vroeg ik me ook al af :P
Nee ik heb het niet geschreven,eerst zag het er zo uit:
<?php

//where-string
$where_str = " WHERE p.products_status = '1' "." AND pd.language_id = '".(int) $_SESSION['languages_id']."'".$subcat_where.$fsk_lock.$manu_check.$group_check.$tax_where.$pfrom_check.$pto_check;

//go for keywords... this is the main search process
if (isset ($_GET['keywords']) && xtc_not_null($_GET['keywords'])) {
if (xtc_parse_search_string(stripslashes($_GET['keywords']), $search_keywords)) {
$where_str .= " AND ( ";
for ($i = 0, $n = sizeof($search_keywords); $i < $n; $i ++) {
switch ($search_keywords[$i]) {
case '(' :
case ')' :
case 'and' :
case 'or' :
$where_str .= " ".$search_keywords[$i]." ";
break;
default :
$where_str .= " ( ";
$where_str .= "pd.products_keywords LIKE ('%".addslashes($search_keywords[$i])."%') ";
if (SEARCH_IN_DESC == 'true') {
$where_str .= "OR pd.products_description LIKE ('%".addslashes($search_keywords[$i])."%') ";
$where_str .= "OR pd.products_short_description LIKE ('%".addslashes($search_keywords[$i])."%') ";
}
$where_str .= "OR pd.products_name LIKE ('%".addslashes($search_keywords[$i])."%') ";
$where_str .= "OR p.products_model LIKE ('%".addslashes($search_keywords[$i])."%') ";
if (SEARCH_IN_ATTR == 'true') {
$where_str .= "OR (pov.products_options_values_name LIKE ('%".addslashes($search_keywords[$i])."%') ";
$where_str .= "AND pov.language_id = '".(int) $_SESSION['languages_id']."')";
}
$where_str .= " ) ";
break;
}
}
$where_str .= " ) GROUP BY p.products_id ORDER BY p.products_id ";
}
}
?>

Ik heb hem ingekort om het beter te snappen, zodat ik een tweede zoekword ($keywords2) kan inbouwen.
En ja ik heb nu wel gezien dat hier een haakje te veel is, maar dat helpt nu nog niet.

<?php
AND pd.language_id = '".(int) $_SESSION['languages_id']."'
".$subcat_where.$fsk_lock.$manu_check.$group_check.$tax_where.$pfrom_check.$pto_check."
?>

Op prijs kan IK nu trouwens ook goed zoeken,dus dat zit wel goed.

Reageren