v2.5.2
Giriş yap

Farklı tablolarda arama hatası

mastermst
610 defa görüntülendi ve 1 kişi tarafından değerlendirildi

Aşağıdaki kodu kullanarak iki ayrı tabloda arama yapmaya çalışıyorum tabloların sutunları tamamen aynı ancak

https://i.hizliresim.com/CAAN6B.png

linkteki hatayı veriyor. Doğrusu nedir nerede hata yapmışım? Yardım edenlere çok teşekkürler.

<?php
    
$sql = $connect->query("SELECT *  FROM oyunlar INNER JOIN programlar ON oyunlar.id = programlar.id WHERE baslik and aciklama and etiket LIKE '%".$word."%' LIMIT 7");

if ($sql->num_rows) {
    echo '<br>';
    echo '<a id="sn">Şuan da "'.$word.'" ile ilgili sitemizdeki bütün arama sonuçlarını görüyorsunuz.</a>';
    while ($row = $sql->fetch_assoc())
?>
aydinkeskin
1425 gün önce

yazdıklarıma sadece kendini vermeni öneririm kardeşim

aradıklarında bundan pek farklı olmayacak.

3 4 tane tabloyu birbine bağlicaksan inner join kullanıp ve tablolarındaki sütünlar aynı isimlere sahiple
sql sorgusunda bunaların adlarını değiştirip sorun çıkmamasını sağlayabailirsin

ben yine sana yazim bir örnek inner join ile


$veri = $db->prepare("
        SELECT 
            yazar.id as YazarID,
            yazar.adi as YazarAdi,
            konu.id as KonuID,
            konu.adi as KonuAdi
        FROM
            yazar
        INNER JOIN 
            konu
        ON 
            yazar.id = konu.id 
        WHERE 
            yazar.adi LIKE (:yazaradi) OR 
            konu.adi LIKE (:konuadi)
        ORDER BY yazar.id DESC LIMIT 5");
$veri->execute([
    ":yazaradi" => "%".$word."%",
    ":konuadi" => "%".$word."%"
]);
 
ne yaptık yazar ve konu tablolarını bir tabloymuş gibi sıraladık
ve aradığın kelime " ahmet " ise yazar tablosundaki adi sütünan bakar bulamaz ise konu tablosundaki adi sutununa bakar
bulursa yazdırırkenden

foreach($veri as $row){
    if($row["YazarAdi"] == ""){ // yazar adı boş ise konuadini verir
        echo $row["KonuAdi"]
    }else{
        echo $row["YazarAdi"] // yazadı adı boş değilse yazar adını verir
    }
}
//bide seninkinden yola çıkalım


$sql = $connect->query("
SELECT *  FROM 
    oyunlar 
INNER JOIN 
    programlar 
ON
    oyunlar.id = programlar.id
WHERE 
    programlar.baslik  LIKE '%".$word."%' or 
    programlar.aciklama  LIKE '%".$word."%' or 
    programlar.etiket LIKE '%".$word."%' LIMIT 7");
 
 //sanırım böyle yapsan olur alel acele bu kadar :)

bundan sonrasınıda kendine göre uyarlarsın artık herhalde :)
başkalarının yaptıklarını oku tabiki ama her zaman kendin tekrar ve tekrar yaz
yoksa sadece copy paste yaparsın ve hiç bir şey öğrenemezsin
kendi yazarak yaparsan keyif alarak yaparsın öğrendikçede hevesin artar.