Php Sorgu Hk.

Aşağıda da paylaşmış olduğum gibi tablolarım mevcut dizi_turu tablosundaki dizi_turu_id sütunu dizi tablosunda id eşleştirmek istiyorum. Bunu 
inner joinle yapacaktım fakat dizi_turu_id de ki "1,2,3" şeklinde ve bunu yapamadım. Aşağıda paylaşacağım bir örnekte ise yaptığım zaman sadece "1,2,3" sıralamasından
sadece "1," çekebildim. Sizden rica bu konu hakkında yardımcı olmanız örneklere baktım ama bir türlü çözemedim.

Dizi_Türü Tablosu 
+----+------------+
| id | dizi_turu  |
+----+------------+
|  1 | Aile		  |
|  3 | Aksiyon    |
|  4 | Bilim      |
|  5 | Korku      |
|  6 | Suç        |
+----+------------+


Dizi Tablosu
+----+------------+--------------+
| id |  dizi_adi  | dizi_turu_id |
+----+------------+--------------+
|  1 | Dizi1	  | 1,2          |
|  3 | Dizi2      | 3,4          |
|  4 | Dizi3      | 3,1          |
|  5 | Dizi5      | 3,5          |
|  6 | Dizi6      | 3,8          |
+----+------------+--------------+

 

$get = $_GET['id'];
$post = $db->query("SELECT * FROM dizi WHERE id=$get");
$post->execute();

foreach($post as $rows){

  $explode = explode(",",$rows["dizi_turu_id"]);

  if($have = in_array($get,$explode)){

    $NewSql = $db->prepare("SELECT * FROM dizi_turleri WHERE id LIKE ?");
    $NewSql->execute(array("%".$get."%"));
    $NewRow = $NewSql->fetch();

    echo $NewRow["dizi_turu"];
    
  }	
}

 

Aşağıdaki tablo yapısını kullanman daha mantıklı olurdu.

Türler Tablosu
+─────+──────────+
| id  | name     |
+─────+──────────+
| 1   | Aile     |
| 3   | Aksiyon  |
| 4   | Bilim    |
| 5   | Korku    |
| 6   | Suç      |
+─────+──────────+

Diziler Tablosu
+─────+───────+
| id  | name  |
+─────+───────+
| 1   | Dizi1 |
| 2   | Dizi2 |
| 3   | Dizi3 |
| 4   | Dizi4 |
| 5   | Dizi5 |
+─────+───────+

Dizi Türleri Tablosu
+─────+──────────+─────────+
| id  | dizi_id  | tur_id  |
+─────+──────────+─────────+
| 1   | 1        | 1       |
| 2   | 1        | 2       |
| 3   | 3        | 3       |
| 4   | 3        | 4       |
| 5   | 5        | 1       |
| 6   | ...      | ...     |
| 6   | .        | .       |
| 6   | .        | .       |
+─────+──────────+─────────+

Mevcut yapıyı da kullanabilirsin ama bir kaç yeri değiştirmen gerekecek. Mesela 9. satırdaki if yerine foreach kullanırsan sorun büyük ihtimal çözülecektir.

foreach ($explode as $dizi_turu) {
  ...
}
Cevap Yaz

Cevap yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git