v2.5.2
Giriş yap

PHP Sınırsız Kategori Fonksiyon

jct
3,334 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();
ergince
1762 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)
	
	}

}