janocan adlı üyeden alıntı: mesajı görüntüle
Teşekkür ederim, bu sorun çözüldü.

Şimdi farzediyorum ki biri bir yazarın adını yazıp arama yaptı, arama motorum sadece yazarlar arasında öyle biri varsa vermeli.

Fakat şimdi ben ne ararsam arayayım, arama motorum sitede var olan tüm verileri sıraya diziyor.
<?
if( !isset( $limit) )$limit=0;
$sorgu=mysql_query( "SELECT oykuler.id, oykuler.yayin, oykuler.yazarid, oykuler.turid, oykuler.dilid, yazarlar.ad, diller.ad, turler.ad"
. "\n FROM oykuler"
. "\n JOIN INNER yazarlar ON oykuler.yazarid = yazarlar.id"
. "\n JOIN INNER turler ON oykuler.turid = turler.id"
. "\n JOIN INNER diller ON oykuler.dilid = diller.id"
. "\n WHERE yazarlar.ad LIKE '% $ara%' OR turler.ad LIKE '% $ara%' OR diller.ad LIKE '% $ara%' AND oykuler.yayin='E' ORDER BY oykuler.id LIMIT $limit,20" , $link);
while(
$veri = mysql_fetch_array($sorgu) )
{
?>
inner join yerine left join kullanın biraz daha hızlı olucaktır.

yazarlar.ad LIKE '% $ara%' OR turler.ad LIKE '% $ara%' OR diller.ad LIKE '% $ara%' AND oykuler.yayin='E'
yazımı yanlıştır
(yazarlar.ad LIKE '% $ara%' OR turler.ad LIKE '% $ara%' OR diller.ad LIKE '% $ara%') AND (oykuler.yayin='E')

tüm verilerin listelenmemesi için php ile kontrol ederek yazar adı girilmiş ise
where (yazarlar.ad LIKE '%$ara%') AND (oykuler.yayin='E')
tüm alanlarda arama yapmayın ve OR yerine AND kullanın

kullanıcı yazar adı girdi ve hem de tür seçti ise
where (yazarlar.ad LIKE '%$ara%' AND turler.ad LIKE '%$ara%') AND (oykuler.yayin='E')
vs vs...

kolay gelsin