<?php
if(isset($_POST['submit_form'])){
$pokaz_form = 0;
$blad=false;
if(isset($_POST['wyszukaj']))
{
$wh = array();
if ($_POST['wyszukaj'] == 'tytul'){
$wh[] = "`tytul` LIKE '%$_POST[znajdz]%' ";
}
if ($_POST['wyszukaj'] == 'tresc'){
$wh[] = "`tresc` LIKE '%$_POST[znajdz]%' ";
}
if ($_POST['wyszukaj'] == 'autor'){
$wh[] = "`autor` LIKE '%$_POST[znajdz]%' ";
}
if (!empty($wh)){
$where = implode(' and ', $wh);
echo $where;
echo '<br />';
print_r($wh);
echo '<br />';
}
else{
$where = '';
}
}
else{
echo 'Zaznasz jedna z poanych kategorii!';
$pokaz_form = 1;
$blad=true;
}
///////////
if($blad != true){
$sql = "SELECT * FROM `artykuly` WHERE ".$where;
echo $sql;
mysql_query($sql) or die('<br /><br />ZAPYTANIE: '.$sql.polskie_znaki('BŁĄD: '.mysql_error()));
$wynik = mysql_query($sql);
$num_results = mysql_num_rows($wynik);
echo "<h4>Wyniki wyszukiwania:</h4>";
echo("<h2>Ilość znalezionych produktow: ".$num_results. "</h2><br/>");
for ($i=0; $i<$num_results; $i++) {
$row = mysql_fetch_array($wynik);
echo($i+1);
echo polskie_znaki($row['tytul']);
echo '<br /> ';
echo polskie_znaki($row['tresc']);
echo '<br /> ';
echo polskie_znaki($row['autor']);
echo '<br/> ';
echo '<hr>';
}
$pokaz_form = 0;
}
}
else{
$_POST['wyszukaj'] = '';
$pokaz_form = 1;
}
if($pokaz_form != 0){
?>
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
<input name="wyszukaj" type="radio" value="tytul" /> W tytule<br />
<input name="wyszukaj" type="radio" value="tresc" /> W treść<br />
<input name="wyszukaj" type="radio" value="autor" /> w/g autora<br />
Wpisz wyszukiwany związek: <input type="text" name="znajdz" />
<input type="submit" name="submit_form" value="szukaj!" />
</form>
<?php
}
else{
return null;
}
?>
Jest To wyszukiwarka która wyszukuje treści zawartych w artykułach.. no i teraz opis napotkanego problemu.:
załóżmy ze wyszukujemy treści newsa. Przykładowa treść:
"Korey lubi sobie pić browarka w weekend.. bla bla bla"
Normalnie jak wpiszę w pole name="znajdz" tekst "korey lubi so" lub "pić browar".
PHP zwróci mi pozytywny wynik i wyświetli artykuł który zawiera taki tekst.
Lecz gdy wpiszę w pole name="znajdz" korey browar lubi PHP zwróci 0 wyników.
Po wyświetlałem sobie poprzez ECHO co zawiera zmienna $wh[] i $where.
$where oddaje mi np: `tresc` LIKE '%korey browar lubi%' <-< ten wiersz zwraca 0 w zapytaniu.
teraz chciałbym zrobić tak by $where zwróciło mi coś takiego:
<?php
tresc` LIKE '%korey%' and tresc` LIKE '%browar%' and tresc` LIKE '%lubi%'
// gdzie $_POST zawierałby korey browar lubi.
?>
Kombinowałem to przerobić używając innych funkcji (tj. str_replace();, explode()

PS: cos się zj-e-b-o z opcją CODE. gdy umieściłem w niej drugi kod to wyświetlało mi ten pierwszy. ;/