v2.5.2
Giriş yap

PHP Sınırsız Kategori Fonksiyon

jct
3,331 defa görüntülendi

PHP Sınırsız Kategori için 2 adet fonksiyonum var;

Birinci fonksiyon kategorileri hiyerarşik alt alta sıralıyor ve sorunsuz çalışıyor.

function KATEGORI_LISTELE_GENEL($Kategori_ID = 0){

		GLOBAL $PDO_Connect;

		$PDO_Query = $PDO_Connect -> prepare("SELECT * FROM kategoriler WHERE Kategori_Ebeveyn = ?");
		$PDO_Query -> execute([$Kategori_ID]);
		$PDO_Query = $PDO_Query -> fetchAll(PDO::FETCH_OBJ);

		foreach($PDO_Query as $PDO_Data){
			echo $PDO_Data -> Kategori_ID." ";
			echo $PDO_Data -> Kategori_Ad." ";
			echo $PDO_Data -> Kategori_Ebeveyn."<br />";
			KATEGORI_LISTELE_GENEL($PDO_Data -> Kategori_ID);
		}
	
	}
	
	KATEGORI_LISTELE_GENEL();

ikinci fonksiyon herhangi bir kategoriyi hiyararşik sıralıyor ve sorunsuz çalışıyor

$Kategori_Dizi = array();
	
function KATEGORI_LISTELE_SIRALI($Kategori_ID){

	GLOBAL $PDO_Connect, $Kategori_Dizi;

	$PDO_Query = $PDO_Connect -> prepare("SELECT * FROM kategoriler WHERE Kategori_ID = ?");
	$PDO_Query -> execute([$Kategori_ID]);
	$PDO_Query = $PDO_Query -> fetch(PDO::FETCH_OBJ);

	$Kategori_Dizi[] = $PDO_Query -> Kategori_Ad;

	if($PDO_Query -> Kategori_Ebeveyn > 0){
		KATEGORI_LISTELE_SIRALI($PDO_Query -> Kategori_Ebeveyn);
	}

	return $Kategori_Dizi;

}

    print_r(KATEGORI_LISTELE_SIRALI(2))

Şimdi sorunun olduğu kısım ilk fonskiyon içinde ikinci fonksiyonu kullanınca saçmalıyor. Sanki diziyi temizlemiyorda sürekli üzerine ekliyor gibi duruyor.

function KATEGORI_LISTELE_GENEL($Kategori_ID = 0){

		GLOBAL $PDO_Connect;

		$PDO_Query = $PDO_Connect -> prepare("SELECT * FROM kategoriler WHERE Kategori_Ebeveyn = ?");
		$PDO_Query -> execute([$Kategori_ID]);
		$PDO_Query = $PDO_Query -> fetchAll(PDO::FETCH_OBJ);

		foreach($PDO_Query as $PDO_Data){
			echo $PDO_Data -> Kategori_ID." ";
			print_r(KATEGORI_LISTELE_SIRALI($PDO_Data -> Kategori_ID))." ";
			echo $PDO_Data -> Kategori_Ebeveyn."<br />";
			KATEGORI_LISTELE_GENEL($PDO_Data -> Kategori_ID);
		}
	
	}
	
	KATEGORI_LISTELE_GENEL();
Cevap yaz
Cevaplar (6)
pcmemo
1658 gün önce

@ekimnet eline sağlık. Detaya girmeden makalene bir göz gezdirdim. Böyle bir yapıya ihtiyacım var uygulamaya çalışacağım, fakat birde dropdown menüde listeleme olsa fena olmazdı.

ekimnet
1658 gün önce

belki işinize yarar şurada anlatmıştım https://www.ekimnet.com/php-ile-sinirsiz-kategori-nasil-yapilir

phpprogramming
1757 gün önce

asd

phpprogramming
1757 gün önce

php

ergince
1759 gün önce

bu site tuha kafasına göre yazılanları şekillendiriyor kodları okuyup anlarsın umarım :)

ergince
1759 gün önce

3 fonskyion yazmalısın

iç içe kullanmalısın

sorgu vs yazan yere kendi PDO sorgularını yaz;

function kat1($katAdi,$KatID){

    ///$sorgu = "where  KatID='$KatID' vs...";
    
    foreach($PDO_Query as $PDO_Data){
        
        $yeniKat = $katAdi."/".$PDO_Query -> Kategori_Ad;
        
        echo $yeniKat."<br>";
         
         kat2($yeniKat,$PDO_Query->katID)
	
	}
    
    

}

function kat2($katAdi,$KatID){

    ///$sorgu = "where  KatID='$KatID' vs...";
    
    foreach($PDO_Query as $PDO_Data){
        
        $yeniKat = $katAdi."/".$PDO_Query -> Kategori_Ad;
        
        echo $yeniKat."<br>";
         kat1($yeniKat,$PDO_Query->katID)
	
	}
    
    

}

function kat(){

  ///$sorgu = "where  KatID='0' vs...";
  
  foreach($PDO_Query as $PDO_Data){
    
        echo $katAdi."<br>";
         kat1($katAdi,$PDO_Query->katID)
	
	}

}